×
嵌入式开发 > 详情

用单片机模拟2262软件编码

发布时间:2020-06-13 发布时间:
|

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 结束语

本系统现已投入使用,它不但结构简单,价格低廉,操作方便,控制准确、灵活,而且节能效果好,弥补了发射芯片的局限性,使其更加智能化、理想化。以此为基础,单片机在遥控系统中的应用将更加广泛。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NXP推出Wi-Fi 6E三频段SOC 充分释放6GHz频谱潜力