《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于51單片機(jī)的無線信號編解碼技術(shù)研究
基于51單片機(jī)的無線信號編解碼技術(shù)研究
來源:微型機(jī)與應(yīng)用2011年第5期
張德娟,,邵平凡
(武漢科技大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,,湖北 武漢 430065)
摘要: 針對數(shù)據(jù)幀格式固定,、校驗(yàn)方式單一以及傳輸速率不便于更改等問題,提出了一種通過 STC89C516RD+單片機(jī)實(shí)現(xiàn)的軟件編解碼方法,。該方法通過定時器的延時來實(shí)現(xiàn)對數(shù)字信號的編碼;通過外部中斷與定時器相結(jié)合的方式進(jìn)行解碼,,即利用接收到的脈沖信號的上升沿啟動定時器工作,,下降沿停止定時器工作并觸發(fā)外部中斷,然后讀取計數(shù)寄存器的值并識別數(shù)據(jù),。實(shí)驗(yàn)證明,,該方法的數(shù)據(jù)幀格式及校驗(yàn)方式靈活多變,而且可以降低無線傳輸系統(tǒng)的成本,,適用于無線控制,、數(shù)據(jù)采集、故障報警等多種無線數(shù)據(jù)通信場合,。
Abstract:
Key words :

摘  要: 針對數(shù)據(jù)幀格式固定,、校驗(yàn)方式單一以及傳輸速率不便于更改等問題,提出了一種通過 STC89C516RD+單片機(jī)實(shí)現(xiàn)的軟件編解碼方法,。該方法通過定時器的延時來實(shí)現(xiàn)對數(shù)字信號的編碼,;通過外部中斷與定時器相結(jié)合的方式進(jìn)行解碼,,即利用接收到的脈沖信號的上升沿啟動定時器工作,下降沿停止定時器工作并觸發(fā)外部中斷,,然后讀取計數(shù)寄存器的值并識別數(shù)據(jù),。實(shí)驗(yàn)證明,該方法的數(shù)據(jù)幀格式及校驗(yàn)方式靈活多變,,而且可以降低無線傳輸系統(tǒng)的成本,,適用于無線控制、數(shù)據(jù)采集,、故障報警等多種無線數(shù)據(jù)通信場合,。
關(guān)鍵詞: 編碼;解碼,;定時器,;外部中斷

 隨著微電子、計算機(jī)信息技術(shù)的迅速發(fā)展,,由單片機(jī)和無線傳輸模塊組成的無線數(shù)據(jù)通信系統(tǒng)在石油,、電力、水文,、冶金,、安防等行業(yè)的無線控制、數(shù)據(jù)采集,、故障報警等諸多領(lǐng)域中得到越來越廣泛的應(yīng)用,。而數(shù)據(jù)的編解碼對于無線傳輸可靠性的影響舉足輕重。目前編解碼方式主要有硬件編解碼和軟件編解碼兩種,。本文在對已有硬件及軟件編解碼技術(shù)研究的基礎(chǔ)上,,設(shè)計并通過STC89C516RD+單片機(jī)實(shí)現(xiàn)了一種以軟件方式對傳輸數(shù)據(jù)編解碼的方法。
1 現(xiàn)有的編解碼技術(shù)
1.1 硬件編解碼技術(shù)

 目前有多種用于編碼和解碼的專用芯片,,PT2262/PT2272是比較常用的一種,。在通常的使用中,一般采用8位地址碼和4位數(shù)據(jù)碼,,這時編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設(shè)定腳,。有三種狀態(tài)可供選擇:懸空、接正電源和接地,,38為6 561,,所以地址編碼不重復(fù)度為6 561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同時,,才能配對使用,。當(dāng)編碼啟動端TE接低電平時,PT2262就將從數(shù)據(jù)輸入端D0~D3輸入的數(shù)據(jù)經(jīng)過編碼后從DOUT引腳串行輸出[1],數(shù)據(jù)幀的高8位為地址,,低4位為數(shù)據(jù),,發(fā)送時以先高位、后低位的順序逐次發(fā)送,。每一幀發(fā)送4次,,每幀數(shù)據(jù)中間由同步碼隔開。PT2272只有在連續(xù)2次檢測到相同的地址碼和數(shù)據(jù)碼時才會把數(shù)據(jù)碼中的“1”驅(qū)動相應(yīng)的數(shù)據(jù)輸出端為高電平和驅(qū)動VT引腳同步為高電平[2],,將VT引腳反向后接入單片機(jī)的外部中斷輸入引腳,,通過觸發(fā)中斷來通知單片機(jī)接收到數(shù)據(jù)了。
