《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于PICl6F877A的多機(jī)無線ASCII碼通信系統(tǒng)設(shè)計(jì)
基于PICl6F877A的多機(jī)無線ASCII碼通信系統(tǒng)設(shè)計(jì)
摘要: 現(xiàn)代通信技術(shù)的迅速發(fā)展使得許多應(yīng)用領(lǐng)域都采用無線的通信方式進(jìn)行數(shù)據(jù)傳輸,。編解碼芯片PT2262,、PT2272組成的電路,,由于具有體積小,、功耗低、功能強(qiáng),、成本低等特點(diǎn),廣泛應(yīng)用于各類的無線遙控器,、無線報(bào)警器以及玩具等其他小型電器裝置,。但是,這種電路極少用在多個(gè)字節(jié)數(shù)據(jù)的通信方面,,具有一定的局限性,。本文主要介紹利用433 MHz高頻發(fā)射模塊和接收模塊來制作多機(jī)無線ASCII碼格式的短信通信。該通信方式是在433MHz高頻發(fā)射模塊和接收模塊的基礎(chǔ)上自己定義無線傳輸協(xié)議,,實(shí)現(xiàn)任意兩機(jī)之間的多個(gè)字節(jié)數(shù)據(jù)通信,。
Abstract:
Key words :

現(xiàn)代通信" title="通信">通信技術(shù)的迅速發(fā)展使得許多應(yīng)用領(lǐng)域都采用無線的通信方式進(jìn)行數(shù)據(jù)傳輸,。編解碼芯片PT2262、PT2272組成的電路,,由于具有體積小,、功耗低、功能強(qiáng),、成本低等特點(diǎn),,廣泛應(yīng)用于各類的無線遙控器、無線報(bào)警器以及玩具等其他小型電器裝置,。但是,,這種電路極少用在多個(gè)字節(jié)數(shù)據(jù)的通信方面,具有一定的局限性,。本文主要介紹利用433 MHz高頻發(fā)射模塊和接收模塊來制作多機(jī)" title="多機(jī)">多機(jī)無線ASCII碼格式的短信通信,。該通信方式是在433MHz高頻發(fā)射模塊和接收模塊的基礎(chǔ)上自己定義無線傳輸協(xié)議,實(shí)現(xiàn)任意兩機(jī)之間的多個(gè)字節(jié)數(shù)據(jù)通信,。

1 硬件系統(tǒng)設(shè)計(jì)
本系統(tǒng)主要由PICl6F877A單片機(jī)構(gòu)成控制系統(tǒng),,周圍4個(gè)模塊分別是:按鍵輸入模塊、顯示輸出模塊,、接收模塊和發(fā)射模塊,。系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。


1.1 主機(jī)電路的設(shè)計(jì)
由于系統(tǒng)涉及的程序量比較大,,所以要求Flash程序存儲(chǔ)器的存儲(chǔ)量不能太?。粚?duì)發(fā)射和接收的短信進(jìn)行存儲(chǔ),,要用到EEPROM數(shù)據(jù)存儲(chǔ)器模塊,,EEPROM數(shù)據(jù)存儲(chǔ)器存儲(chǔ)的內(nèi)容掉電時(shí)不會(huì)丟失;接收解碼需要脈寬的捕捉和比較功能,,要用到捕捉/比較/脈寬調(diào)制CCP模塊,;發(fā)射、接收以及時(shí)鐘均要用到獨(dú)立的定時(shí)器,,所要求的定時(shí)器的個(gè)數(shù)不少于3個(gè),。基于設(shè)計(jì)需要,,采用Microchip公司的PICl6F877A芯片作為系統(tǒng)的主控制器,。該電路主要由主控芯片、晶體振蕩電路和在線仿真接口組成,,如圖2所示,。設(shè)計(jì)中使用MCLR、RB6,、RB7三個(gè)接口作為在線仿真接口,。



