用单片机解码红外遥控器
遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD 、空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I /O 口过多的弊病。而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。下面以TC9012 编码芯片的遥控器为例。谈谈如何用常用的51 系统单片机进行遥控的解码。
一、编码格式
1 、0 和1 的编码
遥控器发射的信号由一串O 和1 的二进制代码组成.不同的芯片对0 和1 的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。Tc9012 的O 和1 采用PWM 方法编码,即脉冲宽度调制,其O 码和1 码如图1 所示( 以遥控接收输出的波形为例) 。O 码由O.56ms 低电平和0.56ms 高电平组合而成.脉冲宽度为1.12ms .1 码由0.56ms低电平和1 .69ms 高电平组合而成.脉冲宽度为2.25ms 。在编写解码程序时.通过判断脉冲的宽度,即可得到0 或1。
2 、按键的编码
当我们按下遥控器的按键时, 遥控器将发出如图2 的一串二进制代码, 我们称它为一帧数据。根据各部分的功能。可将它们分为5 部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时.均是低位在前。高位在后。由图2 分析可以得到.引导码高电平为4.5ms ,低电平为4 .5ms 。当接收到此码时.表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8 位二进制组成,共256 种.图中地址码重发了一次。主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。不同的设备可以拥有不同的地址码.因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。图中的地址码为十六进制的0EH( 注意低位在前) 。在同一个遥控器中.所有按键发出的地址码都是相同的。数据码为8 位,可编码256 种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。在同一个遥控器上.所有按键的数据码均不相同。在图2 中,数据码为十六进制的0CH ,数据反码为十六进制的0F3H( 注意低位在前).两者之和应为0FFH 。
红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。如CXA20106 ,此种方法电路复杂,现在一般不采用。较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V 电源、地、信号输出。常用的一体化接收头的外形及引脚见图3 和图4。红外接收头的信号输出接单片机的INTO 或INTl 脚.典型电路如图5 所示.图中增加了一只PNP 型三极管对输出信号进行放大。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !