基于51單片機(jī)和nRF905的無線通信裝置的設(shè)計
摘要:文章設(shè)計了一種基于AT89S52單片機(jī)和nRF905的無線通信裝置。該裝置包含兩個完全相同的節(jié)點(diǎn)模塊,通過PC機(jī)上的客戶端軟件輸入需發(fā)送的文字信息,而接收到的文字信息會顯示在節(jié)點(diǎn)模塊自帶的液晶屏上。該裝置適用于小范圍的室內(nèi)無線點(diǎn)對點(diǎn)文字信息交換應(yīng)用。
關(guān)鍵詞:AT89S52;nRF905;無線通信
0 引言
隨著當(dāng)前網(wǎng)絡(luò)通信技術(shù)的高速發(fā)展,人們對各類場合下的無線通信的需求也隨之增高。在短距離低成本的無線通信的應(yīng)用中,基于51單片機(jī)以及Nordic公司的nRF905無線通信芯片的應(yīng)用方案被廣泛采用。比如,文獻(xiàn)設(shè)計了一種基于51單片機(jī)與nRF905收發(fā)器的無線智能控制交通燈,文獻(xiàn)設(shè)計了一種基于AT89S52和nRF905的無線遙控系統(tǒng)。
本文設(shè)計了一種基于AT89S52單片機(jī)和nRF905的無線通信裝置。該裝置適用于小范圍的室內(nèi)無線點(diǎn)對點(diǎn)文字信息交換應(yīng)用。
1 系統(tǒng)總體設(shè)計
本文設(shè)計的裝置是由發(fā)送和接收兩個完全相同的節(jié)點(diǎn)模塊構(gòu)成,圖1所示為系統(tǒng)示意圖。需發(fā)送的信息通過PC機(jī)上的客戶端軟件輸入,接收的信息顯示在節(jié)點(diǎn)模塊的液晶屏上。
節(jié)點(diǎn)模塊的主控芯片是ATMEL公司的AT89S52單片機(jī),具有高性能、低成本的特點(diǎn),十分適合本設(shè)計的應(yīng)用場合。節(jié)點(diǎn)模塊與PC上位機(jī)的通信采用RS232串口通信。
2 系統(tǒng)硬件設(shè)計
節(jié)點(diǎn)模塊的主控芯片選用AT89S52單片機(jī),其外圍電路有:RS232電平轉(zhuǎn)換電路、1602液晶顯示模塊、nRF905無線模塊以及蜂鳴器提示音電路等。節(jié)點(diǎn)模塊硬件框圖如圖2所示。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件的設(shè)計包括三個方面,一是PC上位機(jī)的客戶端軟件的設(shè)計,二是單片機(jī)接收與發(fā)送的軟件設(shè)計,三是nRF905驅(qū)動程序設(shè)計。
3.1 PC上位機(jī)客戶端軟件設(shè)計
PC機(jī)客戶端軟件采用VC++6.0環(huán)境下的MSComm控件進(jìn)行串口通信的開發(fā)。
為了解決輸入文字信息的不定長所導(dǎo)致的單片機(jī)串行接收與無線發(fā)送帶來的問題,本設(shè)計采用了對文字信息的空格填充的解決方案。即由客戶端軟件判別文字信息的長度,不足32字節(jié)的信息由程序自動填充空格。
發(fā)送按鈕響應(yīng)程序流程圖如下:
3.2 單片機(jī)端程序設(shè)計
單片機(jī)端的程序設(shè)計主要包括主程序和串口中斷服務(wù)子程序的設(shè)計,在主程序中循環(huán)檢測發(fā)送標(biāo)志位和接收就緒標(biāo)志位,一旦滿足相應(yīng)標(biāo)志位條件,便跳入執(zhí)行相應(yīng)的發(fā)送與接收程序。
為了實(shí)現(xiàn)裝置的雙向通信,無線發(fā)送采用中斷的方式,信息數(shù)據(jù)由上位機(jī)通過串口發(fā)送至單片機(jī)。單片機(jī)通過在中斷子程序中接收數(shù)據(jù),當(dāng)接收緩沖區(qū)的字符為32字節(jié)時,置位發(fā)送標(biāo)志位。主程序中一旦檢測到該發(fā)送標(biāo)志位,則調(diào)用發(fā)送程序?qū)⑿畔?shù)據(jù)通過無線模塊發(fā)送出去。
無線數(shù)據(jù)韻接收采用查詢方式,當(dāng)有接收到的數(shù)據(jù)時,nRF905將DR引腳信號疊高電平。由單片機(jī)循環(huán)檢測nRF905無線模塊的DR引腳,從而判斷是否收到信息。
3.2.1 單片機(jī)主程序設(shè)計
單片機(jī)主程序主要包含發(fā)送和接收兩部分,都采用標(biāo)志位查詢的方式作為進(jìn)入的條件。單片機(jī)主程序流程圖如圖4所示。
3.2.2 單片機(jī)中斷服務(wù)子程序設(shè)計
單片機(jī)中斷服務(wù)子程序主要完成上位機(jī)發(fā)送的數(shù)據(jù)接收功能,當(dāng)接收的數(shù)據(jù)滿足32字節(jié)的條件時,設(shè)置發(fā)送就緒標(biāo)志位。中斷服務(wù)子程序的流程圖如圖5所示。
3.3 nRF905無線模塊的驅(qū)動程序設(shè)計
在該裝置中,nRF905無線模塊的通信地址設(shè)計為4個字節(jié)的固定地址,接收與發(fā)送的地址一致。無線模塊配置頻段在430MHz,接收發(fā)送有效數(shù)據(jù)長度為32字節(jié)。
3.3.1 發(fā)送程序設(shè)計
無線模塊設(shè)置為不重發(fā)模式。在該模式下,可以通過讀取無線模塊的DR斷口的電平來判斷數(shù)據(jù)發(fā)送是否完畢。一旦數(shù)據(jù)發(fā)送完畢,可將TRX_CE引腳龜壓拉低,模塊進(jìn)入特機(jī)模式。
3.3.2 接收程序設(shè)計
當(dāng)nRF905的TX_EN設(shè)置為低,TRX_CE設(shè)置為高時,模塊處于接收模式。此時模塊監(jiān)聽無線信號,一旦數(shù)據(jù)接收完畢,會置位DR引腳,因此,單片機(jī)同樣可利用該引腳電平來判斷是否接收到了新的數(shù)據(jù)。
圖7接收程序流程圖
4 實(shí)驗(yàn)與結(jié)論
實(shí)驗(yàn)表明,本文設(shè)計的通信裝置可有效、可靠地相互傳遞文字信息。此裝置可用于室內(nèi)范圍內(nèi)的文字信息的交換,簡單方便,具有一定的實(shí)用價值。
由于本文設(shè)計的裝置的顯示部分采用的是英文字符型液晶,因此只能顯示英文或數(shù)字信息,不支持中文顯示,有望在后續(xù)設(shè)計中升級為帶中文字庫的液晶顯示。