1.2 發(fā)射和接收電路的設(shè)計(jì)
采用433 MHz高頻發(fā)射和接收模塊,。433 MHz的高頻發(fā)射電路在控制腳為高電平時(shí)起振并發(fā)射等幅高頻信號(hào),當(dāng)控制腳為低電平時(shí)停止振蕩,。因此,,可以用控制腳對(duì)高頻電路完成幅度鍵控(ASK調(diào)制),相當(dāng)于調(diào)制度為100%的調(diào)幅,。當(dāng)接收模塊接收到433 MHz的等幅高頻信號(hào)時(shí),,信號(hào)腳就輸出高電平,否則輸出低電平,。所以接收信號(hào)腳的高低電平變化會(huì)與發(fā)射控制腳的高低電平變化相對(duì)應(yīng),。多個(gè)接收模塊可以同時(shí)接收到同一個(gè)發(fā)射模塊發(fā)射的信號(hào),可以實(shí)現(xiàn)一機(jī)發(fā)送,,多機(jī)同時(shí)接收,。圖3所示電路是高頻433 MHz載波的發(fā)射和接收模塊。433 MHz的高頻發(fā)射電路在控制腳B5為高平時(shí),,三級(jí)管T1導(dǎo)通,,T2射級(jí)接地起振并發(fā)射等幅高頻433 MHz的信號(hào);當(dāng)控制腳B5為低電平時(shí),,就停止振蕩,。因此,可以用控制腳B5對(duì)高頻電路完成幅度鍵控(ASK調(diào)制),,相當(dāng)于調(diào)制度為100%的調(diào)幅,。當(dāng)接收模塊接收到433 MHz的等幅高頻信號(hào)時(shí),信號(hào)腳就輸出高電平到C2口,,若未收到433 MHz的等幅高頻信號(hào)則輸出低電平,。所以接收信號(hào)腳的高低電平變化會(huì)與發(fā)射控制腳的高低電平變化相對(duì)應(yīng)。例如給B5引腳輸入圖4所示的波形,,那么在接收模塊的C2引腳上也將出現(xiàn)同樣的波形,。注意,B5和C2的控制信號(hào)分別由主控芯片PICl6F877A的RB5和RC2發(fā)出,。



1.3 液晶外圍控制電路的設(shè)計(jì)
采用諾基亞3310 LCD顯示模塊,。該LCD為84×48點(diǎn)陣的液晶屏,一屏可顯示4×7個(gè)(12×12點(diǎn)陣)漢字,,或6×14個(gè)(6×8點(diǎn)陣)英文,、數(shù)字、標(biāo)點(diǎn)符號(hào)等字符,。該液晶顯示器輕薄短小、低功耗電量,,常用于手機(jī)顯示,。液晶外圍電路如圖5所示,。

本設(shè)計(jì)中,諾基亞33lO LCD用3 V的電壓供電,。其中,,1引腳是電源腳,6引腳接地線,,2引腳為SCLK,,3引腳為SDIN。4引腳為數(shù)據(jù)/地址選擇端,,分別給4引腳高低電平,,可以控制單片機(jī)對(duì)諾基亞3310 LCD寫數(shù)據(jù)或者寫命令。5引腳為使能端,,低電平有效,。8引腳為復(fù)位端,低電平有效,。11引腳接背光燈電源的正級(jí),,12引腳接背光燈電源的控制級(jí)。9,、10引腳為諾基亞3310 LCD自帶的喇叭,,此喇叭用單片機(jī)來控制的聲音效果并不理想,所以改用直流自帶振蕩蜂鳴器,。為了避免蜂鳴器和背燈光工作時(shí)對(duì)液晶電源造成影響,,蜂鳴器和背燈光由5 V的電源來供電,與液晶電源分開,。

