遥控信号发射器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部CPU完成对遥控指令解码,并执行相应的遥控功能。
在红外遥控系统中,解码的核心是CPU。它接收解调出的串行二进制码,在内部根据本系统的遥控信号编码格式将串行码对应成遥控器上的按键。显然,这种在CPU内部解码出的遥控指令是不便我们利用的,而且我们也不需要获取它。我们只需利用一般红外遥控系统中的遥控发射器、遥控接收头,自行设计解码电路直接对遥控接收头解调出的遥控编码脉冲进行解码,就可以得到原始的按键信息。
TC9012形成的遥控编码脉冲对40kHz载波进行脉冲幅度调制(PAM)后便形成遥控信号,经驱动电路由红外发射管发射出去。红外遥控接收头接收到调制后的遥控信号,经前置放大、限幅放大、带通滤波、峰值检波和波形整形,从而解调出与输入遥控信号反相的遥控脉冲。
在图2中,一次按键动作的遥控编码信息为32位串行二进制码。对于二进制信号“0”,一个脉冲占1.2ms;对于二进制信号“1”,一个脉冲占2.4ms,而每一脉冲内低电平均为0.6ms。从起始标志到32位编码脉冲发完大约需80ms,此后遥控信号维持高电平。若按键未释放,则从起始标志起每隔108ms发出3个脉冲的重复标志。
在32位的编码脉冲中,前16位码不随按键的不同而变化,我们称之为用户码。它是为了表示特定用户而设置的一个辨识标志,以区别不同机种和不同用户发射的遥控信号,防止误操作。后16位码随着按键的不同而改变,我们就是要读取这16位按键编码,经解码得到按键键号,转而执行相应控制动作。
那么,不同的按键编码脉冲是怎样和遥控器上不同的按键一一对应的呢?我们借助于逻辑分析仪记录下来遥控器上每一个按键的编码脉冲序列,破译出了各按键的编码。表1是解码后得到的红外遥控器上各键的编码(前16位用户码均为0000001011111101,表1只列出后16位键码)。
由表1按键编码可看出,后16位键码的前8位与后8位互为补码,这样加大编码的冗余度是为了增强遥控系统的抗干扰能力。实际上,我们只须截取16位键码的8位(比如后8位)就可达到识别按键的目的。当然,要加强遥控系统的抗干扰能力,还需接收全16位键码甚至16位用户码加以识别。
3 红外遥控解码
红外遥控接收头解调出的编码是串行二进制码,包含着遥控器按键信息。但它还不便于CPU读取识别,因此需要先对这些串行二进制码进行解码。本文的红外遥控信号解码电路如图3所示,它主要包括遥控编码脉冲串并转换电路与PLD解码电路。
3.1 遥控编码脉冲的串并转换
红外遥控接收头解调出的遥控编码脉冲经一非门反相后引入计数器4020的复位端(RST),4020的脚10(CP)端引入1MHz计数脉冲。遥控信号(已反相)中每一正脉冲到来时其高电平对4020复位,经过0.6ms遥控信号变为低电平,4020复位结束,开始以1MHz的频率计数,直到下一个正脉冲到来时为止。二进制码“0”每一脉冲周期低电平时间为0.6ms,二进制码“1”每一脉冲周期低电平时间为1.8ms,4020的Q11端即可以区分二进制码“0”或“1”。每一遥控编码正脉冲上升沿到来时,若Q11端为“1”,说明前一位遥控码为“1”;若Q11端为“0”,说明前一位遥控码为“0”。
将4020的Q11端作为74HCS9S的串行移位输入端(SER),便可在每一个遥控编码脉冲上升沿到来时并在4020复位之前,将74HC595中的数据沿Q0到Q7方向依次移一位,且4020的Q11端数据移入74HC595的Q0端。对于一组遥控编码脉冲,共有33次上升沿(包括起标志),而74HC595仅为8位移位寄存器,所以移位的最终结果,只有遥控编码脉冲的最后8位保留在74HC595中。
当一组遥控编码脉冲(反相后)来到时,其起始标志的上跳沿触发了双单稳74HC123的1B,在1Q上产生了一个宽度为120ms的正脉冲。1Q同时又触发了74HC123的2B,在产生一个宽度为80ms的负脉冲,1Q和相与后作为锁存信号送至74HC595的RCLK端,即一组遥控编码脉冲到来80ms后,产生一个锁存信号。此时74HC595已经移过了一组遥控码,芯片中保留的是最后8位遥控码,锁存信号将这最后8位遥控码锁存。
3.2 基于EPROM的遥控解码原理
经过串并转换,我们得到了8位并行遥控码。为了让CPU读取这个并行遥控码,通常的方法是在转换完成后产生一个中断,通知CPU来读取遥控信息。但这样做要占用CPU一个外部中断资源并需编写额外的中断服务程序,显得比较烦琐。尤其是当仪器系统的软件不是由自己开发而又要加装遥控时更是无能为力。因此,我们想寻求一种不占用仪器CPU的软、硬件资源而实现遥控的方法,使键盘输入和遥控输入统一起来,占用同一个端口、同一个中断、同一个中断服务程序。简言之,要做到对CPU是透明的,似乎只有一个键盘输入单元在工作,只须访问它来进行键盘扫描、键码读出操作。但实际上却有遥控器与键盘两套键输入硬件在同时而独立地工作。
考察一下智能仪器的键盘扫描输入原理。在这种方式下,CPU通过输出指令使键盘矩阵的行扫描线依次为“0”(低电平),同时监测键盘矩阵的列扫描线。若无键按下,则列扫描线输出全“1”(高电平);若有键按下,则此键所在列线输出为“0”,再结合行扫描线此时的状态,就可具体定位按键。