基于STM32的学习型通用红外遥控设备的设计实现(三)
CPU: STM32
调试平台: STM32F103ZET和STM32F103VBT
软件平台: Keil uVision4
电路设计: Altium Designer v6.9
http://blog.csdn.net/u013686019/article/details/19897961
二、学习型红外遥控设备的各个模块实现
2.4 红外脉宽存储及FLASH的读写
FLASH模块组织:
具体内容见《STM32中文參考手冊》小节《2.3.3 嵌入式闪存》。
信息块的启动程序代码用来存储ST自带的启动程序,用于串口下载。用户选择字节一般用来配置写保护、读保护。闪存存储器接口寄存器是整个闪存模块的控制机构,控制闪存的读写。
FLASH的最快訪问速度≤24MHz。假设CPU频率超过24MHz。必须增加等待时间。对于72MHz的主频,FLASH的等待周期必须设置为2。
2.5 中断方式实现的学习按键
学习按键的程序用外部中断的中断线2实现。
演示样例代码见附件。
2.6 红外信号的调制发送
因为学习是对红外脉冲的完整复制,故发送仅仅需把FLASH里的红外数据取出调制到载波上发送出去就可以。实现流程图例如以下图所看到的:
/**
* SendPort_Init(void) 红外发送port控制初始化
*/
void SendPort_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/** 使能PDport时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/** 使能PDport配置 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_3; //LED0-->PF6~~~PF10 port配置
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_2); // PD0~~~PD2输出高
GPIO_ResetBits(GPIOD, GPIO_Pin_3); // 注意!!!! ! !! ! !! !! } /**
* 示波器接收的键码 52: 0101 0010
* 单片机接收的键码 4A: 0100 1010
* 发送的键码 4A: 0100 1010
* 验证平台: 长虹电视机、单片机
* 验证通过: 电视机可接收
*/
u16 sendCode[200] = {0};
void IR_SendData(u32 SendAddr)
{
u8 i;
#if 0
u16 sendCode[200] = {0};
// 已通过验证
for(i=0; i<199; i++){
sendCode[i] = PulseTab[i];
}
#endif
FLASH_ReadData(SendAddr,sendCode,200); // 从对应FLASH地址取出数据
for (i=0; i<100; i++) {
if ((sendCode[2*i]!=0) && (sendCode[2*i+1]!=0)) {
IR_SEND = 0;
delay_us(sendCode[2*i]);
IR_SEND = 1;
delay_us(sendCode[2*i+1]);
}
}
// IR_SEND = 0;
/** 以下两句及其重要,否则出错!!! */
// delay_us(555);
IR_SEND = 1;
}
遥控器减号键例如以下图所看到的:
2.7
TFT显示模块
Film Transistor(薄膜场效应晶体管)的简称,这样的液晶显示器上的每一像素点都由集成在后面的薄膜场效应晶体管驱动。故而这样的显示器速度快、亮度高、对照度高,分辨率也较其它类型的液晶显示器高。
3 整个系统
整个系统完整的程序见附件(为减小文件,删除了一些编译时产生的文件,故project须要又一次编译)
系统实物图
[1] 廖义奎编著. Cortex-M3之STM32嵌入式系统设计. 北京: 中国电力出版社,2012.
[2] 张彬杰. 22个元件做出学习型遥控器[J]. 无线电, 2010(08):79-82.
[3] 意法半导体(中国)投资有限公司. STM32中文參考手冊. 2010.
基于STM32的学习型通用红外遥控设备的设计实现(三)的更多相关文章
- 基于STM32的USB枚举过程学习笔记
源:基于STM32的USB枚举过程学习笔记 基于STM32的USB枚举过程学习笔记(一) 基于STM32的USB枚举过程学习笔记(二) 基于STM32的USB枚举过程学习笔记(三) 基于STM32的U ...
- stm32定时器学习二——PWM设置
/* STM32 嵌入式学习入门(5)——PWM的实现 上一篇博文介绍了定时器和PWM的基本的原理,本篇博文从代码层面来介绍PWM的具体实现.同样,还是以博主所用的开发板——正点原子开发板STM32F ...
- stm32串口学习笔记
stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...
- 基于STM32+华为云IOT设计智能称重系统
摘要:选择部署多个重量传感器和必要的算法.通过WiFi 通信模块.GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重.地图位置等重要信息,实现对称重系统 ...
- 温湿度监测系统设计:基于 STM32 的温湿度变送器的设计与实现
前言:这个是2018年上半年完成的,这里只贴出硬件设计部分,软件设计部分可以看上位机说明书. 设计总说明 随着科学技术的不断发展,高集成度.高精度.高可靠性的一体化温湿度变送器开始 得到广泛的应用.同 ...
- 嵌入式系统及应用课程设计——基于STM32的温湿度监测系统
大三上学期期末总结,嗯,没错上学期,写在新学期开始,hhh. 上学期学了一门嵌入式系统及应用的课程,期末的课程设计题目是基于STM32的温湿度监测系统. 记得刚开始做课程设计的时候,听说先设计画出原理 ...
- Tinyhttpd for Windows(学习型的项目,才500多行代码)
前言 TinyHTTPd是一个开源的简易学习型的HTTP服务器,项目主页在:http://tinyhttpd.sourceforge.net/,源代码下载:https://sourceforge.ne ...
- 基于STM32的脉搏心率检测仪(OLED可以实时显示脉冲波形)
—设计完整,功能可全部实现,有完整报告文档说明.程序以及pcb文件— 可作为:课程设计,STM32实践学习,电子制作等 设计所实现的功能: 利用STM32的AD采集功能实时采集心率传感器信号输出引脚输 ...
- 基于SSM框架的JavaWeb通用权限管理系统
- - ->关注博主公众号[C you again],获取更多IT资源(IT技术文章,毕业设计.课程设计系统源码,经典游戏源码,HTML网页模板,PPT.简历模板,!!还可以投稿赚钱!!,点击查 ...
随机推荐
- 分享3个Putty配色方案【转】
本文转载自:https://www.coder4.com/archives/1506 分享3个Putty配色方案 4 Replies 虽然服务器都是Linux的,平时也基本用Linux,但是难免还是要 ...
- 使用fastcgi部署django应用
1.fastcgi和cgi的区别 1)CGI (Common Gateway Interface): 用来作为 Web Server 同 Python, PHP 等的通信手段.而在静态网页的时代, 只 ...
- SQL Server 2005外围应用配置器
在SQL Server Configuration Manager中,重启“SQL Server(SQL2005)”服务.
- A - Vile Grasshoppers
Problem description The weather is fine today and hence it's high time to climb the nearby pine and ...
- DDL:对表___table___的相关操作
1) 增加列 语法: alter table 表名 add 列名 类型(长度) 约束; 2) 修改现有列类型.长度和约束 语法:alter table 表名 modify 列名 类型(长度) 约束; ...
- Oracle---显式游标
一 游标的分类 在Oracle中提供了两种类型的游标:静态游标和动态游标. 1.静态游标是在编译时知道其SELECT语句的游标.静态游标又分为两种类型,即隐式游标和显式游标. 2.当用户需要为游标使 ...
- WinForm导出DataSet到Excel
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Devexpress PdfViewer预览pdf,禁止下载,打印,复制
PDFviewer控件: 参数设置: 1.屏蔽书签栏和右键菜单 2.加载文档支持路径以及流stream加载的方式 pdfViewer.MenuManager.DisposeManager(); pdf ...
- Winform开发 如何为dataGridView 添加CheckBox列,并获取选中行
//添加CheckBox列 DataGridViewCheckBoxColumn columncb = new DataGridViewCheckBoxColumn(); columncb.Heade ...
- Redhat/CentOS xfs文件系统及磁盘挂载
#!/bin/sh #DEVICE_LIST=""DEVICE_LIST="/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /d ...