2 軟件系統(tǒng)設(shè)計(jì)
本系統(tǒng)在主程序中運(yùn)用模塊化結(jié)構(gòu),,使得各個(gè)模塊之間關(guān)系清晰明了。復(fù)位分為兩個(gè)部分,,以區(qū)分上電復(fù)位與非上電復(fù)位,,上電復(fù)位執(zhí)行上電復(fù)位初始化程序;運(yùn)用散轉(zhuǎn)結(jié)構(gòu),,再根據(jù)重要數(shù)據(jù)3比2表決,,實(shí)現(xiàn)無擾動(dòng)重入;所有控制量(開關(guān)量)和接收數(shù)據(jù)集中處理,,提高了處理效率,;特殊功能寄存器冗余重置,使整個(gè)系統(tǒng)更穩(wěn)定地工作,。主程序總流程如圖6所示,。



3 通信模塊功能及算法
本無線通信協(xié)議模仿OSI分層模型分為以下3層,各層之間相互獨(dú)立,靈活性好,,適應(yīng)性強(qiáng),。
(1)物理層
物理層處于最低層,其任務(wù)是傳送和接收比特流,。物理層關(guān)心的問題是:如何表示“1”和“O”,;如何排除干擾;傳輸是否在兩個(gè)方向上同時(shí)進(jìn)行等,。本設(shè)計(jì)中使用433 MHz高頻發(fā)射模塊和接收模塊作為無線通信橋梁,,固定的頻率限制了數(shù)據(jù)傳輸在同一時(shí)刻只能在一個(gè)方向上進(jìn)行,所以兩個(gè)方向上的數(shù)據(jù)傳輸要在交替發(fā)生的情況下才能完成,。
(2)數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層使用由物理層提供的服務(wù),,并通過添加錯(cuò)誤處理機(jī)制將簡單的數(shù)據(jù)鏈路改造成可靠的數(shù)據(jù)鏈路,再提供給應(yīng)用層,。數(shù)據(jù)鏈路層以碼字為單位傳輸數(shù)據(jù),,每一碼字包括數(shù)據(jù)和必要的校驗(yàn)信息。在此自定義為無線傳輸協(xié)議(Wireless Transmission Protocol,,WTP),。
(3)應(yīng)用層
應(yīng)用層處于最高層,它為應(yīng)用進(jìn)程提供了接入點(diǎn),,直接為用戶的應(yīng)用進(jìn)程提供服務(wù),。在此自定義為短信通信協(xié)議(Message Communication Protocol,MCP),。

3.1 定時(shí)器T2中斷模塊
中斷處理采用片內(nèi)CCPI中斷捕捉方式,,對(duì)外部接口引腳CCP上輸入的脈沖信號(hào)上升沿或下降沿進(jìn)行實(shí)時(shí)捕捉檢測。借助于這個(gè)強(qiáng)大的邊沿捕捉功能,,很容易對(duì)信號(hào)的高電平時(shí)間進(jìn)行檢測,,從而實(shí)現(xiàn)對(duì)WTP解讀功能。中斷服務(wù)程序流程如圖7所示,。



