红外遥控器解码软件设计及应用
2011-08-20刘万斌
刘万斌,于 群
(山东科技大学 信息与电气工程学院,山东 青岛 266510)
红外遥控器是一种无线的、非接触控制装置,具有抗干扰能力强、信息传输可靠、功耗低、成本低的特点,广泛应用于日常生活和工业中[1]。由于不同公司生产的遥控器编码码制往往不同,通常不可移植。考虑到C语言与汇编语言相比具有书写方便易于开发等特点,本文设计了一种简单的红外线接收电路,通过C语言软件设计,实现对万用遥控器的解码,可以方便地应用于其他红外遥控设备。
1 系统的实现
1.1 红外信号的构成
红外通信主要由发射和接收两部分组成。发射端将待发送的二进制信号编码成一系列脉冲串信号,通过红外发射管发送。接收端接收信号的同时,对红外信号进行放大、检波、整形后得到TTL电平编码,送入单片机处理[2]。红外发射二极管发送的信号是频率为38 kHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38 kHz的脉冲信号得到的间断脉冲串。如图1所示,A是二进制信号的编码波形,B是频率为38 kHz周期为26 μs的连续脉冲串,C是经调制后的间断脉冲串(相当于C=A×B),用于红外发射二极管发送的波形。图1中,待发送的二进制数据为101。
图1 红外信号产生原理
1.2 红外发射接收部分设计
本文采用的红外遥控器共6个键,分别是开关、震动、气泡、定时、加温、减温。接收的部分选用HS0038红外接收探头,接收频率为38 kHz、周期为26 μs的红外信号。HS0038是黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。在用小功率发射管发射信号的情况下,其接收距离可达35 m;它能与TTL、CMOS电路兼容;HS0038为直立侧面收光型,同时能对信号进行放大、检波、整形得到TTL电平的编码信号。3个管脚分别是地、+5 V电源、解调信号输出端。
红外解码电路如图2所示,当HS0038接收到红外信号时,输出端输出脉冲,触发三极管导通,发光二极管通电发光[3],这样可以直观地看到发射、接收部分是否正常工作。输出端接AT87C52单片机的T0口,下降沿触发T0计数器计数[4]。
图2 红外解码电路图
2 解码方案
单片机T0口接收到脉冲下降沿后,T0计数器计数,下一次下降沿触发计数器停止,并把结果存在预先设置好的数组中。数组里面的数字代表一个信号的长短。虽然不同厂商的红外遥控器编码形制不同,但在所有的编码中,0、1信号只有长度的区别。根据这个原理,对采集到的信号组进行分析,定义长的信号为1,短的信号为0。反复实验就得到各个按键的编码,破解后的遥控器可以用作单片机的扩展键盘。图3为解码程序主流程图。
主要程序清单如下:
数据分析:以开关键为例,采到的数据如表1所示。
表1 开关键测试数据
由表1可以看出,开头与结尾的3个信号时间比较长,其余的信号可分为两种(大约是 1 100和 2 200)。开头的13 521是引导码,结尾的40 498和11 235是终止码。把2 200定义为逻辑1,1 100定义为逻辑0,得到第一个键码制为00FF30CF。用同样的方法得到其他键的码 值 分 别 为 00FF10EF、00FF20DF、00FF00FF、00FF807F、00FFA05F。前16位相同,是客户代码。
3 应用
遥控器解码之后,可以通过单片机将其用于其他装置(此系统已成功应用于本实验室的微机继电保护系统中)。由于计数器低8位的数值对整体影响不大,本文根据高8位的数值判断收到的信号为0或1,根据之前测得脉冲范围,规定TH0接收的数值在0x07~0x09之间,键位码为1;数值在0x02~0x05之间,键位码为 0。如此循环即可得到一个完整的码值。然后进入功能实现区,用户可以根据自己的需要,定义键位功能,具有很高的灵活性。
应用部分软件设计:
(1)读键位循环的代码如下:
基于AT87C52单片机的万能遥控器解码及其应用,提出了一种简易的红外遥控器解码方法,此法可以在完全不知遥控引导码和结束码使用的编码规则的情况下,直接解码,自主定义1和0。具有操作简便,可移植性强的特点。
[1]戴培山,冯承德,刘栋.基于 keilC51的红外解码设计[J].自动化仪器与仪表,2003(6):11-23.
[2]卢灵,刘远峰.红外通信技术在温湿度变送器上的应用[J].微 计 算 机 信 息 ,2010(9-2):158-160.
[3]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:高等教育出版社,1980.
[4]魏立峰,王宝兴.单片机原理与应用技术[M].北京:北京大学出版社,2006.
[5]马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计(第四版)[M].北京:北京航空航天大学出版社,2007.