PC機(jī)如何實(shí)現(xiàn)與單片機(jī)間串行通信
* PC機(jī)與單片機(jī)間串行通信的實(shí)現(xiàn)
* 設(shè)計(jì)方案的介紹
* 硬件設(shè)計(jì)
* 軟件設(shè)計(jì)
解決方案:
* 有線傳輸
* 無(wú)線傳輸
* 采用CCll00收發(fā)器通過(guò)串口實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的雙工無(wú)線通信
單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)單片機(jī),它是將中央處理器(CPU)、存儲(chǔ)器(RAM,ROM)、定時(shí)/計(jì)數(shù)器和各種接口電路都集成到一塊集成電路芯片上的微型計(jì)算機(jī)。隨著計(jì)算機(jī)技術(shù)尤其是單片機(jī)技術(shù)的發(fā)展,人們已越來(lái)越多地采用單片機(jī)來(lái)對(duì)一些工業(yè)控制系統(tǒng)中如溫度、濕度等參數(shù)進(jìn)行檢測(cè)和控制。PC機(jī)具有強(qiáng)大的監(jiān)控和管理功能,而單片機(jī)則具有快速及靈活的控制特點(diǎn),通過(guò)PC機(jī)的RS 232串行接口與外部設(shè)備進(jìn)行通信,是許多測(cè)控系統(tǒng)中常用的一種通信解決方案。因此如何實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通信具有非常重要的現(xiàn)實(shí)意義。針對(duì)一些遠(yuǎn)距離控制或者是危險(xiǎn)性比較高的數(shù)據(jù)采集和控制的應(yīng)用情況,本文主要介紹一種用雙工方式實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的串行通信。
1 設(shè)計(jì)方案
為了通過(guò)串口實(shí)現(xiàn)PC機(jī)與單片機(jī)間的雙工通信,可有如下設(shè)計(jì)方案。
(1)設(shè)計(jì)方案一:有線傳輸
此方案是指PC機(jī)與單片機(jī)之間通過(guò)電纜線傳輸數(shù)據(jù)。有線傳輸?shù)膬?yōu)勢(shì)是性能比較穩(wěn)定,調(diào)試簡(jiǎn)單,而不足之處在于它的應(yīng)用范圍不夠廣、性能不夠好,而且傳輸距離受限,這樣就大大影響了系統(tǒng)的應(yīng)用范圍。
(2)設(shè)計(jì)方案二:無(wú)線傳輸
此方案是指PC機(jī)與單片機(jī)通過(guò)無(wú)線信道傳輸數(shù)據(jù)。無(wú)線傳輸?shù)淖畲髢?yōu)勢(shì)是應(yīng)用范圍廣,受距離約束較小,在一定范圍內(nèi)可以不用考慮距離問(wèn)題,還可以應(yīng)用在一些高溫、危險(xiǎn)的場(chǎng)合。
因此,本文選用無(wú)線傳輸方案通過(guò)串口來(lái)實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的雙工通信。無(wú)線傳輸可以用不同的方式來(lái)實(shí)現(xiàn),常用的有紅外方式、藍(lán)牙方式,其他的還有射頻收發(fā)芯片如CC1100,PT2262/2272芯片等。
紅外通信是利用950 nm近紅外波段的紅外線作為傳遞信息的載體,通過(guò)紅外光在空中的傳播來(lái)傳遞信息,由紅外發(fā)射器和接收器實(shí)現(xiàn)。發(fā)射端將二進(jìn)制數(shù)字信號(hào)調(diào)制成某一頻率的脈沖序列,經(jīng)電光轉(zhuǎn)換電路,驅(qū)動(dòng)紅外發(fā)射管以光脈沖的形式發(fā)送到空中。接收端將接收到的光脈沖轉(zhuǎn)換成電信號(hào),再經(jīng)解調(diào)和譯碼后恢復(fù)出原二進(jìn)制數(shù)字信號(hào)。其最大優(yōu)點(diǎn)是:不易被人發(fā)現(xiàn)和截獲,保密性強(qiáng);幾乎不會(huì)受到電氣、天電、人為干擾,抗干擾性強(qiáng)。此外,紅外線通信機(jī)體積小、重量輕、結(jié)構(gòu)簡(jiǎn)單、價(jià)格低廉。不足之處在于它必須在視距內(nèi)通信,且傳播受天氣的影響。
CCll00是一種低成本真正單片的UHF收發(fā)器,為低功耗無(wú)線應(yīng)用而設(shè)計(jì)。CCll00構(gòu)建高性能射頻無(wú)線數(shù)據(jù)傳輸技術(shù)方案應(yīng)用無(wú)線通訊模塊采用透明模式進(jìn)行通訊,即所收即所發(fā),具有通訊距離遠(yuǎn)、低功耗、接口靈活等優(yōu)點(diǎn),使用者無(wú)需編碼和控制。CCll00通信距離(視距)大于300 m,而且能隔墻遙控,操作方便。
綜合上述分析,本文介紹的是采用CCll00收發(fā)器通過(guò)串口來(lái)實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的雙工無(wú)線通信。
2 硬件設(shè)計(jì)
2.1 總體框圖
此雙工無(wú)線通信系統(tǒng)的總體框圖如圖1所示。由于此系統(tǒng)可實(shí)現(xiàn)雙工通信,因此它可分為兩個(gè)通信過(guò)程:PC機(jī)(上位機(jī))通過(guò)上位機(jī)程序界面發(fā)送數(shù)據(jù)給單片機(jī),并送給液晶屏顯示相應(yīng)的數(shù)據(jù);鍵盤(pán)輸入數(shù)據(jù)傳給單片機(jī),接著發(fā)送給PC機(jī),并在PC機(jī)上位機(jī)程序界面上顯示出來(lái)。
2.2 實(shí)現(xiàn)電路圖
對(duì)應(yīng)于上述框圖的電路實(shí)物圖如圖2所示。其左右兩個(gè)電路分別對(duì)應(yīng)上述框圖中的左右兩個(gè)部分??傮w來(lái)說(shuō),它包括電平轉(zhuǎn)換電路、單片機(jī)處理部分、無(wú)線收發(fā)部分(CCll00收發(fā)器)、液晶顯示模塊和鍵盤(pán)輸入模塊五個(gè)部分。
(1)電平轉(zhuǎn)換電路
PC機(jī)的串行口采用的是標(biāo)準(zhǔn)的RS 232接口,單片機(jī)的串行口電平是FTL電平,而TTL電平特性與RS 232的電氣特性不匹配,因此為了使單片機(jī)的串行口能與RS 232接口通信,必須將串行口的輸入/輸出電平進(jìn)行轉(zhuǎn)換。通常用MAX232芯片來(lái)完成電平轉(zhuǎn)換。
(2)單片機(jī)部分
單片機(jī)部分包括單片機(jī)、復(fù)位電路和時(shí)鐘電路。它將串口送過(guò)來(lái)的數(shù)據(jù)傳輸給CC1100收發(fā)器,或者將CCll00收發(fā)器傳送過(guò)來(lái)的數(shù)據(jù)通過(guò)串口給PC機(jī)。單片機(jī)的復(fù)位電路和時(shí)鐘電路是單片機(jī)工作所必需的。
(3)無(wú)線收發(fā)部分
無(wú)線收發(fā)部分由CC1100收發(fā)器組成,它將接收到的數(shù)據(jù)通過(guò)天線發(fā)射出去或從天線接收發(fā)送過(guò)來(lái)的數(shù)據(jù)。
(4)液晶顯示模塊
此處選用LCDl602液晶模塊,其內(nèi)部的字符發(fā)生存儲(chǔ)器已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼。
(5)鍵盤(pán)輸入模塊
在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4×4=16個(gè)按鍵,比之直接將端口用于鍵盤(pán)多出了一倍。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是比較好的。矩陣式鍵盤(pán)的按鍵識(shí)別方法為行掃描法。此處選用4×4的矩陣鍵盤(pán)來(lái)輸入O~9的數(shù)字和a~f的字母。
3 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)方面包括上位機(jī)程序和單片機(jī)程序的設(shè)計(jì)。上位機(jī)程序要實(shí)現(xiàn)的功能是在電腦上顯示一個(gè)操作界面,它可代替串口調(diào)試工具。
3.1 上位機(jī)程序
上位機(jī)程序可以用VB,VC++等語(yǔ)言來(lái)編程,但本方案采用比較方便的C#來(lái)編程實(shí)現(xiàn),其流程圖如圖3所示。
2.2 實(shí)現(xiàn)電路圖
對(duì)應(yīng)于上述框圖的電路實(shí)物圖如圖2所示。其左右兩個(gè)電路分別對(duì)應(yīng)上述框圖中的左右兩個(gè)部分??傮w來(lái)說(shuō),它包括電平轉(zhuǎn)換電路、單片機(jī)處理部分、無(wú)線收發(fā)部分(CCll00收發(fā)器)、液晶顯示模塊和鍵盤(pán)輸入模塊五個(gè)部分。
(1)電平轉(zhuǎn)換電路
PC機(jī)的串行口采用的是標(biāo)準(zhǔn)的RS 232接口,單片機(jī)的串行口電平是FTL電平,而TTL電平特性與RS 232的電氣特性不匹配,因此為了使單片機(jī)的串行口能與RS 232接口通信,必須將串行口的輸入/輸出電平進(jìn)行轉(zhuǎn)換。通常用MAX232芯片來(lái)完成電平轉(zhuǎn)換。
(2)單片機(jī)部分
單片機(jī)部分包括單片機(jī)、復(fù)位電路和時(shí)鐘電路。它將串口送過(guò)來(lái)的數(shù)據(jù)傳輸給CC1100收發(fā)器,或者將CCll00收發(fā)器傳送過(guò)來(lái)的數(shù)據(jù)通過(guò)串口給PC機(jī)。單片機(jī)的復(fù)位電路和時(shí)鐘電路是單片機(jī)工作所必需的。
(3)無(wú)線收發(fā)部分
無(wú)線收發(fā)部分由CC1100收發(fā)器組成,它將接收到的數(shù)據(jù)通過(guò)天線發(fā)射出去或從天線接收發(fā)送過(guò)來(lái)的數(shù)據(jù)。
(4)液晶顯示模塊
此處選用LCDl602液晶模塊,其內(nèi)部的字符發(fā)生存儲(chǔ)器已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼。
(5)鍵盤(pán)輸入模塊
在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4×4=16個(gè)按鍵,比之直接將端口用于鍵盤(pán)多出了一倍。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是比較好的。矩陣式鍵盤(pán)的按鍵識(shí)別方法為行掃描法。此處選用4×4的矩陣鍵盤(pán)來(lái)輸入O~9的數(shù)字和a~f的字母。
3 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)方面包括上位機(jī)程序和單片機(jī)程序的設(shè)計(jì)。上位機(jī)程序要實(shí)現(xiàn)的功能是在電腦上顯示一個(gè)操作界面,它可代替串口調(diào)試工具。
3.1 上位機(jī)程序
上位機(jī)程序可以用VB,VC++等語(yǔ)言來(lái)編程,但本方案采用比較方便的C#來(lái)編程實(shí)現(xiàn),其流程圖如圖3所示。
3.2 單片機(jī)程序
單片機(jī)程序主要包括主程序、單片機(jī)發(fā)送子程序、單片機(jī)接收子程序、液晶顯示子程序、鍵盤(pán)輸入子程序五部分,均采用C語(yǔ)言進(jìn)行模塊化編程。由于篇幅原因,下面只給出了單片機(jī)發(fā)送子程序和接收子程序,如圖4,圖5所示。
4 測(cè)試結(jié)果
測(cè)試時(shí),連接好硬件打開(kāi)串行口COM1,并設(shè)波特率為9 600 b/s。單片機(jī)發(fā)送字符串“675”給PC機(jī),其液晶顯示如圖6所示,相應(yīng)的PC機(jī)界面顯示如圖7所示。PC機(jī)發(fā)送"69asd"給單片機(jī),液晶屏上即可接收到“69asd",如圖8,圖9所示。測(cè)試結(jié)果說(shuō)明:基于串行口的PC機(jī)與單片機(jī)之間的雙工無(wú)線通信是切實(shí)可行的,而且無(wú)線傳輸?shù)木嚯x至少可達(dá)到100 m。
5 結(jié)語(yǔ)
采用CCll00收發(fā)器通過(guò)串口實(shí)現(xiàn)了PC機(jī)與單片機(jī)之間的雙工無(wú)線通信。此系統(tǒng)可應(yīng)用到一些遠(yuǎn)距離控制或者是危險(xiǎn)性比較高的數(shù)據(jù)采集和控制的場(chǎng)合,用于采集溫度、濕度等參數(shù),還可擴(kuò)展到無(wú)線傳感器網(wǎng)絡(luò)領(lǐng)域,實(shí)現(xiàn)諸如無(wú)線抄表、智能家居等系統(tǒng)。
評(píng)論