PT2262/PT2272芯片功耗低,、外部元器件少,、工作電壓范圍寬。但這兩個芯片在應(yīng)用中必須對地址統(tǒng)一編碼,,配對使用,,而且需要通過改變硬件電路才能重新設(shè)置芯片地址;該編碼芯片的幀格式是固定的,,不能隨意改動,,而且編碼的脈沖寬度需要調(diào)節(jié)外接振蕩電阻大小才能改變。這些都給用戶的使用帶來了極大的不便,。
1.2 軟件編解碼技術(shù)
 在利用單片機(jī)和無線傳輸模塊進(jìn)行無線數(shù)據(jù)傳輸?shù)倪^程中,,使用軟件編解碼時通常會采用定時采樣的方式??傮w設(shè)計思想如下:發(fā)送端通過定時器延時產(chǎn)生不同寬度的脈沖或脈沖組合來實(shí)現(xiàn)對數(shù)據(jù)“0”和“1”的編碼,。接收端對接收到的脈沖信號進(jìn)行定時采樣,然后通過計算識別出對應(yīng)的數(shù)據(jù)信號,。通過定時采樣的方式進(jìn)行解碼時,,對采樣頻率具有比較嚴(yán)格的要求。根據(jù)奈奎斯特理論,,只有采樣頻率高于發(fā)射信號最高頻率的2倍時,,才能把數(shù)字信號準(zhǔn)確還原[3]。但是中斷的響應(yīng)與返回以及數(shù)據(jù)的判斷都會造成時間延遲,,因此,發(fā)射信號的頻率不能太高,,否則容易導(dǎo)致數(shù)據(jù)丟失,。同時定時采樣需要多次調(diào)用中斷服務(wù)程序,增加了額外的時間開銷,。這些都會降低無線數(shù)據(jù)傳輸?shù)乃俾省?br /> 2 改進(jìn)的編解碼技術(shù)
2.1 軟件編碼原理及程序流程

 編碼就是用不同形式的碼型來表示二進(jìn)制的“1”和“0”,。本文采用的編碼方式為脈沖—間隙編碼,即在下一脈沖前的暫停持續(xù)時間t表示二進(jìn)制符號“1”,而下一脈沖前的暫停持續(xù)時間2t表示二進(jìn)制符號“0”[4],,脈沖—間隙編碼如圖1所示,。發(fā)送端的信號分為同步信號、數(shù)據(jù)信號以及校驗(yàn)和信號,,無線發(fā)射電路如圖2所示,。經(jīng)過編碼后的信號由單片機(jī)的P1.7引腳輸出到無線發(fā)射模塊,然后無線發(fā)射模塊將基帶信號經(jīng)高頻載波電路調(diào)制后,,通過天線向空間輻射,。


 在發(fā)送端對數(shù)據(jù)進(jìn)行編碼時,由于對發(fā)送的數(shù)據(jù)位,、位數(shù)的判斷以及校驗(yàn)和的生成所產(chǎn)生的延遲時間不超過70T,,其中T為機(jī)器周期,因此,,定義100T的高電平脈沖代表“1”,,而200T的高電平脈沖代表“0”。在接收端進(jìn)行解碼時,,由INT1引腳上的下降沿觸發(fā)中斷并停止定時器計數(shù),,進(jìn)而識別數(shù)據(jù)信號,此過程中斷服務(wù)程序的延遲時間不超過50T,。因此,,設(shè)置數(shù)據(jù)位之間的低電平脈沖寬度為70T。為了不與數(shù)據(jù)信號混淆,,將同步位定義為300T的高電平脈沖,。本實(shí)驗(yàn)采用的石英晶體的晶振頻率為12 MHz,因此一個機(jī)器周期為1 μs,,故一個字節(jié)的傳輸速率最快為5 882 b/s,,最慢為3 703 b/s。

 軟件編碼程序流程圖如圖3所示,,采用定時器0工作在方式1,,即16位定時器工作方式,根據(jù)不同的輸出脈沖寬度需求向計數(shù)寄存器TH0和TL0中裝入不同的初始值,。標(biāo)志位flags_0用來區(qū)分高電平脈沖和低電平脈沖,,當(dāng)標(biāo)志位flags_0為0時輸出兩個數(shù)據(jù)位之間的低電平脈沖,不為0時輸出高電平脈沖,。標(biāo)志位flags_1用來區(qū)分?jǐn)?shù)據(jù)位和同步位,,當(dāng)flags_1為0時輸出數(shù)據(jù)位高電平脈沖,為1時輸出同步位高電平脈沖,。在發(fā)送的過程中,,每發(fā)送一個字節(jié),就將該字節(jié)累加到校驗(yàn)和中,當(dāng)所有的數(shù)據(jù)發(fā)送完后就發(fā)送校驗(yàn)和,。

