我們通常使用的遙控器是指發(fā)射編碼的一方,被遙控的物品應(yīng)該是接收方,當(dāng)接收方收到遙控信號(hào)后,需要解碼才能達(dá)到遙控的目的。接收端的解碼方式有硬件解碼和軟件解碼,比如PT2262是編碼芯片,PT2272是解碼芯片,當(dāng)PT2262和PT2272配對(duì)使用時(shí),要求發(fā)送端編碼芯片PT2262的地址編碼與接收端解碼芯片PT2272的地址編碼必須一致,而且振蕩頻率相匹配,才能達(dá)到遙控目的。參見下表PT2262的震蕩電阻如果采用1.2M,那么PT2272的震蕩電阻就要采用200K才行。
單片機(jī)解碼電路
單片機(jī)解碼電路由128*64液晶顯示屏,AT89C51單片機(jī),AT24C512存儲(chǔ)器,CD40106,315M收發(fā)模塊和433M收發(fā)模塊組成。液晶顯示屏用于顯示參數(shù)和解碼后的結(jié)果,存儲(chǔ)器用于保存解碼數(shù)據(jù),CD40106由六個(gè)施密特觸發(fā)器電路組成。每個(gè)電路均為在兩輸入端具有施密特觸發(fā)器功能的反相器,CD40106用于改善波形并對(duì)波形反相的作用,因?yàn)榇蟛糠譄o線遙控器都是采用315MHZ和433Mhz的無線電頻率,所以采用了這2種頻率的收發(fā)模塊,用于接收待解碼的無線電信號(hào),實(shí)物如下圖。
2、解碼原理
上圖是 PT2262編碼芯片的編碼格式,PT2262輸出數(shù)據(jù)的順序:A0A1A2A3A4A5A6A7D0D1D2D3同步碼 A0A1A2A3A4A5A6A7D0D1D2D3同步碼……,連續(xù)發(fā)四次。每組編碼之間由同步碼隔開,同步碼低電平寬度是窄脈沖寬度(4T)的31倍(124T),用單片機(jī)軟件解碼時(shí),程序只要判斷出同步碼,然后對(duì)后面的字碼進(jìn)行脈沖寬度識(shí)別即可。2262每次發(fā)射時(shí)至少發(fā)射4 組字碼,我們只需連續(xù)兩次檢測(cè)到相同的地址碼加數(shù)據(jù)碼就可以了。
不同公司的2262,振蕩電阻一樣,PT2262的振蕩頻率會(huì)有區(qū)別,估算公式f=2*1000*16/Rosc(kΩ) kHz其中Rosc 為振蕩電阻這里我們選用Rosc=4.7MΩ,頻率f≈6.8kHz,。T=1/f≈147微秒,同步脈沖的寬度是124T=18228微秒,由上圖可見數(shù)據(jù)“0”是2個(gè)(4T=588微秒)短脈沖,間隔(12T=1764微秒)低電平。數(shù)據(jù)“1”是2個(gè)12T的高電平寬脈沖,間隔一個(gè)4T的低電平窄脈沖,數(shù)據(jù)“F”是1個(gè)高電平窄脈沖間隔12T的低電平寬脈沖,再加一個(gè)12T的高電平寬脈沖??偨Y(jié)如下:
同步碼占用124T=18228微秒,時(shí)間較長(zhǎng),數(shù)據(jù)“0”,“1”,“F”是由2個(gè)脈沖組成,一個(gè)數(shù)據(jù)占用32T=4704微秒時(shí)間。數(shù)據(jù)“0”,“1”,“F”特點(diǎn)見下表:
上表中我們用“窄、窄”表示數(shù)據(jù)“0”,“寬、寬”表示數(shù)據(jù)“1”,“窄、寬”表示數(shù)據(jù)“F”,實(shí)際應(yīng)用時(shí)是經(jīng)過CD40106反相后的波形,所以數(shù)據(jù)“0”就變成“寬、寬”,數(shù)據(jù)“1”變成“窄、窄”,數(shù)據(jù)“F”變成“窄、寬”了。我們用51單片機(jī)的定時(shí)器來測(cè)量這些脈沖的寬度來確定數(shù)據(jù)是“0”,“1”,還是“F”。這就是解碼原理。
PT2262 軟件解碼的單片機(jī)程序
ORG0000H ;2011年9月1日通過,433Mhz無線發(fā)送模塊,2262解碼程序,單片機(jī)使用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總中斷請(qǐng)求
QL: MOV A,#00H
MOV R2,#66D ;清數(shù)據(jù)區(qū);;
MOV R0,#18H
QRAM: MOV @R0, A
INC R0
CLR A
DJNZ R2, QRAM
SS: MOVR6,#24; 查找同步碼,同步碼高電平長(zhǎng)度是359微秒的31倍11129微秒=15BCH,所以TH1=15和10之間
SS1: JB P3.2, SS1 ;躲過前1組數(shù)據(jù),共發(fā)射4組數(shù)據(jù)
JNB P3.2,$ ;
DJNZ R6,SS1
SSS0: JB P3.2,$ ; 編碼信號(hào)反相后送到單片機(jī)的P3.2口進(jìn)行解碼
MOV 8DH,#00H ;定時(shí)器1時(shí)間常數(shù)
MOV 8BH,#00H
JNB P3.2,$ ;測(cè)量高電平時(shí)間
SETB TR1 ;高電平啟動(dòng)定時(shí)器1
JB P3.2,$
CLR TR1
MOV A, TH1
MOV R2,A
CLR C
SUBBA,#15H ;同步碼高電平時(shí)長(zhǎng),比15h長(zhǎng)返回
JNC SSS0
MOV A,R2
CLR C
SUBBA,#10H ;同步碼高電平時(shí)長(zhǎng),比10h短返回
JC SSS0
SS0: JB P3.2,$ ;找到同步碼后,開始解碼
MOV R0,#1AH
MOV R1,#18H
MOV R2,#2
S01: MOV R6,#49 ;判斷高電平時(shí)間常數(shù),識(shí)別數(shù)據(jù)?
S0: MOV 8DH,#00H ;定時(shí)器1時(shí)間常數(shù)
MOV 8BH, #00H
S1: JNB P3.2,S1
SETB TR1 ;高電平啟動(dòng)定時(shí)器1
S2: JB P3.2,S2 ;等待變低
CLR TR1
S3: MOV A,TH1 ;低電平停止定時(shí),把數(shù)據(jù)放到@R0中
MOV@R0,A
INC R0
JS2: DJNZ R6,S0 ;校驗(yàn)1AH及33H起始的24個(gè)數(shù)據(jù),如果校驗(yàn)成功說明解碼成功
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懸浮時(shí)波形是一寬一窄兩個(gè)高電平波形
JNZ CZ1
MOV A,#0FH
MOV @R1,A
AJMP CZ4
CZ1: MOVA,@R1
XRLA,#11H ;A0-A8=0時(shí)波形是2個(gè)寬高電平波形
JNZ CZ2
MOV A,#0
MOV @R1,A
AJMP CZ4
CZ2: MOVA,@R1
XRL A,#00H
JNZ CZ4
MOVA,#01H ;A0-A8=1時(shí)波形是2個(gè)窄高電平波形
MOV @R1,A
CZ4: INCR1
INC R0
DJNZ R2,CZ
J01: MOVR1,#4CH;數(shù)碼管顯示解碼后的12個(gè)數(shù)據(jù)(略)
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這個(gè)芯片了。用軟件編程的方法解碼,必須知道該編碼芯片的編碼格式。比如PT2262發(fā)出的編碼由地址碼、數(shù)據(jù)碼、同步碼組成。地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來表示,兩個(gè)窄脈沖表示“0”;兩個(gè)寬脈沖表示“1”;一個(gè)窄脈沖和一個(gè)寬脈沖表示“F”(“懸空”)。
評(píng)論