我们通常使用的遥控器是指发射编码的一方,被遥控的物品应该是接收方,当接收方收到遥控信号后,需要解码才能达到遥控的目的。接收端的解码方式有硬件解码和软件解码,比如PT2262是编码芯片,PT2272是解码芯片,当PT2262和PT2272配对使用时,要求发送端编码芯片PT2262的地址编码与接收端解码芯片PT2272的地址编码必须一致,而且振荡频率相匹配,才能达到遥控目的。参见下表PT2262的震荡电阻如果采用1.2M,那么PT2272的震荡电阻就要采用200K才行。
单片机解码电路
单片机解码电路由128*64液晶显示屏,AT89C51单片机,AT24C512存储器,CD40106,315M收发模块和433M收发模块组成。液晶显示屏用于显示参数和解码后的结果,存储器用于保存解码数据,CD40106由六个施密特触发器电路组成。每个电路均为在两输入端具有施密特触发器功能的反相器,CD40106用于改善波形并对波形反相的作用,因为大部分无线遥控器都是采用315MHZ和433Mhz的无线电频率,所以采用了这2种频率的收发模块,用于接收待解码的无线电信号,实物如下图。
2、解码原理
上图是 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”特点见下表:
上表中我们用“窄、窄”表示数据“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”(“悬空”)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)