2.2 軟件解碼原理及程序流程
 解碼是用特定方法把數(shù)碼還原成它所代表的內(nèi)容,,或?qū)㈦娒}沖信號轉(zhuǎn)換成它所代表的信息、數(shù)據(jù)等過程,。本文采用定時器與外部中斷相結(jié)合的方法對接收到的脈沖信號進(jìn)行解碼,,并利用接收到的校驗(yàn)和進(jìn)行校驗(yàn)。
 將單片機(jī)的模式控制寄存器TMOD的門控位GATE置1,,當(dāng)TR1=1時,,外部中斷INT1直接控制定時器1的啟動、停止,,即INT1由0變?yōu)?電平時,,啟動計數(shù);當(dāng)INT1由1變?yōu)?電平時,,停止計數(shù),。這種情況常用來測量在INT1引腳上出現(xiàn)的正脈沖的寬度[5]。無線接收電路如圖4所示,,無線接收模塊將接收到的信號進(jìn)行解調(diào),、放大和整形,恢復(fù)出基帶信號,,由引腳2輸出到單片機(jī)的INT1引腳上,。設(shè)置外部中斷1為下降沿觸發(fā)方式,定時器/計數(shù)器1為16位定時器工作方式,。當(dāng)INT1引腳上出現(xiàn)由高到低的負(fù)跳變時觸發(fā)中斷,,定時器1停止計數(shù)[6],讀取計數(shù)寄存器TL1和TH1中的值來判斷脈沖寬度,,從而解碼接收到的數(shù)據(jù)信號,。

 由于在發(fā)送過程中重裝計數(shù)初值、接收數(shù)據(jù)以及中斷的響應(yīng)都需要時間,,所以接收到的實(shí)際脈沖寬度大于發(fā)送的脈沖寬度,。因此,如果接收到的高電平脈沖寬度大于300T則表示接收到同步位,;若大于200T則表示接收到數(shù)據(jù)位“0”,;否則表示接收到數(shù)據(jù)位“1”。軟件解碼流程圖如圖5所示,,在接收到同步位后,,開始接收數(shù)據(jù),直到再次接收到同步位的時候暫停接收,。利用接收到的數(shù)據(jù)以及校驗(yàn)和進(jìn)行校驗(yàn),如果接收到的數(shù)據(jù)正確,則停止接收,;如果不正確,,則將之前接收到的數(shù)據(jù)全部丟棄,再重新開始接收,。

 實(shí)驗(yàn)證明,,通過該方法進(jìn)行軟件編碼和解碼時,可以根據(jù)不同的需要使用軟件編程來設(shè)置地址,,接收端與發(fā)送端可以進(jìn)行多對多的無線數(shù)據(jù)通信,,而不需要配對使用;改變定時器的計數(shù)寄存器初值就可以改變編碼的脈沖寬度,,從而改變傳輸速率,;解碼準(zhǔn)確快捷,占用CPU資源相對較少,,便于操作,;校驗(yàn)方式可選,數(shù)據(jù)幀格式靈活多變,。
 本實(shí)驗(yàn)中采用的是晶振頻率為12 MHz的石英晶體,,以及具有CISC結(jié)構(gòu)的8位單片機(jī),它的一個機(jī)器周期要占用12個振蕩周期,,執(zhí)行一條指令最少要一個機(jī)器周期,,處理速度較慢,在一定程度上影響了無線傳輸速率,??梢酝ㄟ^提高晶振頻率或者選擇速度較快的單片機(jī)作為控制芯片的方式來提高無線數(shù)據(jù)傳輸速率。如選擇具有流水線結(jié)構(gòu)的C8051F系列單片機(jī),,或者是具有預(yù)取指令功能的AVR系列單片機(jī),,它們可以在一個時鐘周期內(nèi)完成一條指令。也可以采用具有DW8051_core核的單片機(jī),,它采用4個時鐘周期為1個指令周期的模式,,在時鐘周期相同的情況下,處理能力是標(biāo)準(zhǔn)8051的3倍,。采用這些高速度的單片機(jī)可以減少程序執(zhí)行所產(chǎn)生的延遲時間,,從而縮短數(shù)據(jù)位編碼脈沖寬度,提高無線數(shù)據(jù)傳輸速率,。
參考文獻(xiàn)
[1] 黎國鋒,,馮永振,盧廣文.近距離無線加密傳輸韋根信號的實(shí)現(xiàn)[J].無線通信技術(shù),,2009(1):31-36.
[2] 趙秋.利用編解碼芯片的無線收發(fā)電路[J].信息化研究,,2009,,35(9):35-38.
[3] 邵平凡,陳華斌.基于Atmega8無線信號軟件編解碼的實(shí)現(xiàn)方法及性能分析[J].福建電腦,,2009(8):115-116.
[4] 康東,,石喜勤,李勇鵬,,等.射頻識別(RFID)核心技術(shù)與典型應(yīng)用開發(fā)案例[M].北京:人民郵電出版社,,2008.
[5] 梅麗鳳,王艷秋,,汪毓鐸,,等.單片機(jī)原理及接口技術(shù)[M].北京:清華大學(xué)出版社,2004.
[6] 馬忠梅,,籍順心,,張凱,等.單片機(jī)的C語言應(yīng)用程序設(shè)計(第4版)[M].北京:北京航空航天大學(xué)出版社,,2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。