pt2262单片机解码程序分享

pt2262单片机解码程序分享,第1张

  我们通常使用的遥控器是指发射编码的一方,被遥控的物品应该是接收方,当接收方收到遥控信号后,需要解码才能达到遥控的目的。接收端的解码方式有硬件解码和软件解码,比如PT2262是编码芯片,PT2272是解码芯片,当PT2262和PT2272配对使用时,要求发送端编码芯片PT2262的地址编码与接收端解码芯片PT2272的地址编码必须一致,而且振荡频率相匹配,才能达到遥控目的。参见下表PT2262的震荡电阻如果采用1.2M,那么PT2272的震荡电阻就要采用200K才行。

  pt2262单片机解码程序分享,pt2262单片机解码程序分享,第2张

  单片机解码电路

  pt2262单片机解码程序分享,pt2262单片机解码程序分享,第3张

  单片机解码电路由128*64液晶显示屏,AT89C51单片机,AT24C512存储器,CD40106,315M收发模块和433M收发模块组成。液晶显示屏用于显示参数和解码后的结果,存储器用于保存解码数据,CD40106由六个施密特触发器电路组成。每个电路均为在两输入端具有施密特触发器功能的反相器,CD40106用于改善波形并对波形反相的作用,因为大部分无线遥控器都是采用315MHZ和433Mhz的无线电频率,所以采用了这2种频率的收发模块,用于接收待解码的无线电信号,实物如下图。

  

  2、解码原理

  pt2262单片机解码程序分享,pt2262单片机解码程序分享,第4张

  上图是 PT2262编码芯片的编码格式,PT2262输出数据的顺序:A0A1A2A3A4A5A6A7D0D1D2D3同步码 A0A1A2A3A4A5A6A7D0D1D2D3同步码……,连续发四次。每组编码之间由同步码隔开,同步码低电平宽度是窄脉冲宽度(4T)的31倍(124T),用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。2262每次发射时至少发射4 组字码,我们只需连续两次检测到相同的地址码加数据码就可以了。

  不同公司的2262,振荡电阻一样,PT2262的振荡频率会有区别,估算公式f=2*1000*16/Rosc(kΩ) kHz其中Rosc 为振荡电阻这里我们选用Rosc=4.7MΩ,频率f≈6.8kHz,。T=1/f≈147微秒,同步脉冲的宽度是124T=18228微秒,由上图可见数据“0”是2个(4T=588微秒)短脉冲,间隔(12T=1764微秒)低电平。数据“1”是2个12T的高电平宽脉冲,间隔一个4T的低电平窄脉冲,数据“F”是1个高电平窄脉冲间隔12T的低电平宽脉冲,再加一个12T的高电平宽脉冲。总结如下:

  同步码占用124T=18228微秒,时间较长,数据“0”,“1”,“F”是由2个脉冲组成,一个数据占用32T=4704微秒时间。数据“0”,“1”,“F”特点见下表:

  pt2262单片机解码程序分享,pt2262单片机解码程序分享,第5张

  上表中我们用“窄、窄”表示数据“0”,“宽、宽”表示数据“1”,“窄、宽”表示数据“F”,实际应用时是经过CD40106反相后的波形,所以数据“0”就变成“宽、宽”,数据“1”变成“窄、窄”,数据“F”变成“窄、宽”了。我们用51单片机的定时器来测量这些脉冲的宽度来确定数据是“0”,“1”,还是“F”。这就是解码原理。

  PT2262 软件解码的单片机程序

  ORG0000H ;2011年9月1日通过,433Mhz无线发送模块,2262解码程序,单片机使用6兆晶体,震荡电阻是4.7兆欧电阻

  AJMP L0

  ORG 000BH

  ORG 0013H;外部中断P3.3脚INT0入口地址

  ORG 001BH

  RETI

  ORG 0025h

  L0:

  MOV TMOD, #11H

  MOV 8CH, #3CH

  MOV 8AH, #0B0H

  CLR EA;打开CPU总中断请求

  QL: MOV A,#00H

  MOV R2,#66D ;清数据区;;

  MOV R0,#18H

  QRAM: MOV @R0, A

  INC R0

  CLR A

  DJNZ R2, QRAM

  SS: MOVR6,#24; 查找同步码,同步码高电平长度是359微秒的31倍11129微秒=15BCH,所以TH1=15和10之间

  SS1: JB P3.2, SS1 ;躲过前1组数据,共发射4组数据

  JNB P3.2,$ ;

  DJNZ R6,SS1

  SSS0: JB P3.2,$ ; 编码信号反相后送到单片机的P3.2口进行解码

  MOV 8DH,#00H ;定时器1时间常数

  MOV 8BH,#00H

  JNB P3.2,$ ;测量高电平时间

  SETB TR1 ;高电平启动定时器1

  JB P3.2,$

  CLR TR1

  MOV A, TH1

  MOV R2,A

  CLR C

  SUBBA,#15H ;同步码高电平时长,比15h长返回

  JNC SSS0

  MOV A,R2

  CLR C

  SUBBA,#10H ;同步码高电平时长,比10h短返回

  JC SSS0

  SS0: JB P3.2,$ ;找到同步码后,开始解码

  MOV R0,#1AH

  MOV R1,#18H

  MOV R2,#2

  S01: MOV R6,#49 ;判断高电平时间常数,识别数据?

  S0: MOV 8DH,#00H ;定时器1时间常数

  MOV 8BH, #00H

  S1: JNB P3.2,S1

  SETB TR1 ;高电平启动定时器1

  S2: JB P3.2,S2 ;等待变低

  CLR TR1

  S3: MOV A,TH1 ;低电平停止定时,把数据放到@R0中

  MOV@R0,A

  INC R0

  JS2: DJNZ R6,S0 ;校验1AH及33H起始的24个数据,如果校验成功说明解码成功

  MOV R2,#24

  MOV R0,#1AH

  MOV R1,#33h

  BJ1: MOVA,@R0

  XRL A,@R1

  JNZ QL

  INC R0

  INC R1

  DJNZ R2,BJ1

  SSS: CLRP1.2;蜂鸣器鸣响嘀嘀嘀的声音,表示解码成功

  LCALL DELAY2

  SETB P1.2;蜂鸣器停止

  MOV R2,#12

  MOV R1,#4CH

  MOV R0,#1AH

  CZ: MOV A,@R0

  ANL A,#0FH

  SWAP A

  MOV @R1,A

  INC R0

  MOV A,@R0

  ANL A,#0FH

  ADD A,@R1

  MOV @R1,A

  XRL A,#10H ;A0-A8悬浮时波形是一宽一窄两个高电平波形

  JNZ CZ1

  MOV A,#0FH

  MOV @R1,A

  AJMP CZ4

  CZ1: MOVA,@R1

  XRLA,#11H ;A0-A8=0时波形是2个宽高电平波形

  JNZ CZ2

  MOV A,#0

  MOV @R1,A

  AJMP CZ4

  CZ2: MOVA,@R1

  XRL A,#00H

  JNZ CZ4

  MOVA,#01H ;A0-A8=1时波形是2个窄高电平波形

  MOV @R1,A

  CZ4: INCR1

  INC R0

  DJNZ R2,CZ

  J01: MOVR1,#4CH;数码管显示解码后的12个数据(略)

  MOV R4,#12;49;10

  ;LCALL XS

  AJMP QL

  YS: MOV 7EH, #64H

  YS1: MOV 7FH, #0FFH

  YS22: DJNZ 7FH, YS22

  RET

  DELAY: MOV R5, #88H

  DEL: NOP

  DJNZ R5, DEL

  RET

  DELAY1: MOV R6, #10H

  DELA: ACALL DELAY

  DJNZ R6, DELA

  RET

  DELAY2: MOV R6, #0FFH

  DE: ACALL DELAY

  DJNZ R6,DE

  RET

  END

  如果采用软件解码,就可以省去PT2272这个芯片了。用软件编程的方法解码,必须知道该编码芯片的编码格式。比如PT2262发出的编码由地址码、数据码、同步码组成。地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“F”(“悬空”)。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2573822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-07
下一篇 2022-08-07

发表评论

登录后才能评论

评论列表(0条)

保存