- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自学习万能红外遥控模块软
自学习万能红外遥控模块软、硬件设计
红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。红外遥控是目前家用电器中用得较多的遥控方式在家用电器、室内近距离(小于10米)遥控中得到了广泛的应用。但各产生的遥控器不能相互兼容。目前市场上常见的万能遥控器只能对某几种产品进行控制,不是真正的“万能”,而且不能对新上市的产品进行控制用单片机对红外遥控器信号接收和转发的方法,由于只关心发射信号波形中的高低电平的宽度,不管其如何编码
本模块主要要实现的功能为:
管理键盘和液晶,用户进行红外遥控器的学习等操作;
学习各种红外设备的编码并记录保存下来;
将学到的红外设备的编码发射出去,实现对红外设备的遥控;
与系统主机进行通讯,执行主机发送过来的命令,实现远程控制。
一.硬件设计
1.红外信号的发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为940nm左右用遥控脉冲信号调制38kHz方波,然后将已调波放大,驱动红外发光二极管,就可以得到遥发射信号。有些遥控器的载频可能是40kHz,只须稍微加大发射功率仍然可用38kHz载频使其接收电路动作红外信号的接收和波形测量所有红外遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。如果直接对已调波进行测量,由于单片机的指令周期是微秒(μs)级,而已调波的脉宽只有20多μs,会产生很大的误差。因此先要对已调波进行解调,对解调后的波形进行测量。要了解一个未知的遥控器,首先要分析其脉冲流,从而了解其脉冲波形特征(以何种方式携带“0”、“1”信息),进而了解其编码规律。脉冲流的分析应从分析脉冲的高、低电平宽度入手。如果没有红外遥控信号到来,接收器的输出端口PO保持高电平;当接收到红外遥控信号时,接收器件信号转换成脉冲序列加到的输入引脚。用软件测试引脚的逻辑电平,同时启动TC计时器,测量该引脚分别为逻辑“0”和逻辑“1”情况下的时间值,存储起来,然后打印、分析。除引导脉冲外的脉冲是数据编码脉冲,数据“位”信息由高电平脉宽决定:窄脉宽表示“0”、宽脉宽表示“1”经过对相同按键脉冲进行多次采样发现,相同按键脉冲序列的对应位置脉宽时间值是在一个小范围内波动的(不是一个确定值),因此,对模式的识别不能采取精确比较法。对此,采取模糊的办法进行了抽象处理①引导脉冲的低电平和高电平宽度的时间值②对数据脉冲流按bit进行存储。数据脉冲流的低电平脉宽相同,高电平脉宽是判断数据流每位是“0”还是“1”的依据。实践证明,上述判据是有效可行的。这样处理不仅使解码软件的设计简单化,而且大大提高了解码的速度。
图3.8 键盘扫描流程图
B. LCD显示模块
主要是在LCD显示数字,汉字和图形的子函数。该模块对外主要提供如下功能:
void LCD_init();
功能:对LCD进行初始化,对LCD操作前需要调用此函数
参数:null
返回值:null
void LCD_set_state(bit sw);
功能:开关LCD
参数:sw-为0时关掉LCD,为1时打开
返回值:null
uchar LCD_disp_char(uchar * dataAddr,uchar fontWdth,uchar page,uchar startCol);
功能:在LCD上显示字符,包括汉字,数字,英文,图形,占用2页
参数:dataAddr-要显示的字符的地址,一般放在单片机的程序存储器里。
FontWdth-字符的宽度,一般情况下,汉字为16,数字和英文字母为8
Page-字符显示的起始页地址,0-3
StartCol-字符显示的起始列地址,0-121
返回值:null
void LCD_clear_all();
功能:清除LCD屏幕的所有字符
参数:null
返回值:null
void LCD_clear_char8(uchar page,uchar startCol);
功能:只清除LCD屏幕上一个8宽度的字符,用于不需要清除整个屏幕时,比如只清除屏幕上的一个数字
参数:page-要清除字符的起始页地址,0-3
startCol-要清除字符的起始列地址,0-121
返回值:null
C. 红外发射和接收模块
void IR_init(uchar * IR_buf)
功能:红外模块进行初始化
参数:IR_buf-红外编
返回值:null
void IR_Scan_parameter(uchar * buf)
功
文档评论(0)