从表中可知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个连续发射键将导致相应处理程序的反复执行。
本文中的程序在自制仿真器中运行通过。实践证明此方法稳定性好、可靠性高、抗干扰性能优良。用户将此程序嵌入控制程序中,可完成非常复杂的遥控功能。