关于红外遥控器的几个问题
通过分析红外遥控器各按键发出的脉冲波形,可以识别其类型,从而为软件解码提供依据。结合实例介绍了红外遥控器与单片机的硬件接口,并从原理上给出了软件解码的方法。这是一个可以直接引用的成功范例,也为各种红外遥控器在单片机控制产品中的开发应用提供了非常实用的参考。关键词:遥控软件解码在单片机控制产品的开发和应用中,为了向控制系统软件发出控制命令,键盘往往是必不可少的。传统的方法是用并行输入输出接口芯片扩展一个键盘接口,或者直接用单片机的并口扩展。在某些应用环境下,这种方法有两个缺点:①键盘与控制系统相连,不灵活,环境适应性差;②浪费单片机的端口,硬件成本高。使用红外遥控器作为控制系统的输入设备,具有成本低、灵活方便的特点。本文旨在介绍软件解码研究的一般方法和红外遥控器二次开发的应用技术。该方法已在多个应用系统设计中成功实现,效果良好。红外遥控器是一种非常容易买到且价格便宜的产品,种类很多,但都是搭配某一种电子产品(如各种电视机、vcd、空调等。),由专用CPU解码,可直接作为通用单片机控制系统。使用现成的遥控器作为控制系统的输入需要解决以下问题:如何接收红外遥控信号;如何识别红外遥控信号;解码软件的设计。其他问题都是非本质问题,比如遥控器面板上的功能键标注问题,可以自己设计重印。1红外遥控信号的接收电路可以使用集成红外接收器。接收器包括红外接收管和信号处理集成电路。接收器只有三个外部引脚:Vcc、GND和1脉冲信号输出PO。与单片机接口非常方便,如图1。①Vcc接系统电源正极(+5v);②GND接系统地线(0V);③脉冲信号输出接CPU的中断输入引脚(例如8031的13引脚INT1)。使用这种连接方法,软件解决方案可以在查询模式和中断模式下工作。2脉冲流分析要了解一个未知的遥控器,首先要分析它的脉冲流,从而了解它的脉冲波形特征(如何携带“0”和“1”信息),进而了解它的编码规律。脉冲流的分析应从分析脉冲的高低电平宽度开始。作者用软件实现了对脉冲流的分析。以图1所示的界面为例。如果没有红外遥控信号到来,接收器的输出端口PO保持高电平。当接收到红外遥控信号时,接收设备的信号被转换成脉冲序列并施加到CPU的中断输入引脚。用软件测试管脚的逻辑电平,同时启动TC定时器,分别测量管脚为逻辑“0”和逻辑“1”时的时间值,存储,然后打印分析。8051汇编语言给出了以下采集和存储脉冲流的程序段:MOV R0,#00HMOV R1,#28HMOV TMOD,#01HTK:JB P3.3,Tk;等待低级别的到来;测量低级宽度TK1:MOV TH0,#00HMOV TL0,# 00HSETB TR0TK0: JBTF0,the如果超时无效,返回JNB P3.3,TK2CLR TR0MOV A,TH0MOVX @R0,AINC R0MOV A,TL0MOVX @R0,Aincr0测高水平宽度MOV TH0,#00HMOV TL0,# 00hsetbtr0tk3: jbtf0,tke如果超时无效,则返回JB P3.3,TK3CLR TR0MOV A,TH0MOVX @R0,AINC R0MOV A,TL0MOVX @R0,Aincr0DNZ R1,tk 1;循环TKE:RET该程序首先将TC0设置为16位定时器模式,初始化ram地址指针R0和循环计数指针R1,每当引脚的逻辑电平跳变时停止计时,并将计时值保存在连续RAM中。这个程序可以连续测量40个脉冲(包括40个低电平脉冲宽度)的时间值。以TC9012芯片的遥控器为对象,采集所有按键的编程脉冲波形,对同一按键进行重复实验。限于篇幅,无法给出采样数据,仅给出脉冲流动规律(模拟器CPU晶振为6 MHz): ①导频脉冲为低电平,时间值为0937 h ~ 0957 h,高电平,时间值为084 FH ~ 086 FH②数据脉冲的低电平时间值约为0.127h ~ 0177h;③高级时间值有两种:00 bbh ~ 00 ffh(窄)和02EFH~0333H(宽)。基于对大量数据的分析,关键编码有以下规律:①除导频脉冲外的脉冲为数据编码脉冲,数据位信息由高电平脉宽决定:窄脉宽表示“0”,宽脉宽表示“1”;②每个键的脉冲流解码后,包含四个字节的信息:*所有键的前两个字节编码相同,是两个字节的“0eh”;*第三个字节是键码;*第4个字节是键码的补码。对同一关键脉冲进行多次采样后,发现同一关键脉冲序列对应位置的脉宽时间值在小范围内波动(不是某个值),不能采用精确比较法进行模式识别。在这方面,我采取模糊的方法进行抽象处理。根据上述实验规律,总结出软件解码时脉冲的分析判断依据和算法设计思路:①导频脉冲低电平和高电平宽度的判断依据是时间值的“高字节大于08H”,低字节忽略;②数据脉冲流的低电平脉冲宽度相同,忽略不计,不予判断;③高电平脉宽是判断数据流每一位是“0”还是“1”的依据。我的判断是,如果脉宽的高字节小于2,表示“0”,否则表示“1”,脉宽的低字节忽略。实践证明,上述标准是有效可行的。这种处理不仅简化了解码软件的设计,而且大大提高了解码速度。使用上述准则编写软件解码程序时,要注意脉冲流采样数据的存储地址与脉冲的对应关系。软件主要包括以下几个部分:①判断遥控信号的到达(解码前调用1独立子程序);②脉冲流的采样和存储;(3)判断引导脉冲是否有效;④解码前2个字节,判断是否为“0eh”;(5)解码第三个字节,它是有效的关键码;⑥键码的查找表映射(如果使用原键码,可以省略这一步)。3解码软件的设计基于上述思想的软件解码系统已经成功应用于许多控制系统中。下面给出一个例子的汇编语言程序(用MCS-51系列MC交通规则TC9012红外遥控器进行软件解码)。程序中使用的参数是针对单片机使用6MHz晶振的情况,使用其他频率的晶振时只需要修改脉宽准则。为了更容易理解,也为了让原理陈述尽可能的真实,程序中给出了更详细的注释翻译。详情请参考网络补充版()。虽然本文是用MCS-51系列单片机对TC9012红外遥控器软件进行解码的研究,但其方法是通用的。具体应用,可以灵活掌握。