用TC9148遥控MCS-51单片机


    TC9148是CMOS低功耗红外遥控发射专用IC,通常与TC9149/TC9150红外遥控接收IC配合使用,对家用电器进行控制。TC9148可连接18个键,其中12个键为脉冲发射键(即按一次发射一次编码脉冲,接收机解调后生成一个单脉冲信号),其余6键,具有连续发射功能(即按下发射键,红外发射管连续发射该键的编码信号直到放开该键为止,接收机端可得到一串脉冲信号)。本文介绍不用TC9148对应的专用接收电路,直接用MCS-51单片机的定时器及外中断功能,接收TC9148的红外编码信号,即用TC9148遥控MCS-51单片机的方法。
    一、TC9148的编码
    要用单片机接收TC9148的遥控信号,首先应知道TC9148的编码信号。笔者利用自制的以8031为CPU的仿真器,对TC9148的编码进行监测分析,得出TC9148的编码,如附表所示。
    从表中可知TC9148的编码信号规则如下:
    1. 码长24位,位宽840μs。2. 编码的第1、3、5……23位全为1,作为识别标记。3. 去掉1、2条中的识别标志后的纯编码中只有4位为1,其余8位为0。4. 脉冲发射键的编码以EE开头,连续发射键的编码以EF开头(为编解码方便,接收校验后将去除以上两种识别标记)。
    手动按键后,发射一次本键编码,延时40位后再发射一次。若按的是连续发射键,延时80位后,重复上述过程,直至该键断开为止。
    MCS-51单片机根据以上规则对收到的编码信号进行校验,若不符合,则视为无效。
    二、发射、接收电原理图
    发射器原理如图1所示。TC9148静态功耗极低,可不设电源开关。读者也可以选用TC9148制作的遥控器成品,使用时要注意{13}脚至{12}、{11}、{10}脚之间的二极管的接法,这三个二极管对应编码的前3位。笔者将前3位编码为“101”,故第2个二极管不接。接收器原理较简单,如图2所示。红外接收头选用成品,通过一反相器倒相后,将信号送入单片机的INT1端(也可接INT0,但要修改相应程序)。
    三、接收及解码程序
    设单片机使用的晶振为6MHz。设定时器的定时时间为0.42ms、定时方式2、INT1为负沿触发。当第一位数据到来时,触发INT1中断,产生中断。在INT1中断服务程序中关外中断1,启动定时器0,0.42ms后,定时器中断,读数据。此时正好在该位数据的中间,以后定时器每中断2次读一位数据,读完24位数据后,将数据保存在内存中,延时40位,再读24位数据,若读出的24位数据和前面的相同,则进行校验、解码,得出相应的控制程序入口,执行相应的程序。以上任何一步不能通过则放弃此次接收结果。
    本文提供的程序本为嵌入其他程序而设计的,程序中使用了定时器T0,外中断1,内存单元10H、11H、12H、30H、31H、32H、33H、34H、35H,位地址77H,若读者在主程序中使用了以上资源,也可进行更换,要注意不要和栈冲突。
    若将此程序嵌入其他程序,只要将其中的初始化程序编入主程序的初始化部分中即可。中断服务程序可放在程序存储器的任意位置。此程序相当于在后台执行,不影响主控程序。注意6个连续发射键将导致相应处理程序的反复执行。
    源程序清单(略)。
    本文中的程序在自制仿真器中运行通过。实践证明此方法稳定性好、可靠性高、抗干扰性能优良。用户将此程序嵌入控制程序中,可完成非常复杂的遥控功能。

                                 