在解讀WTP過程中只要判斷出同步碼,,就對(duì)這一碼字進(jìn)行初始化,把脈沖個(gè)數(shù)計(jì)數(shù)器清O,;然后每捕捉到一個(gè)高電平,,脈沖個(gè)數(shù)計(jì)數(shù)器就加1并保存記錄該脈沖。捕捉到一個(gè)高電平后,,若高電平時(shí)間寬度為409.6~819.2μs,,就認(rèn)為是窄脈沖;高電平時(shí)間寬度為819.2~1 228.8μs,,就認(rèn)為是寬脈沖,;若高電平時(shí)間寬度小于409.6μs或大于1 228.8μs,則認(rèn)為該脈沖為干擾信號(hào),當(dāng)?shù)碗娖綍r(shí)間寬度大于819.2μs時(shí)也認(rèn)為是干擾信號(hào),。收到干擾信號(hào)后將脈沖個(gè)數(shù)計(jì)數(shù)器清0,,并把正在接收的碼字丟棄處理。當(dāng)接收到25個(gè)脈沖后對(duì)前面16個(gè)脈沖進(jìn)行處理,,若每個(gè)位碼不是由一個(gè)窄脈沖和一個(gè)寬脈沖組成的,就認(rèn)為接收正常,。接收正常后,,通過一個(gè)接收到數(shù)據(jù)的標(biāo)志位反饋到MCP(短信通信協(xié)議)上處理,通信協(xié)議會(huì)根據(jù)該標(biāo)志位到接收緩存中取剛剛接收到的數(shù)值,。
一個(gè)字節(jié)的數(shù)據(jù)波形如圖8所示,。根據(jù)無線傳輸協(xié)議定義,發(fā)送的一個(gè)完整的碼字由數(shù)據(jù)碼,、校驗(yàn)碼,、同步碼組成(圖中用虛線隔開這3個(gè)部分)。數(shù)據(jù)碼和校驗(yàn)碼都用寬度不同的脈沖來表示,,2個(gè)窄脈沖表示“0”,,2個(gè)寬脈沖表示“1”。每組字碼之間有同步碼隔開,,同步碼用一個(gè)窄脈沖和一個(gè)比較寬的低電平表示,。一個(gè)字碼由8位數(shù)據(jù)碼、4位校驗(yàn)碼和1個(gè)窄脈沖組成,。若每個(gè)位碼用2個(gè)脈沖來代表,,則一個(gè)碼字就是由25個(gè)脈沖組成。無線傳輸協(xié)議定義窄脈沖時(shí)間寬度為739.2μs,,寬脈沖時(shí)間寬度為1 156.8μs,,而脈沖之間的低電平時(shí)間統(tǒng)一為331.2μs,同步碼的低電平時(shí)間寬度為5 ms,。
圖8表示發(fā)送~個(gè)十六進(jìn)制數(shù)“57H”,,ASCII碼的“57H”表示字符“W”。圖中前16個(gè)脈沖表示“57H”的數(shù)據(jù)碼,,二進(jìn)制表示為“B01010111”,;中間8個(gè)脈沖表示校驗(yàn)碼,在該協(xié)議中校驗(yàn)碼固定定義為半個(gè)字節(jié)的“AH”,,二進(jìn)制表示為“B1010”,;同步碼則為一個(gè)時(shí)間寬度為739.2μS的窄脈沖和一個(gè)時(shí)間寬度為5 ms的低電平。


該協(xié)議中從以下幾個(gè)方面來提高抗干擾能力:
①每個(gè)碼字由25個(gè)脈沖組成,;
②每個(gè)位碼用2個(gè)脈沖來表示,;
③校驗(yàn)碼用“B1010”(“O”、“1”間隔)來排除干擾;
④若數(shù)據(jù)碼大于7FH,,則作為無效數(shù)據(jù)處理,。

