单片机用作通用红外遥控接收器的设计
70 2002.8
应用天地 APPLICATION NOTES
单片机用作通用红外遥控接收器的设计※
■ 清华 -华录信息技术研究所 朱纯益 路建华
摘 要
关键词
简单介绍红外遥控接收系统原理,给出用8051作遥控接收系统解码器的一种巧妙实现方法,
以及完整的 51 汇编程序代码。包括解码系统配置及接口、软件设计要点及中断服务程序。
8051 红外遥控 遥控码
红外线遥控是目前使用最广泛的一种通信和遥
控手段。由于红外线遥控装置具有体积小、功耗
低、功能强、成本低等特点,因而,继彩电、录像
机之后,在录音机、音响设备、空调机以及玩具等
其它小型电器装置上也纷纷采用红外线遥控。工业
设备中,在高压、辐射、有毒气体、粉尘等环境下,
采用红外线遥控不仅安全可靠而且能有效地隔离电
气干扰。
1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组
成,应用编 / 解码专用集成电路芯片来进行控制操
作,如图 1 所示。发射部分包括键盘矩阵、编码调
制、LED 红外发送器;接收部分包括光、电转换放
大器、解调、解码电路。
2 遥控发射器及其编码
遥控发射器专用芯片很多,现以日本 NEC 的
uPD6121G组成发射电路为例说明编码原理。当发
射器按键按下后,即有遥控码发出,所按的键不同
遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565 ms、间
隔 0.56 ms 、 周期为 1.125 ms 的组合表示二进制的
“0”; 以脉宽为 0.565 ms、 间隔 1.685 ms 、 周期为
2.25 ms 的组合表示二进制的“1”, 其波形如图 2 所
示。
上述“ 0”和“1”组成的 32位二进制码经38 kHz
的载频进行调制,提高发射效率,达到降低电源功
耗的目的。然后,再通过红外发射二极管进行二次
调制,产生红外线向空间发射,如图 3 所示。
uPD6121G产生的遥控编码是连续的 32 位二进制码
组,其中前16 位为 8位用户识别码及其反码,能区
别不同的电器设备,防止不同机种遥控码互相干
扰。该芯片的用户识别码固定为十六进制 01H;后
16 位为 8 位操作码(功能码)及其反码。uPD6121G
最多有 128 种不同组合的编码。
遥控器在按键按下后,周期性地发出同一种32
位二进制码,周期约为 108 ms。一组码本身的持续
时间随它所包含的二进制“0”和“1”的个数不同
键盘 编码调制 LED
光/电放大
遥控发射器
解调 解码
遥控接收器
图1 红外遥控系统框图
0.56ms
1.125ms
bit“0” bit“1”
0.56ms
2.25ms
图2 遥控码的“0 ”和“1 ”
C0 C1 C2 C3 C4 C5 C6 C7 C0 C1 C2 C3 C4 C5 C6 C7 D0D1D2D3D4D5D6 D7D0D1D2D3D4D5D6D74.5ms9ms
引导码 用户识别码 用户识别码(反码) 操作码 操作码(反码)
图3 遥控信号编码波形图
tf =108mstf =108ms
图4 遥控信号的周期性波形
71Microcontrollers & Embedded Systems2002.8
应用天地 APPLICATION NOTES
而不同,大约在45~63 ms 之间,图 4为发射波形图。
3 接收器及解码
TSOP1738 是 VISHAY公司推出的一体化红外线
接收器,集红外线接收和放大于一体,不需要任何
外接元件,就能完成从红外线接收到输出与TTL电
平信号兼容的所有工作,而体积和普通的塑封三极
管大小一样,其功能如图 1 所示的虚线部分。它适
合于各种红外线遥控和红外线数据传输。
解码就是识别二进制码“0”和“1”以及遥控
信号起始位。由 8051单片机对脉冲间隔计数,由计
数值的大小区别脉冲间隔的时间,从而识别出二进
制码“0”、“1”和遥控信号起始位。 如前所述,红
外遥控的32位二进制串行码是脉宽调制的,脉冲宽
度固定(0.56 ms), 而脉冲的间隔不同。因此,只
要设法测出脉冲间隔时间,即可判断是二进制的
“0”还是“1”。 考虑到适当的容差,可把脉冲间隔
为0.256~0.768 ms 的判为“0”, 脉冲间隔为1.28~1.792
m s 的判为“1”。
3.1 解码系统配置及接口
解码单片机系统由 8051、TSOP1738和 74LS00等
组成,接口电路如图 5所示。TSOP1738的输出端通
过 74LS00 的两个反相电路接至解码单片机 8051 的
INT0 和 INT1,作为输入接口。 8051解码单片机通过
P0 口作为输出接口,传送解码所得的指令控制码
去控制电器设备。 8051 单片机的 TCON中有一个控
制位,该位由软件设置为“ 1”, 设置 INT0 和 INT1
为下降沿触发中断,其相应的定时 / 计数器 0 就可
以测量对应的 INT引脚上正脉冲的宽度。利用这一
特点,用定时器 T0 来测量 INT1 引脚上正脉冲的宽
度,即前后两脉冲的间隔时间,据此可判断它对应
于二进制的是“1” 还是“0”。
由图5可知,TSOP1738送往8051解码单片机INT0
和 INT1 两引脚上的波形相反,由 INT0 引脚上脉冲
的下降沿所触发的中断服务程序完成启动计数器
T0,以测量 INT1 引脚上正脉冲的宽度。由 INT1 引
脚上脉冲的下降沿所触发的中断服务程序完成关计
数器 T0, 并根据计数值来判断是对应于二进制的
“0” 还是“1”。
3.2 软件设计
解码单片机 8051的软件包括主程序、INT0中断
服务程序和 INT1 中断服务程序等3 部分。在 8051单
片机内部 RAM 区建立的工作单元和标志位:
◇ BUF0~BUF3 ——接收缓冲移位寄存单元(32
bit),每次由 INT1中断服务程序解出的存于CY的二
进制位,通过累加器连同 CY 的右移操作,传送到
BUF0~ BUF3 内。
◇ LENG——码长计数器,用于计数解出的二
进制位数。
◇ (29H).0——码间隔标志位,当收到码组间隔
时该标志被置位。
◇ (29H).1——用户识别码标志位,当收到一组
码的前 8 位为 01H 时该标志被置位。
以下是主程序的设计要点:
◇ 正确地解码必须从一组码的起始进行。为此
程序在初始化后,首先检测码间隔标志 (29H).0,如
果为 1,表明是一组码的开始,程序就将码长计数
器清零,以便从头开始计数。
◇ 为防止其它遥控码的干扰,当接收到前8位
码后,要检查它的值是否为 01H。如果是,则置位
用户码标志(29H).1。只有用户码标志为1时,收到
的后 8 位码才作为有效操作码处理。
◇ 为了得到正确的解码结果,要检查 32 位遥
控编码中用户码和操作码各自的反相一致性。正极
性的用户码留在 BUF3 中,负极性的用户码留在
BUF2 中;正极性的操作码留在 BUF1 中,负极性的
操作码留在 BUF0 中。然后比较 BUF3 和 BUF2 中的
内容,比较BUF1 和 BUF0中的内容,如果都满足反
相一致才进入下一步,否则,作无效码处理。
具体程序见本刊网站补充版。ht tp:/ /www.dpj.
com.cn
以上所述方法非常简单地实现了红外遥控信号
的接收解码,极大地节约了硬件实现的资源开销。
只要修改汇编代码的部分参数,就可以适用于多种
红外遥控器信号的接收和解码。
参考文献
1 VISHAY. Photo Modules for PCM Remote Con-
trol Systems
2 NEC. MOS Inte grated Circuit uPD6121G
3 李朝青. PC 机及单片机数据通信技术. 北
京:北京航空航天大学出版社,2000
4 李勋,刘源,李新民. 单片机实用教程. 北
京:北京航空航天大学出版社,2000
8051
INT0
INT1
TSOP1738
图5 接口电路原理图
单片机用作通用红外遥控接收器的设计.pdf