PC機如何實現與微控制器間序列通訊

2021-06-03 10:29:43 字數 3929 閱讀 7715

中心議題:

*  pc機與微控制器間序列通訊的實現

*  設計方案的介紹

*  硬體設計

*  軟體設計

解決方案:

*  有線傳輸

*  無線傳輸

*  採用ccll00收發器通過串列埠實現pc機與微控制器之間的雙工無線通訊

單片微型計算機簡稱微控制器,它是將**處理器(cpu)、儲存器(ram,rom)、定時/計數器和各種介面電路都整合到一塊積體電路晶元上的微型計算機。隨著計算機技術尤其是微控制器技術的發展,人們已越來越多地採用微控制器來對一些工業控制系統中如溫度、濕度等引數進行檢測和控制。pc機具有強大的監控和管理功能,而微控制器則具有快速及靈活的控制特點,通過pc機的rs 232序列介面與外部裝置進行通訊,是許多測控系統中常用的一種通訊解決方案。因此如何實現pc機與微控制器之間的通訊具有非常重要的現實意義。針對一些遠距離控制或者是危險性比較高的資料採集和控制的應用情況,本文主要介紹一種用雙工方式實現pc機與微控制器之間的序列通訊。

1 設計方案

為了通過串列埠實現pc機與微控制器間的雙工通訊,可有如下設計方案。

(1)設計方案一:有線傳輸

此方案是指pc機與微控制器之間通過電纜線傳輸資料。有線傳輸的優勢是效能比較穩定,除錯簡單,而不足之處在於它的應用範圍不夠廣、效能不夠好,而且傳輸距離受限,這樣就大大影響了系統的應用範圍。

(2)設計方案二:無線傳輸

此方案是指pc機與微控制器通過無線通道傳輸資料。無線傳輸的最大優勢是應用範圍廣,受距離約束較小,在一定範圍內可以不用考慮距離問題,還可以應用在一些高溫、危險的場合。

因此,本文選用無線傳輸方案通過串列埠來實現pc機與微控制器之間的雙工通訊。無線傳輸可以用不同的方式來實現,常用的有紅外方式、藍芽方式,其他的還有射頻收發晶元如cc1100,pt2262/2272晶元等。

紅外通訊是利用950 nm近紅外波段的紅外線作為傳遞資訊的載體,通過紅外光在空中的傳播來傳遞資訊,由紅外發射器和接收器實現。發射端將二進位制數碼訊號調製成某一頻率的脈衝序列,經電光轉換電路,驅動紅外發射管以光脈衝的形式傳送到空中。接收端將接收到的光脈衝轉換成電訊號,再經解調和解碼後恢復出原二進位制數碼訊號。其最大優點是:不易被人發現和截獲,保密性強;幾乎不會受到電氣、天電、人為干擾,抗干擾性強。此外,紅外線通訊機體積小、重量輕、結構簡單、**低廉。不足之處在於它必須在視距內通訊,且傳播受天氣的影響。

ccll00是一種低成本真正單片的uhf收發器,為低功耗無線應用而設計。ccll00構建高效能射頻無線資料傳輸技術方案應用無線通訊模組採用透明模式進行通訊,即所收即所發,具有通訊距離遠、低功耗、介面靈活等優點,使用者無需編碼和控制。ccll00通訊距離(視距)大於300 m,而且能隔牆遙控,操作方便。

綜合上述分析,本文介紹的是採用ccll00收發器通過串列埠來實現pc機與微控制器之間的雙工無線通訊。

2 硬體設計

2.1 總體框圖

此雙工無線通訊系統的總體框圖如圖1所示。由於此系統可實現雙工通訊,因此它可分為兩個通訊過程:pc機(上位機)通過上位機程式介面傳送資料給微控制器,並送給液晶屏顯示相應的資料;鍵盤輸入資料傳給微控制器,接著傳送給pc機,並在pc機上位機程式介面上顯示出來。

2.2 實現電路圖

對應於上述框圖的電路實物圖如圖2所示。其左右兩個電路分別對應上述框圖中的左右兩個部分。總體來說,它包括電平轉換電路、微控制器處理部分、無線收發部分(ccll00收發器)、液晶顯示模組和鍵盤輸入模組五個部分。

(1)電平轉換電路

pc機的序列口採用的是標準的rs 232介面,微控制器的序列口電平是ftl電平,而ttl電平特性與rs 232的電氣特性不匹配,因此為了使微控制器的序列口能與rs 232介面通訊,必須將序列口的輸入/輸出電平進行轉換。通常用max232晶元來完成電平轉換。

(2)微控制器部分

微控制器部分包括微控制器、復位電路和時鐘電路。它將串列埠送過來的資料傳輸給cc1100收發器,或者將ccll00收發器傳送過來的資料通過串列埠給pc機。微控制器的復位電路和時鐘電路是微控制器工作所必需的。

(3)無線收發部分

無線收發部分由cc1100收發器組成,它將接收到的資料通過天線發射出去或從天線接收傳送過來的資料。

(4)液晶顯示模組

此處選用lcdl602液晶模組,其內部的字元發生儲存器已經儲存了160個不同的點陣字元圖形,這些字元有:阿拉伯數字、英文本母的大小寫、常用的符號和日文假名等,每乙個字元都有乙個固定的**。

(5)鍵盤輸入模組

