欢迎来到天天文库
浏览记录
ID:40570064
大小:32.00 KB
页数:7页
时间:2019-08-04
《PT2262软件解码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.引言 PT2262是红外遥控编码器,PT2272是其接收解码器,两者常常配对使用,现已广泛用于汽车门控、遥控门锁、门禁管理等领域,也可用于传送数字信息。PT2262具有19位二进制编码功能;PT2272的解码只有4-6位,这就限制了数据传输的应用。在此从PT2262接收的信号特征入手,利用8051F330单片机直接对接收到的信号进行解码,解释出PT2262发出的全部19位数据,从而使其应用于数字通信、智能化控制等领域。 2.硬件电路 图1是发射装置的原理图,PT2262作为编码器,当按下按键时,设定的地址
2、码和数据码从17引脚串行输出,经红外发射元件IRED发出信号。通过电阻Rosc调节发射频率,适当提高PT2262工作电压(2.6V-15V),以增大发射距离。其中A0-A12可设置为高电平、低电平、悬空三种状态,因此可以发送531441种编码组合。完全满足设计需求。 接收装置采用集红外线接收、放大、整形与一体的集成电路TL0038,无需任何外接元件,就能完成从红外线接收带输出与TTL电平信号兼容的所有工作,故适用于各种红外线遥控和红外线数据传输。译码采用8051F330D单片机,11.0592MHz晶体振荡器,接
3、收信号送至I/O断口P1.0进行软件解码。接收和译码电路如图2所示。 3.解码原理 编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有12位(A0-A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供531441个地址码。将编码器PT2262的A8位拉高,D3拉高,D0拉高,D1拉低,其余悬空。截取一段接收信号输出波形如图3所示,PT2262每发射一次,至少发送4组相同编码字码。每组字码间隔(低电平)约14ms。 将其截获波形每组字码放大,如图4所示,一组字码
4、有12位A/D码,每个A/D位是由2个脉冲表示:2个窄脉冲则表示“0”;2个宽脉冲表示“1”;1个窄脉冲和一个宽脉冲表示“F”,即地址码“悬空”;除此之外,每组字码之间还有一个同步码隔开,所以每组字码共计有25个宽度不同的脉冲。窄脉冲宽为200µs;宽脉冲宽为1200µs;两个窄脉冲之间宽1200µs;两个宽脉冲间宽200µs;宽窄脉冲间宽为200µs;在4组字码中,每组的字码间隔为4000µs。因此,采用单片机软件解码时,只要判断出起始码,并且识别起后面的字码脉冲宽度即可。 4.抗干扰措施 常用抗干扰措施,是在
5、硬件电路中采用电源滤波、电源稳压、数字地与模拟地隔离。在设计中,除采用上诉方法外,还根据干扰信号与有效信号波形特征异同点,采用软件识别干扰信号和有效信号,从而实现“抗干扰”目的。 当遥控器不发射时,由于空气中各杂波干扰,接收模块的信号输出端仍然会有干扰信号,截获波形如图5所示。 观察其特征,低电平最长为3000µs,最短数十微秒;高电平最长500µs,最短数微秒。与发射时接收到的规则波形(即非有效信号)相比较,低电平为1400µs的信号,是有效信号,而不是干扰信号。并将A0-A34个地址焊接到高电平上作为发射
6、编码信号的帧前码,可解决误码率和干扰问题。 5.软件解码 步骤1:单片机循环记录接收模块信号电平脉冲的长度,高低电平都记录。 步骤2:从记录高低电平组成的波形中,找出连续8个1200µs时长的脉冲信号为特征波形段,即帧前码。 步骤3:确认帧前码之间是否存在一个时长为14000µs的低电平,如果有(则说明不是干扰码),将解码并储存结果,然后根据指令码执行相应控制功能。如没有,则放弃记录的数据,重复步骤1,直到满足条件为止。 以下给出了相关软件解码的程序代码: #include un
7、signedintk,k1,k2,i=0,j; idataunsignedintbite[50] //存高电平,至少接收2组 idataunsignedintbote1[40];//存低电平 idataunsignedcharjieguo[4];//解码结果 longintresult; sbitP01=P0ﮧ1;//无限信号接收端 sbitP07=P0ﮧ7;//驱动LED voidIOdingyi()//单片机配置 {XBRO=0X01;XBR1=0X40; P0MDIN=0XF3;P0MDOUT=0X00; P0
8、SKIP=0X0C;P1MDIN=0XFF; P1MDOUT=0X00;P1SKIP=0X00; } voidoscillator()//单片机配置 {OSCXCN=0X67; //开启外部振荡器12MHz while((OSCXCN&0X80)==0X00){} CLKSEL=0x01;//切换到外部晶体振荡器 } voidbianma()/
此文档下载收益归作者所有