电子世界2004 年12 期25 · · 单片机与可编程器件 本文介绍一种用单片机对红外遥控 器信号接收和转发的方法,设法采集遥 控器发射波形中的高低电平的宽度,通 过串口并配以相应的软件控制,学习此 代码,然后就可利用此红外遥控器作为 任意控制系统的输入设备进行二次开发, 以实现用任意红外遥控器遥控任意设备, 是一种既方便可行又经济实用的方案. 1.二进制信号编码 红外遥控有发送和接收两个组成部 分.发送端采用单片机将待发送的二进 制信号编码调制为一系列的脉冲串信号, 通过红外发射管发射红外信号.红外接 收完成对红外信号的接收、 放大、 检波、 整形, 并解调出遥控编码脉冲. 为了减少 干扰, 采用的是价格便宜、 性能可靠的一 体化红外接收头(如HS0038 , 它接收红外 信号频率为38kHz , 周期约26μs) 接收 红外信号,它同时对信号进行放大、检波、 整形, 得到TTL 电平的编码信号, 再 送给单片机, 经单片机解码并执行, 去控 制相关对象. 如图1 所示. (1)二进制信号的调制 二进制信号 的调制由单片机来完成,它把编码后的 二进制信号调制成频率为38kHz 的间断 脉冲串,相当于用二进制信号的编码乘 以频率为 38kHz 的脉冲信号得到的间断 脉冲串,即是调制后用于红外发射二极 管发送的信号, 如图2 所示. 其中, A是 二进制信号的编码波形,B 是频率为 38kHz (周期为26μs) 的连续脉冲串, C 是经调制后的间断脉冲串(相当于C = A * B), 用于红外发射二极管发送的波形. (2) 二进制信号的解调 二进制信 号的解调由一体化红外接收头HS0038 来 完成, 图3为HS0038的输入输出波形. 它 把收到的红外信号(图3 中波形D) 经内部 处理并解调复原、 输出 (波形E正好是对 图2 中波形A 的取反). HS0038 的解调 可理解为:在输入有脉冲串时, 输出端输 出低电平, 否则输出高电平. 一体化 红外接收头 HS0038 的外部结构很 简单, 其中, 1 脚(GND) 接电源地, 2 脚(Vcc) 接+ 5V , 3 脚(OUT)为 数据输出端(TTL电平, 反相输出) , 可直接与单片机相连,不需任何外 接元件,就可以把信号直接送入到 微处理器等要求 TTL 电平信号输入 的芯片中. (3) 二进制信号的解码 二进 制信号的解码由接收单片机来完成, 红外学习机的设计原理及应用 ·江苏张家港沙洲工学院 赵海兰· 摘要 : 简单介绍了红外学习系统的设计原理, 给出了红外学习系统的软硬件设计思路, 并利用红外学习机去遥控其它设备, 真正实现了学习并再利用的功能. 图1图2程序完全按照图 1 所示 TLC1543 工作时 序编写.A D _ C H A N N E L 用于存放 T L C 1 5 4 3 通道地址,A D _ L O W 和AD_HIGH 为采样数据的临时存放地址, 前一次采样的10位数据存放在R0所指向 的地址中.程序软件编写应注意TLC1543 通道地址必须为写入字节的高 四位,而单片机读入的数据是芯片上次 A / D 转换完成的数据.附表给出了 TLC1543 地址选择对应表,在本刊的网 站上给出了源程序,供读者参考. (2 )数据处理子程序(见本刊网 站) 为防止干扰, 采用类似于中值滤波 的数据处理方法. 在数据采集的过程中, 对每一路通道数据的采集以 3 个连续的 采样数据为一个小组, 连续采集10组后, 将每一组的中值取出求其平均值,将该 址, DIVISOR2 存放待检测参数的A/D结 果存储单元的低位地址.CLEARN_SUB 为单片机RAM段清零子程序,AXMIN_SUB 为最大最小值比较子程序, MULADD_SUB 为16bit相加子程序, MULSUB_SUB 为16bit相减子程序, DIVI41_SUB为32bit除以8bit子程序. 该数据处理方法在实际的数据采集 系统中工作得很好.针对不同的应用场 合,仅仅需要对数据处理方法做一些改 动即可. 4.小结 实践证明,按照上述方案设计的数 据采集系统,完全达到了该电源系统对 数据采集的需要,并且在实际应用中具 有占用资源少、 可靠性高、 采样精度高、 容易扩展、性价比高等优点. 平均值作为一次采样检测的结果.FILTER_SUB 为数据处理子程序,其中 DIVISOR1 存放待检测参数的 A/D通道地 电子世界 2004 年12 期26 · · 单片机与可编程器件 我们采用的 CPU 是W78E516,它把红外 接收头送来的二进制编码波形通过相应 的软硬件解码,还原出发送端发送的数 据.而直接利用波形的长短来判断是否 相同,可用定时/ 记数器 "0"和"1" 记 下接收到波形的长短,再与 38kHz 的波 形相 "与" (可由定时器实现) , 上述接收 到的波形码经 38kHz 的载频进行调制, 提高发射效率,达到降低电源功耗的目 的. 然后, 再通过红外发射二极管进行二 次调制, 产生红外线向空间发射, 这样就 可以复原出任意红外遥控发射的波形. 2.红外学习机的软硬件设计 如何用 CPU来控制学习这些码是关 键, 基于以上原理, 利用两个外部中断来 学习红外遥控的波形宽度,利用一个与 门实现红外遥控波形的复原.红外学习 的原理图见图4. (1) 红外学习软件设计 要了解一 个未知的遥控器,首先要学习它发出的 红外脉冲波形,从而了解其脉冲波形特 征 (以何种方式携带 "0" 、 "1" 信息) , 进 而了解其编码规律.脉冲波形的分析可 以从分析脉冲的高、 低电平宽度入手. 以图4所示的接口为 例, 接收器HS0038的 输出端口与 INT0 连接, 只要HS0038一接 收到脉冲下降沿, 进 入中断处理部分, 用 定时计数器来记数, 记下低电平的宽度. 同样方法接收器HS0038的输出端口再利 用一个非门与INT1连接记下高电平的宽 度.具体子程序如下: int0() interrupt 0 { c[i]=TH0; TH0=0;TL0=0; ++i; } 同时启动TC计时器, 测量该引脚分 别为逻辑 "0" 和逻辑 "1" 情况下的时间 值, 存储起来, 然后通过串行口把数据传 到PC机上, 通过测试软件把检测到的数 据记录、 分析. 下面是用C51语言给出对 接收的脉冲波形通过定时中断复原,通过P1.2输出的程序. time0() interrupt1 {p12=~p12; TH0=255-c[i];TL0=256-c[++i]; ++i;} (2) 红外代码的取出 按一下红外遥 控器,把发射的代码通过上面的方法接 收到 CPU,再通过串行通信在 VB 通信测 试软件上显示出这些代码,对同一个键 连续检测多次,从中找出该键对应代码 的规律,可以发现每个键都可以找到相 同的规律, 找出相同的代码, 通过程序把 这串代码存放在单片机的 RAM 里面,当 红外接收头接收到按键的代码以后来判 断是不是这个预先的代码.如果跟预先 存储的相同, 就执行预先设定的功能, 从 而实现红外学习.这样就可以用自制的 红外学习机去学习任意家用遥控器,从 而用红外学习机去代替家用遥控器. 实践证明, 上述判断是有效可行的. 这样处理不仅使解码软件的设计简化, 而且大大提高了解码速度.使用上述判 据编写软件解码程序时,要注意脉冲波 形采样数据存储地址与脉冲的对应关系. 基于上述思路设计的软件解码系统 成功地应用于多个控制系统.下面给出 一个实例 (用红外遥控器遥控单片机实 验板, 使音乐响起来) 的程序框图 (图5) . 当按下某个遥控器的任意键时音乐 就响起来. 根据此框图不难实现把接收到的 按键代码经过处理,来响应音乐程序. 其原理是先用红外学习机学习到任意遥 控器的任意按键的代码, 然后把此代码 存储,当按下遥控器的按键时, CPU检 测到该代码和存储的代码一致, 就去执 行相应的程序, 比如音乐响起来. 用同 样的方法, 再按另一个键控制步进电机 等, 依次类推, 我们在学生实验室中实 现了用家用遥控器代替单片机实验仪上 的十六个按键. 3.结束语 对上述方案进行了实际的设计, 并取得了实验成功.整个系统外围元件 少, 干扰小, 调试方便; 软件工作量也较 小.该方法已在多个应用系统设计中成 功地实现,效果良好. 图3图5图4