近年來,基于波形分析的軟件解碼或者軟硬結(jié)合解碼的方法被提出來。但是,這些方法都不具有自學功能,只針對特定振蕩頻率的波形進行解碼,當不知道發(fā)射電路PT2262的振蕩電阻的配置的情況下無法解碼,或者需要手工調(diào)整程序的參數(shù)。
本文提出了一種具有自學習功能的基于單片機的軟件解碼方法并完成了設計,這種新方法可以在未知發(fā)射電路的配置參數(shù)的情況下,通過先學習、后解碼的過程實現(xiàn)解碼,且可以實現(xiàn)自定義數(shù)據(jù)幀的格式,使編碼的地址位和數(shù)據(jù)位的設置更加靈活。從而可以將通用編碼集成電路擴展應用于數(shù)據(jù)通信,智能控制等領域。
1 PT2262工作原理
PT2262最多可有12位(A0~A11)三態(tài)地址端管腳(懸空,接高電平,接低電平)任意組合可提供531441種地址碼。最多可以有6位(D0~D5)數(shù)據(jù)位,設定的地址碼和數(shù)據(jù)碼與同步碼組成數(shù)據(jù)幀以串行數(shù)據(jù)方式輸出。
當PT2262和PT2272配對使用時,要求發(fā)端編碼芯片F(xiàn)T2262的地址編碼與收端解碼芯片PT2272的地址編碼相一致,而且振蕩頻率相匹配。而發(fā)端向收端發(fā)送的指令等信息可編碼在編碼芯片的數(shù)據(jù)端,通過無線傳送后,在解碼芯片的數(shù)據(jù)端取出。
編碼芯片PT2262發(fā)出的編碼由地址碼、數(shù)據(jù)碼、同步碼組成。地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來表示,兩個窄脈沖表示“0”;兩個寬脈沖表示“1”;一個窄脈沖和一個寬脈沖表示“f”(“懸空”)。圖1所示為PT2262編碼格式圖。
圖中的T為時鐘振蕩周期的2倍,同步碼低電平寬度是窄脈沖寬度的31倍。
2 硬件電路
2.1 發(fā)射電路
發(fā)射電路由PT2262編碼器和無線發(fā)射模塊組成,如圖2所示。當PT2262和無線發(fā)射模塊同時上電時(這里用開關S1代替,實際使用中可以加入控制電路),設定的地址碼和數(shù)據(jù)碼與固定的同步碼組成一組編碼從17腳串行輸出到315 MHz的無線數(shù)據(jù)發(fā)送模塊。振蕩電阻Rosc用來調(diào)節(jié)編碼發(fā)射頻率,適當調(diào)高電路工作電源VCC可以增大發(fā)射距離。12位編碼共531 441種組合可以滿足各種智能控制和低速、少數(shù)據(jù)量、短距離數(shù)據(jù)通信。
2.2 接收電路
接收電路由無線接收模塊,信號變換模塊和89C51單片機組成。無線接收模塊集無線接收、解調(diào)、放大、整形于一體,并能輸出與TTL電平信號兼容的數(shù)字信號。信號變換模塊主要完成信號隔離、編碼反相、為單片機提供中斷信號功能,如圖3所示。
當接收到編碼信號后,編碼信號反相后送到單片機的P0口進行解碼,同時在INT端會產(chǎn)生下降沿,并在整個信號接收過程中保持低電平,當發(fā)送端停止發(fā)送編碼信號后,INT回到高電平,INT端口信號為單片機解碼提供中斷信號。89C51單片機完成軟件解碼和控制外部執(zhí)行電路功能,外接4 MHz晶體振蕩器,如圖4所示。由于采用中斷方式判斷有無發(fā)射信號到來,從而大大減少了單片機處理開銷,降低了功耗,也提高了抗干擾性能。
3 解碼原理
3.1 波形分析
PT2262每次發(fā)射時至少發(fā)射4組碼字,每組字碼之間有同步碼隔開,一個碼字包括同步碼、地址位、和數(shù)據(jù)位,波形振蕩頻率f=2x1000x 16/Rosc kHz,其中Rosc為振蕩電阻。圖5所示的一個碼字從左到右依次由“f”、“f”、“f”、“f”、“f”、“f”、“f”、“f”、“0”、“0”、“1”、“0”、同步碼組成。