单片机实现遥控编码器PT2262的软件解码(共2页)_第1页
单片机实现遥控编码器PT2262的软件解码(共2页)_第2页
单片机实现遥控编码器PT2262的软件解码(共2页)_第3页
单片机实现遥控编码器PT2262的软件解码(共2页)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上单片机实现遥控编码器PT2262的软件解码1.引 言    PT2262是红外遥控编码器,PT2272是其接收解码器,两者常常配对使用,现已广泛用于汽车门控、遥控门锁、门禁管理等领域,也可用于传送数字信息。PT2262具有19位二进制编码功能;PT2272的解码只有4-6位,这就限制了数据传输的应用。在此从PT2262接收的信号特征入手,利用8051F330单片机直接对接收到的信号进行解码,解释出PT2262发出的全部19位数据,从而使其应用于数字通信、智能化控制等领域。  2.硬件电路  

2、0; 图1是发射装置的原理图,PT2262作为编码器,当按下按键时,设定的地址码和数据码从17引脚串行输出,经红外发射元件IRED发出信号。通过电阻Rosc调节发射频率,适当提高PT2262工作电压(2.6V-15V),以增大发射距离。其中A0-A12可设置为高电平、低电平、悬空三种状态,因此可以发送种编码组合。完全满足设计需求。    接收装置采用集红外线接收、放大、整形与一体的集成电路TL0038,无需任何外接元件,就能完成从红外线接收带输出与TTL电平信号兼容的所有工作,故适用于各种红外线遥控和红外线数据传输。译码采用8051F330D单片机,11.0592

3、MHz晶体振荡器,接收信号送至I/O断口P1.0进行软件解码。接收和译码电路如图2所示。  3.解码原理    编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有12位(A0-A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供个地址码。将编码器PT2262的A8位拉高,D3拉高,D0拉高,D1拉低,其余悬空。截取一段接收信号输出波形如图3所示,PT2262每发射一次,至少发送4组相同编码字码。每组字码间隔(低电平)约14ms。    将其截获波形每组字码放大,如图

4、4所示,一组字码有12位A/D码,每个A/D位是由2个脉冲表示:2个窄脉冲则表示“0”;2个宽脉冲表示“1”;1个窄脉冲和一个宽脉冲表示“F”,即地址码“悬空”;除此之外,每组字码之间还有一个同步码隔开,所以每组字码共计有25个宽度不同的脉冲。窄脉冲宽为200s;宽脉冲宽为1200s;两个窄脉冲之间宽1200s;两个宽脉冲间宽200s;宽窄脉冲间宽为200s;在4组字码中,每组的字码间隔为4000s。因此,采用单片机软件解码时,只要判断出起始码,并且识别起后面的字码脉冲宽度即可。  4.抗干扰措施    常用抗干扰措施,是在硬件电路中采用电源滤

5、波、电源稳压、数字地与模拟地隔离。在设计中,除采用上诉方法外,还根据干扰信号与有效信号波形特征异同点,采用软件识别干扰信号和有效信号,从而实现“抗干扰”目的。    当遥控器不发射时,由于空气中各杂波干扰,接收模块的信号输出端仍然会有干扰信号,截获波形如图5所示。    观察其特征,低电平最长为3000s,最短数十微秒;高电平最长500s,最短数微秒。与发射时接收到的规则波形(即非有效信号)相比较,低电平为1400s的信号,是有效信号,而不是干扰信号。并将A0-A34个地址焊接到高电平上作为发射编码信号的帧前码,可解决误码率和干扰问题

6、。  5.软件解码    步骤1:单片机循环记录接收模块信号电平脉冲的长度,高低电平都记录。    步骤2:从记录高低电平组成的波形中,找出连续8个1200s时长的脉冲信号为特征波形段,即帧前码。    步骤3:确认帧前码之间是否存在一个时长为14000s的低电平,如果有(则说明不是干扰码),将解码并储存结果,然后根据指令码执行相应控制功能。如没有,则放弃记录的数据,重复步骤1,直到满足条件为止。  以下给出了相关软件解码的程序代码:  #include<c8

7、051f330。h>  unsigned int k,k1,k2,i=0,j;  idata unsigned int bite50  /存高电平,至少接收2组  idata unsigned int bote140;/存低电平  idata unsigned char jieguo4;/解码结果  long int result;  sbit P01=P0? 1;/无限信号接收端  sbit P07=P0? 7;/驱动LED  void IOdingyi()/单片机配置  XBRO=&q

8、uot;0X01"; XBR1= 0X40 ;  P0MDIN=0XF3; P0MDOUT= 0X00;  P0SKIP=0X0C; P1MDIN=0XFF;  P1MDOUT=0X00;P1SKIP=0X00;    void oscillator() /单片机配置  OSCXCN =0X67;  /开启外部振荡器 12 MHz  while(OSCXCN& 0X80)= =0X00)  CLKSEL =0x01; /切换到外部晶体振荡器    void bianm

9、a() /记录高低电平脉宽  for(j=0;j<50;j+) bitej=0;bite1j=0;  /归零  for(j=0;j<50;j+) /用计数方式记录脉宽  while(P01= =0) bite1j+;  while(P01= =1) bitej+;      void yima()  /把高电平脉宽解码成十六进制字码  int s="500"  /大于500脉宽为高电平,反之为低  unsigned char r1=0x80,r

10、2=0x80;  unsigned char r0=0x80,r=0x80;  idata unsigned char bite232;/解码用  for(j=0;j<8;j+)  /将高电平转换为十六进制代码  if(bitej+k2>s) bite2j=r;  else bite2j=0x00;   r=(r>>1);  jieguo0=jieguo0+bite2j;  for(j=8;j<16;j+)  /将高电平转换为十六进制代码  if

11、(bitej+k2>s) bite2j=r0;  else bite2j=0x00;  r0=(r0>>1);  jieguo1=jieguo1+bite2j;  for(j=16;j<24;j+)  /将高电平转换为十六进制代码  if(bitej+k2>s) bite2j=r1;  else bite2j=0x00;  r1=(r1>>1);  jieguo2=jieguo2+bite2j;  for(j=24;j<32;j+)  /

12、将高电平转换为十六进制代码  if(bitej+k2>s) bite2j=r2;  else bite2j=0x00;  r2=(r2>>1);  jieguo3=jieguo3+bite2j;    void PT2262-72()  bianma();k2=0; yima();  result="jieguo" 0*0x+jieguo 1*0x10000+jieguo2  *0x100+jieguo3;  k1=0;  while (resul

13、t&0xff)! =0xff)  /找出帧前码  result=(result<<1);k1+;  /移位 result,直到帧前码出现最高位  if(k1>25) k1=0; break;  /找寻超过25次,退出找寻    k2=k1; yima();/ka存储帧前码,并将电平值从帧前码开始  转换为十六进制代码    main()  PCA0MD=0x00;EA=0;/关中断,看门狗  IOdingyi();oscillator();/初始化  while(1)  PT2262-72();/软件解码程序  /判断帧前码是否正确,排除干扰信号(帧前码前面是否有14000s低电平)  if(jieguo0= =255)&&(bite1k2>6000);  /存储,认为结果0-2有效  else jieguo 0=0;jieguo 1=0;jieguo 2=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论