在鍵盤中按鍵數量較多時,為了減少i/o口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過乙個按鍵加以連線。這樣,乙個埠(如p1口)就可以構成4×4=16個按鍵,比之直接將埠用於鍵盤多出了一倍。由此可見,在需要的鍵數比較多時,採用矩陣法來做鍵盤是比較好的。矩陣式鍵盤的按鍵識別方法為行掃瞄法。此處選用4×4的矩陣鍵盤來輸入o~9的數字和a~f的字母。

3 軟體設計

本系統的軟體設計方面包括上位機程式和微控制器程式的設計。上位機程式要實現的功能是在電腦上顯示乙個操作介面,它可代替串列埠除錯工具。

3.1 上位機程式

上位機程式可以用vb,vc++等語言來程式設計,但本方案採用比較方便的c#來程式設計實現,其流程圖如圖3所示。

2.2 實現電路圖

對應於上述框圖的電路實物圖如圖2所示。其左右兩個電路分別對應上述框圖中的左右兩個部分。總體來說,它包括電平轉換電路、微控制器處理部分、無線收發部分(ccll00收發器)、液晶顯示模組和鍵盤輸入模組五個部分。

(1)電平轉換電路

pc機的序列口採用的是標準的rs 232介面,微控制器的序列口電平是ftl電平,而ttl電平特性與rs 232的電氣特性不匹配,因此為了使微控制器的序列口能與rs 232介面通訊,必須將序列口的輸入/輸出電平進行轉換。通常用max232晶元來完成電平轉換。

(2)微控制器部分

微控制器部分包括微控制器、復位電路和時鐘電路。它將串列埠送過來的資料傳輸給cc1100收發器,或者將ccll00收發器傳送過來的資料通過串列埠給pc機。微控制器的復位電路和時鐘電路是微控制器工作所必需的。

(3)無線收發部分

無線收發部分由cc1100收發器組成,它將接收到的資料通過天線發射出去或從天線接收傳送過來的資料。

(4)液晶顯示模組

此處選用lcdl602液晶模組,其內部的字元發生儲存器已經儲存了160個不同的點陣字元圖形,這些字元有:阿拉伯數字、英文本母的大小寫、常用的符號和日文假名等,每乙個字元都有乙個固定的**。

(5)鍵盤輸入模組

在鍵盤中按鍵數量較多時,為了減少i/o口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過乙個按鍵加以連線。這樣,乙個埠(如p1口)就可以構成4×4=16個按鍵,比之直接將埠用於鍵盤多出了一倍。由此可見,在需要的鍵數比較多時,採用矩陣法來做鍵盤是比較好的。矩陣式鍵盤的按鍵識別方法為行掃瞄法。此處選用4×4的矩陣鍵盤來輸入o~9的數字和a~f的字母。

3 軟體設計

本系統的軟體設計方面包括上位機程式和微控制器程式的設計。上位機程式要實現的功能是在電腦上顯示乙個操作介面,它可代替串列埠除錯工具。

3.1 上位機程式

上位機程式可以用vb,vc++等語言來程式設計,但本方案採用比較方便的c#來程式設計實現,其流程圖如圖3所示。

3.2 微控制器程式

微控制器程式主要包括主程式、微控制器傳送子程式、微控制器接收子程式、液晶顯示子程式、鍵盤輸入子程式五部分,均採用c語言進行模組化程式設計。由於篇幅原因,下面只給出了微控制器傳送子程式和接收子程式,如圖4,圖5所示。

4 測試結果

測試時,連線好硬體開啟序列口com1,並設波特率為9 600 b/s。微控制器傳送字串「675」給pc機,其液晶顯示如圖6所示,相應的pc機介面顯示如圖7所示。pc機傳送"69asd"給微控制器,液晶屏上即可接收到「69asd",如圖8,圖9所示。測試結果說明:基於序列口的pc機與微控制器之間的雙工無線通訊是切實可行的,而且無線傳輸的距離至少可達到100 m。

5 結語

採用ccll00收發器通過串列埠實現了pc機與微控制器之間的雙工無線通訊。此系統可應用到一些遠距離控制或者是危險性比較高的資料採集和控制的場合,用於採集溫度、濕度等引數,還可擴充套件到無線感測器網路領域,實現諸如無線抄表、智慧型家居等系統。

微控制器 串列埠與PC通訊

先通過串列埠除錯工具即pc傳送字元給微控制器,微控制器接收資料後再發給pc,再次通過串列埠除錯工具觀察傳送結果,即實現了pc到微控制器的收發 由於本地 需要安裝虛擬串列埠,pc用com1口,mcu的compim設為com2,波特率均為9600 org 0000h ajmp main org 0023...

PC 機與微控制器通訊 RS232 協議

實驗任務 微控制器串列埠通訊的應用,通過串列埠,我們的個人電腦和微控制器系統進行通訊。個人電腦作為上位機,向下位機微控制器系統傳送十六進製制或者ascll碼,微控制器 系統接收後,用led顯示接收到的資料和向上位機發回原樣資料。實驗原理 rs 232是美國電子工業協會正式公布的序列匯流排標準,也是目...

PC端微控制器監視系統

我用的是串列埠傳輸,其實如果做成usb應該會更方便一點。我監視的點並不多,輸入16個,輸出16個,這樣我用了兩個16位變數就行了。uint16 t xstatus uint16 t ystatus 針對輸入的話我們可以直接讀,輸出呢?如果需要輸出的話就對ystatus進行位賦值,然後在乙個定時器1m...