1 概述
在应用遥控编、解码芯片时,要求一对芯片的地址完全一致,因此当一个遥控芯片控制多个解码芯片时,需要与地址端连接的多个开关同时辅助动作,以改变地址,使之与解码芯片的地址完全一致,达到遥控的目的。
若用微控制器取代编码芯片,就可以使多个开关动作改变输出波形的功能由软件完成,同时,在空闲时让微控制器工作在掉电模式,这样不但操作简便而且节省了能源。
为此,我们设计了用廉价单片机AT89C2051代替遥控编码芯片PT2262来实现编码功能的电路,用软件模拟了遥控编码功能。
2 PT2262的工作原理
2.1 管脚功能
PT2262的各管脚功能如表1所示。
2.2 位脉冲宽度
PT2262的地址引脚有3种接法,即悬空(高阻态)、高电平及低电平,不同接法的输出波形不同,如图1所示。从图中可知,若振荡周期为a,则窄脉冲的宽度是4a,间隔是12a;宽脉冲的宽度是12a,间隔是4a,从而一个完整的位脉冲宽度是32a。
使用时,PT2262振荡电阻大约是与它成对的解码芯片PT2272振荡电阻的4倍,即若取PT2272振荡电阻为470kΩ, PT2262的振荡电阻可取2MkΩ。这种条件下,经多次实验测得PT2262发射的窄脉冲宽度约为250μs,宽脉冲约为750μs,而2组数据之间的间隔约为6ms。
图1 PT2262的位脉冲波形
2.3 编码方式
PT2262共有12个地址端,发射的每一组数据都由12个位脉冲组成,顺序是从A0、A1……到A11,由于每个地址端有3种接法,故数据端输出的波形有312种形式。
3 软件设计方法
以一片PT2262通过八片PT2272控制8个灯为例进行说明。
3.1 复位的处理
设计程序时不容忽视的问题是:接上电池的首次复位和正常工作有键被按下时的掉电复位后,程序均从0000H单元运行。因此不同的复位应区别对待。
首次复位可认为8个灯都是关着的,而掉电复位应记忆掉电前8个灯的开关状态,以便在按键再次按下时能准确地开、关灯。
为了达到这个目的,我们在CPU的RAM中开辟了一个记忆区域,即20H、21H、22H,在这3个字节中存放复位标志。
首次复位后写入20H=55H,21H=AAH,22H=00H。其中22H的八位按顺序对应八个灯,当某一个灯被打开时,将其对应位送"1",被关掉后送"0"。每次复位均要检查21H,22H单元的内容,如果20H=55H,21H=AAH就说明是掉电复位;如果上述条件不成立,就说明是首次复位。由于首次复位时,RAM内容是随机的,因此两个字节的复位标志保证了复位判断的准确性。
3.2 地址编码
用2EH的8位和2FH的高4位来存储12位地址A0~A11状态,"1"表示高电平,"0"表示低电平。此时,最多可以控制灯的个数为212个。若需利用第三种状态,只需用一个字节的两位表示即可,如"00"、"01"、"10"分别表示高、低电平及高阻态,此时最多可以控制灯的个数为312个。
我们设计的是控制8个灯的电路,用两个状态时,单片机输出的A3~A10这9位编码固定不变,从而使8个灯的8片解码器PT2272 的这9个地址端接法完全一致。A0~A2决定了8个灯的地址编码,如表2所示。
每种接法与相应接受灯的解码器PT2272一一对应。A11也兼做数据D0位,D0=1时,控制灯开;反之,控制灯关。
3.3 键值读取
为了节电,程序中设置了一段1毫秒的延时,在1毫秒之内,有键按下则去处理键值,若无键按下,则进入掉电节能状态。
处理键值时,为了防止一次按键被重复处理,要等待按键结束后再去处理。
键值的处理有两个内容,首先将该按键对应的灯的开关标志位取反。例如,设定标志字节为23H,当按键AN0被按下,就将23H.0取反,并将取反后的结果送A11/D0的存储位 。然后把该按键对应的灯的编码按表2送至A0~A2的存储位。
3.4 模拟脉冲
发送脉冲程序就是根据2EH,2FH的内容发送连续12个"1","0"或高阻数据脉冲。脉冲的宽度是用延时来实现的。在程序中,可编制几段延时子程序,由主程序调用即可。需注意的是,延时时间要通过多次实验,反复调整。
4 结束语
本系统现已投入使用,它不但结构简单,价格低廉,操作方便,控制准确、灵活,而且节能效果好,弥补了发射芯片的局限性,使其更加智能化、理想化。以此为基础,单片机在遥控系统中的应用将更加广泛。