一种红外数据传送编码方法
2011-01-18吴赓
吴 赓
(福建船政交通职业学院,福州 350011)
1 引言
在单片机红外控制应用系统中, 红外遥控编码是利用38kHz载波进行脉冲幅度调制后便形成红外信号,经红外发射管发射出去,发射距离一般10m以内。利用红外接收管接收红外发射信号,并按照一定的规律将信号转换成一系列的二进制数。这些对应的二进制数可以用来传送控制信号和数据信息,以实现单片机非接触传递信号的功能,在彩电、录像机、录音机、音响设备、空调机以及玩具等其他小型电器装置上采用红外线遥控比较方便和适应。在工业设备应用中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅安全可靠而且能有效地隔离电气干扰。
红外使用方便,价格便宜,信号采集和编程灵活,功能多,目前已应用广泛。现在在市场上非常容易买到(见图1)。同时,将红外发射接收遥控装置应用在单片机控制系统中时,能将遥控器上许多的按键解码出来,用作单片机系统的输入,则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。而且通过使用红外发射接收遥控装置,操作时可实现人与设备的分离,从而更加方便灵活使用。
2 现在使用的红外遥控编码规律
实现单片机系统红外通信的关键在于红外接口电路的设计和程序的编写。现在普遍使用的编码规则是:一次按键动作的遥控编码信息包含一引导脉冲和32位串行二进制码。前16位码为用户码,不随按键的不同而变化。它是为了表示特定用户而设置的一个辨识标志,以区别不同机种和不同用户发射的遥控信号,防止误操作。后16位码随着按键的不同而改变,是按键的识别码。前8位为键码的正码,后8位为键码的反码。
红外编码是用发射不同电平的高低电压信号来表示二进制信号“0”和“1”的,对于二进制信号“0”,是一个脉冲周期为1.125ms,其中低电平占0.56ms,其余是高电平的信号;对于二进制信号“1”,一个脉冲周期为2.25ms其中低电平占0.56ms,其余是高电平的信号。“0”脉冲的占空比一般为1∶1,“1”脉冲的占空比一般为1∶3解调后的“0”和“1”波形及单片机编码如图2所示。
红外遥控器发送数据时,是将二进制数据调制成一系列的脉冲信号通过红外发射管发射出去,红外载波为频率 38kHz的方波,红外接收端在收到 38kHz的载波信号时,会输出低电平,否则输出高电平,从而可以将“时断时续”的红外光信号解调成一定周期的连续方波信号,再经过一体化红外接收头解调便可以恢复出原数据信号。
3 新的红外遥控编码设计思想
当红外发射装置发射红外线时,通过载波的方式加载发射,这样可以减小发射功率。如果没有接收到红外遥控信号,接收器的输出端口保持高电平,当接收到红外遥控信号时,接收头就接收到低电平,这时利用单片机中断的方式采集低电平的时间,存储起来,然后根据时间的不同可以定义不同的编码信号。
(1)引导脉冲是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于2300H到23FFH之间的16位2进制数,高电平的计时时间忽略。
(2)数据脉冲0是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0000H到00FFH之间的16位2进制数,高电平的计时时间忽略。
(3)数据脉冲1是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0100H到01FFH之间的16位2进制数,高电平的计时时间忽略。
(4)数据脉冲2是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0200H到02FFH之间的16位2进制数,高电平的计时时间忽略。
(5)数据脉冲3是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0300H到03FFH之间的16位2进制数,高电平的计时时间忽略。
(6)数据脉冲4是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0400H到04FFH之间的16位2进制数,高电平的计时时间忽略。
(7)数据脉冲5是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0500H到05FFH之间的16位2进制数,高电平的计时时间忽略。
(8)数据脉冲6是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0600H到06FFH之间的16位2进制数,高电平的计时时间忽略。
(9)数据脉冲7是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0700H到07FFH之间的16位2进制数,高电平的计时时间忽略。
(10)数据脉冲8是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0800H到08FFH之间的16位2进制数,高电平的计时时间忽略。
(11)数据脉冲9是通过定时器接收低电平信号,当红外发射结束而接收到高电平信号时保存记录低电平的时间,这个时间值在定时器中保存的数值介于0900H到09FFH之间的16位2进制数,高电平的计时时间忽略。
将这些脉冲组合起来形成红外发射序列,可以得到不同的数码信号,当单片机接收到这些信号时,记录时间,并进行比较,得出一系列的数字信号,这些数字信号可以代表编程者不同的控制命令,从而为单片机产生不同的执行指令服务。
一种简单的组合是一个控制命令由一个引导脉冲、一个数据脉冲构成,比如要产生命令0,必须发射两个脉冲:引导脉冲、0数据脉冲。这样我们可以得到各种命令,能够满足一般遥控需要要求。这种发射编码所需要的脉冲个数少,发射的时间周期短,产生误码的概率很小,比较适用于数据的传送。
复杂的组合可以由一个引导脉冲和多个数据脉冲构成,这样在执行多个控制命令时不会出现重码和误码的错误。这样我们可以得到各种命令,能够满足一般遥控需要要求。这种发射编码所需要的脉冲个数少,发射的时间周期短,产生误码的概率很小,比较适用于数据的传送。
4 应用设计
本文应用红外遥控发射和接收进行数据传输,进而可以数据显示和相应控制处理,同时本设计还涉及AD及LM35的温度采样,能实时显示温度,并把温度传给另一方。
5 结论
由上述可知,应用这种软件编写单片机红外发射程序简单,经过上述的应用设计检测,红外遥控信号的发射和接收没有出现传输误码,可靠、实用,在编码解码方面降低了硬件成本。单片机通过采用上述方法对遥控接收信号进行分析判断,就可将其转换成相应的二进制代码。这样就可以根据事先约定代码所代表的功能,单片机就可以去执行各种控制动作,从而达到遥控的目的。
[1]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009.
[2]薛小玲.单片机接口模块应用与开发实例详解[M].北京:北京航空航天大学出版社,2010.
[3]徐文明.嵌入式系统结构特点[J].电测与仪表,2004,41(8):36~38.
[4]聂诗良,李磊民.红外遥控信号的一种编码解码方法[J].仪表技术与传感器,2004,(8).
[5]崔如春,谭海燕.红外遥控信号的编码方法与单片机译码程序的设计[J].计算机与现代化,2000,(6).
[6]蔡明文.红外遥控编码的唯一性研究[J].兰州工业高等专科学校学报,2008,15(4).
[7]刘晓明,安敏,黄克初.软件解码实现智能仪器红外遥控[J].计算机自动测量与控制,2001,9(3).