3.2 發(fā)送短信模塊
這個(gè)模塊實(shí)現(xiàn)MCP功能,編輯短信采用ASCII碼格式,,短信內(nèi)容取值范圍為ASCII碼的20H~7AH,,ASCII碼內(nèi)容可以參照ASCII碼表。7CH~7FH作為特殊功能碼來處理,。短信內(nèi)容格式要求為3個(gè)字符的“名字+內(nèi)容”,。例如:要給名為LZX的通信器發(fā)短信,可寫成“LZX:……”,。應(yīng)用層的短信通信協(xié)議要求發(fā)送機(jī)發(fā)送短信順序是:
①發(fā)送短信開始碼(即7FH),;
②發(fā)送短信的頭3個(gè)字符(即接收者的名字);
③等待接收者的短信開始應(yīng)答信號(hào)(即7DH),;
④收到應(yīng)答信號(hào)后開始發(fā)送短信內(nèi)容,;
⑤短信內(nèi)容發(fā)完后發(fā)短信結(jié)束碼(即7EH);
⑥等待接收者的短信結(jié)束應(yīng)答信號(hào)(即7CH),。
由于是無線發(fā)送與接收,,有時(shí)會(huì)接收不到信號(hào),所以當(dāng)沒有收到短信開始應(yīng)答信號(hào)時(shí)就從第一步再開始執(zhí)行,。若執(zhí)行8次依舊沒有收到應(yīng)答信號(hào),,就得出“無此人發(fā)送失敗”的結(jié)果。若沒有收到短信結(jié)束應(yīng)答信號(hào),,就得出“發(fā)送中止失敗”的結(jié)果,,否則就顯示“對(duì)方已收到”。
因?yàn)闊o線發(fā)射的特點(diǎn),,第一組字碼非常容易受零電平干擾,,往往會(huì)產(chǎn)生誤碼,所以剛開始發(fā)射的短信開始碼一般要發(fā)2~3次,。如圖9所示,,發(fā)送了5個(gè)碼字的數(shù)據(jù):7FH,7FH,,57H,,44H,58H(分別為開始碼,、開始碼,、W、D,、X,,其中“WDX"’為萬能名),。然后,等待接收者的短信開始應(yīng)答信號(hào)再發(fā)短信內(nèi)容,。


3.3 接收短信模塊
在這個(gè)模塊中實(shí)現(xiàn)對(duì)MCP解讀功能,。根據(jù)MCP,在解讀中只要判斷出接收到短信開始碼,,就將收短信的標(biāo)志位置1,,并開始設(shè)置一個(gè)通信超時(shí)值,然后繼續(xù)接收下3個(gè)字符再與本身名字或萬能名比較,。應(yīng)用層的短信通信協(xié)議要求接收機(jī)接收短信順序是:
①一旦接收到短信開始碼就進(jìn)入接收短信,;
②接收3個(gè)字符后與本身名或萬能名比較,若同名就反饋應(yīng)答信號(hào),,否則返回到①;
③繼續(xù)接收短信內(nèi)容,;
④接收到結(jié)束碼后反饋應(yīng)答信號(hào),,若沒收到結(jié)束碼且通信超時(shí)則返回到①。
在任何狀態(tài)收到短信的結(jié)束碼后,,都會(huì)在液晶顯示屏的第一行顯示“receive a mess”,,并以聲、光形式提示收到短信,,由用戶手動(dòng)查閱新的短信,。

3. 4編輯短信模塊
這個(gè)模塊實(shí)現(xiàn)對(duì)短信的編輯,類似于手機(jī)編輯短信的模式,;有單字刪除鍵,、快速刪除鍵、全部清除鍵,、標(biāo)點(diǎn)符號(hào)鍵,、輸入狀態(tài)大小寫字母或數(shù)字的切換鍵,短信尾部可顯示光標(biāo),。因?yàn)槭芤壕聊凰?,?guī)定一條短信內(nèi)容長度為70個(gè)字符,編輯時(shí)限制字?jǐn)?shù)為67個(gè)字符,,發(fā)送時(shí)軟件上自動(dòng)在短信尾部添加本機(jī)名并發(fā)送,。液晶屏幕第一行顯示正在編輯狀態(tài)、現(xiàn)在的時(shí)間和大小寫輸入狀態(tài),。在該模塊中,,主要是要定位好顯示和編輯指針,然后對(duì)各個(gè)按鍵做處理,。

結(jié) 語
本文闡述的設(shè)計(jì)方法集編碼和解碼技術(shù),、通信協(xié)議技術(shù),、抗干擾技術(shù)、編輯短信技術(shù),、液晶點(diǎn)陣顯示技術(shù)于一體,。實(shí)現(xiàn)任意兩機(jī)之間可以互發(fā)70個(gè)ASCII碼字符的短信,可以像普通手機(jī)一樣編輯短信,,機(jī)子可以由用戶命名以區(qū)別其他機(jī)子,,實(shí)現(xiàn)一機(jī)對(duì)一機(jī)的通信,也可以用萬能名(“WDX”)實(shí)現(xiàn)一機(jī)對(duì)多機(jī)的通信,??梢源鎯?chǔ)一條發(fā)送出去的短信,也可以存儲(chǔ)一條剛接收到的短信和舊的短信,。整個(gè)系統(tǒng)人機(jī)交互界面友好,,類似于普通手機(jī)系統(tǒng),有操作提示,,易于操作,。本設(shè)計(jì)中采用分層的協(xié)議可以很容易地把無線通信模塊用其他性能更好的無線模塊替換。

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