原创 单片机实现遥控编码器PT2262的软件解码

2010-7-6 17:47 4760 6 6 分类: MCU/ 嵌入式


单片机实现遥控编码器PT2262的软件解码


 来源: 国外电子元器件杂志    作者:未知     更新:2008-07-07

 
 1.引 言

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

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

 3.解码原理
    编码器PT2262发送的编码信号是由:地址码、数据码、同步码组成的一个完整码字,最多可以有12位(A0-A11)三态地址端引脚(悬空、高电平、低电平),任意组合可提供531441个地址码。将编码器PT2262的A8位拉高,D3拉高,D0拉高,D1拉低,其余悬空。截取一段接收信号输出波形如图3所示,PT2262每发射一次,至少发送4组相同编码字码。每组字码间隔(低电平)约14ms。
    将其截获波形每组字码放大,如图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所示。
    观察其特征,低电平最长为3000μs,最短数十微秒;高电平最长500μs,最短数微秒。与发射时接收到的规则波形(即非有效信号)相比较,低电平为1400μs的信号,是有效信号,而不是干扰信号。并将A0-A34个地址焊接到高电平上作为发射编码信号的帧前码,可解决误码率和干扰问题。

 5.软件解码
    步骤1:单片机循环记录接收模块信号电平脉冲的长度,高低电平都记录。
    步骤2:从记录高低电平组成的波形中,找出连续8个1200μs时长的脉冲信号为特征波形段,即帧前码。
    步骤3:确认帧前码之间是否存在一个时长为14000μs的低电平,如果有(则说明不是干扰码),将解码并储存结果,然后根据指令码执行相应控制功能。如没有,则放弃记录的数据,重复步骤1,直到满足条件为止。
  以下给出了相关软件解码的程序代码:
  #include<c8051f330。h>
  unsigned int k,k1,k2,i=0,j;
  idata unsigned int bite[50]
  //存高电平,至少接收2组
  idata unsigned int bote1[40];//存低电平
  idata unsigned char jieguo[4];//解码结果
  long int result;
  sbit P01=P0? 1;//无限信号接收端
  sbit P07=P0? 7;//驱动LED
  void IOdingyi()//单片机配置
  { XBRO="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 bianma() //记录高低电平脉宽
  {for(j=0;j<50;j++) { bite[j]=0;bite1[j]=0;}
  //归零
  for(j=0;j<50;j++) //用计数方式记录脉宽
  {while(P01= =0) {bite1[j]++;}
  {while(P01= =1) {bite[j]++;}
  }
  }
  void yima()
  //把高电平脉宽解码成十六进制字码
  { int s="500";
  //大于500脉宽为高电平,反之为低
  unsigned char r1=0x80,r2=0x80;
  unsigned char r0=0x80,r=0x80;
  idata unsigned char bite2[32];//解码用
  for(j=0;j<8;j++)
  //将高电平转换为十六进制代码
  { if(bite[j+k2]>s) {bite2[j]=r;}
  else {bite2[j]=0x00;}
  r=(r>>1);
  jieguo[0]=jieguo[0]+bite2[j];}
  for(j=8;j<16;j++)
  //将高电平转换为十六进制代码
  { if(bite[j+k2]>s) {bite2[j]=r0;}
  else {bite2[j]=0x00;}
  r0=(r0>>1);
  jieguo[1]=jieguo[1]+bite2[j];}
  for(j=16;j<24;j++)
  //将高电平转换为十六进制代码
  { if(bite[j+k2]>s) {bite2[j]=r1;}
  else {bite2[j]=0x00;}
  r1=(r1>>1);
  jieguo[2]=jieguo[2]+bite2[j];}
  for(j=24;j<32;j++)
  //将高电平转换为十六进制代码
  { if(bite[j+k2]>s) {bite2[j]=r2;}
  else {bite2[j]=0x00;}
  r2=(r2>>1);
  jieguo[3]=jieguo[3]+bite2[j];}
  }
  void PT2262-72()
  { bianma();k2=0; yima();
  result="jieguo" [0]*0x1000000+jieguo [1]*0x10000+jieguo[2]
  *0x100+jieguo[3];
  k1=0;
  while ((result&0xff000000)! =0xff000000)
  //找出帧前码
  { 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();//软件解码程序
  //判断帧前码是否正确,排除干扰信号(帧前码前面是否有14000μs低电平)
  if((jieguo[0]= =255)&&(bite1[k2]>6000)){;}
  //存储,认为结果[0-2]有效
  else jieguo [0]=0;jieguo [1]=0;jieguo [2]=0;}
  //认为jieguo无效,清零
  //根据指令码,执行控制功能
  if((jieguo[0]= =255)&&(jieguo[1]= =0x55)&&(jieguo[2]= =0x55))
  {P07=0;}
  //执行控制程序这里让p07驱动数码管发光
  else P07=1;//不正确,LED熄灭警示*/
  }
  )

 6.结束语
    该软件解码部分已在8051F330D单片机(11.0592MHz晶体振荡器)上通过现场测试,设计方案可应用与门禁管理系统。实践表明,应用方便、可靠性好、代码识别准确。

 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条