基于51單片機的無(wú)線(xiàn)信號編解碼技術(shù)研究
隨著(zhù)微電子、計算機信息技術(shù)的迅速發(fā)展,由單片機和無(wú)線(xiàn)傳輸模塊組成的無(wú)線(xiàn)數據通信系統在石油、電力、水文、冶金、安防等行業(yè)的無(wú)線(xiàn)控制、數據采集、故障報警等諸多領(lǐng)域中得到越來(lái)越廣泛的應用。而數據的編解碼對于無(wú)線(xiàn)傳輸可靠性的影響舉足輕重。目前編解碼方式主要有硬件編解碼和軟件編解碼兩種。本文在對已有硬件及軟件編解碼技術(shù)研究的基礎上,設計并通過(guò)STC89C516RD+單片機實(shí)現了一種以軟件方式對傳輸數據編解碼的方法。
1 現有的編解碼技術(shù)
1.1 硬件編解碼技術(shù)
目前有多種用于編碼和解碼的專(zhuān)用芯片,PT2262/PT2272是比較常用的一種。在通常的使用中,一般采用8位地址碼和4位數據碼,這時(shí)編碼芯片PT2262和解碼芯片PT2272的第1~8腳為地址設定腳。有三種狀態(tài)可供選擇:懸空、接正電源和接地,38為6 561,所以地址編碼不重復度為6 561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同時(shí),才能配對使用。當編碼啟動(dòng)端TE接低電平時(shí),PT2262就將從數據輸入端D0~D3輸入的數據經(jīng)過(guò)編碼后從DOUT引腳串行輸出[1],數據幀的高8位為地址,低4位為數據,發(fā)送時(shí)以先高位、后低位的順序逐次發(fā)送。每一幀發(fā)送4次,每幀數據中間由同步碼隔開(kāi)。PT2272只有在連續2次檢測到相同的地址碼和數據碼時(shí)才會(huì )把數據碼中的“1”驅動(dòng)相應的數據輸出端為高電平和驅動(dòng)VT引腳同步為高電平[2],將VT引腳反向后接入單片機的外部中斷輸入引腳,通過(guò)觸發(fā)中斷來(lái)通知單片機接收到數據了。
PT2262/PT2272芯片功耗低、外部元器件少、工作電壓范圍寬。但這兩個(gè)芯片在應用中必須對地址統一編碼,配對使用,而且需要通過(guò)改變硬件電路才能重新設置芯片地址;該編碼芯片的幀格式是固定的,不能隨意改動(dòng),而且編碼的脈沖寬度需要調節外接振蕩電阻大小才能改變。這些都給用戶(hù)的使用帶來(lái)了極大的不便。
1.2 軟件編解碼技術(shù)
在利用單片機和無(wú)線(xiàn)傳輸模塊進(jìn)行無(wú)線(xiàn)數據傳輸的過(guò)程中,使用軟件編解碼時(shí)通常會(huì )采用定時(shí)采樣的方式??傮w設計思想如下:發(fā)送端通過(guò)定時(shí)器延時(shí)產(chǎn)生不同寬度的脈沖或脈沖組合來(lái)實(shí)現對數據“0”和“1”的編碼。接收端對接收到的脈沖信號進(jìn)行定時(shí)采樣,然后通過(guò)計算識別出對應的數據信號。通過(guò)定時(shí)采樣的方式進(jìn)行解碼時(shí),對采樣頻率具有比較嚴格的要求。根據奈奎斯特理論,只有采樣頻率高于發(fā)射信號最高頻率的2倍時(shí),才能把數字信號準確還原[3]。但是中斷的響應與返回以及數據的判斷都會(huì )造成時(shí)間延遲,因此,發(fā)射信號的頻率不能太高,否則容易導致數據丟失。同時(shí)定時(shí)采樣需要多次調用中斷服務(wù)程序,增加了額外的時(shí)間開(kāi)銷(xiāo)。這些都會(huì )降低無(wú)線(xiàn)數據傳輸的速率。
2 改進(jìn)的編解碼技術(shù)
2.1 軟件編碼原理及程序流程
編碼就是用不同形式的碼型來(lái)表示二進(jìn)制的“1”和“0”。本文采用的編碼方式為脈沖—間隙編碼,即在下一脈沖前的暫停持續時(shí)間t表示二進(jìn)制符號“1”,而下一脈沖前的暫停持續時(shí)間2t表示二進(jìn)制符號“0”[4],脈沖—間隙編碼如圖1所示。發(fā)送端的信號分為同步信號、數據信號以及校驗和信號,無(wú)線(xiàn)發(fā)射電路如圖2所示。經(jīng)過(guò)編碼后的信號由單片機的P1.7引腳輸出到無(wú)線(xiàn)發(fā)射模塊,然后無(wú)線(xiàn)發(fā)射模塊將基帶信號經(jīng)高頻載波電路調制后,通過(guò)天線(xiàn)向空間輻射。
在發(fā)送端對數據進(jìn)行編碼時(shí),由于對發(fā)送的數據位、位數的判斷以及校驗和的生成所產(chǎn)生的延遲時(shí)間不超過(guò)70T,其中T為機器周期,因此,定義100T的高電平脈沖代表“1”,而200T的高電平脈沖代表“0”。在接收端進(jìn)行解碼時(shí),由INT1引腳上的下降沿觸發(fā)中斷并停止定時(shí)器計數,進(jìn)而識別數據信號,此過(guò)程中斷服務(wù)程序的延遲時(shí)間不超過(guò)50T。因此,設置數據位之間的低電平脈沖寬度為70T。為了不與數據信號混淆,將同步位定義為300T的高電平脈沖。本實(shí)驗采用的石英晶體的晶振頻率為12 MHz,因此一個(gè)機器周期為1 μs,故一個(gè)字節的傳輸速率最快為5 882 b/s,最慢為3 703 b/s。
軟件編碼程序流程圖如圖3所示,采用定時(shí)器0工作在方式1,即16位定時(shí)器工作方式,根據不同的輸出脈沖寬度需求向計數寄存器TH0和TL0中裝入不同的初始值。標志位flags_0用來(lái)區分高電平脈沖和低電平脈沖,當標志位flags_0為0時(shí)輸出兩個(gè)數據位之間的低電平脈沖,不為0時(shí)輸出高電平脈沖。標志位flags_1用來(lái)區分數據位和同步位,當flags_1為0時(shí)輸出數據位高電平脈沖,為1時(shí)輸出同步位高電平脈沖。在發(fā)送的過(guò)程中,每發(fā)送一個(gè)字節,就將該字節累加到校驗和中,當所有的數據發(fā)送完后就發(fā)送校驗和。
51單片機相關(guān)文章:51單片機教程
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理
評論