遥控系统一般由发射器电路和接收器电路两部分组成。发射器电路一般由指令键、指令编码电路、调制电路、驱动电路、发射电路等几部分组成;接收器电路一般由接收电路、放大电路、解调电路、指令译码电路和执行电路等几部分组成。
无线遥控的实现通常会用到PT2262和PT2272这两个芯片,它们是台湾普城公司生产的一种CMOS工艺的低功耗通用编、解码芯片。图解如下:
解析:发射芯片PT2262将载波振荡器、编码器和发射单元集成于一“芯”,使得发射电路变得非常简洁。它最多可有12位(A0~A11)三态地址端管脚,任意组合的话可以有312=531441个地址码,且最多有6位(D0~D5)个数据端管脚,设定的地址码和数据码从17脚串行输出,用于无线遥控发射信号,发出的编码信号由:地址码、数据码、同步码组成的一个完整的码字。当PT2262芯片正常工作时,其第17脚输出经过内部硬件自动调制的串行数据信号:
(1)当第17脚为高电平时,芯片内部的高频发射电路起振,并发射等幅高频信号;
(2)当第17脚为低电平时,芯片内部的高频发射电路停止振荡,即不发射高频信号。
So,也就说明高频发射电路完全受控于PT2262的第17脚输出的数字信号,从而对高频发射电路完成幅度键控。
解析:解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相对应的数据脚也输出高电平,说明已经正确接收到高频信号。PT2272解码芯片出厂时会有不同的后缀,数据输出具有“暂存”和“锁存”两种方式,方便用户使用。有L4/M4/L6/M6之分,其中:
(1)L表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时才改变;
(2)M表示非锁存输出,数据脚输出的电平是瞬时的,接收数据后不会保持相对应的电平状态;
(3)4表示当采用4路并行数据时,对应的地址编码就应该是4位;
(4)6表示当采用6路的并行数据时,对应的地址编码就应该是6位。
为了能正确解调出已调制的编码信号,接收端需加一级前置放大级,以确保输入PT2272的信号幅度足够大。将这些解调信号再放大的话,就可以驱动Relay、BJT等进行对负载的状态进行“遥控”了。需要注意的一个问题就是:只有发射端PT2262的接收端PT2272的地址编码完全相同时,才能配对使用,否则就无所谓遥控了。
下面是我修改好的代码,虽然这次调试的硬件比较复杂,但是驱动代码却很简单明了,以前听说过这回事,这次小有体会:做硬件电路厉害的才真正算高手!(嘿嘿,有不同意者请保留意见,言论自由,哈哈)
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar temp;
sbit P2_7=P2^7;
//************************************************
void main(void)
{
P2_7=0; //一个数码管的位选
P0=table[0]; //初始时数码管显示数字0
while(1)
{
P1=0xff; //P1口设置为输入状态时,要先全部置为1,这是由内部硬件决定的
temp="P1";
temp="temp"&0x0f; //只需要P1口的高四位,以此读取无线遥控码
switch(temp)
{
case(0x01):P0=table[1];break;//在数码管上显示"1"
case(0x02):P0=table[2];break;//在数码管上显示"2"
case(0x04):P0=table[3];break;//在数码管上显示"3"
case(0x08):P0=table[4];break;//在数码管上显示"4"
}
}
}