微控制器串列埠通訊及程式

2022-12-18 17:45:02 字數 2656 閱讀 6767

通訊協議:第1位元組,msb為1,為第1位元組標誌,第2位元組,msb為0,為非第一位元組標誌,其餘類推……,最後乙個位元組為前幾個位元組後7位的異或校驗和。測試方法:

可以將串列埠除錯助手的傳送框寫上95102025,並選上16進製制傳送,接收框選上16進製制顯示,如果每傳送一次就接收到95102025,說明測試成功。

//這是乙個微控制器c51串列埠接收(中斷)和傳送例程,可以用來測試51微控制器的中斷接收//和查詢傳送,另外我覺得傳送沒有必要用中斷,因為程式的開銷是一樣的

#include#include

#defineinbuf_len4//資料長度

unsignedcharinbuf1[inbuf_len];unsignedcharchecksum,count3;

bitread_flag=0;

voidinit_serialcomm(void)

//向串列埠傳送乙個字元

voidsend_char_com(unsignedcharch)

//向串列埠傳送乙個字串,strlen為該字串長度

voidsend_string_com(unsignedchar*str,unsignedintstrlen)while(k//串列埠接收中斷函式

voidserial()interrupt4using3else}}}

main()}

}序列通訊雖然有其自身優點:如適合長距離通訊,有一定的糾錯能力等,但並行通訊在短距離(數公尺範圍內)傳輸過程中的優點是顯而易見的。首先序列通訊時要設定串列埠資料,如:

串口號(com1、com2或者其他串列埠)、波特率、資料位數、停止位、校驗位等等。而且微控制器與pc機的串列埠資料必須一一對等,否則不能傳輸。而並行傳輸時,無需上述過程。

其次,pc機的串列埠電平值為+12v~-12v,微控制器是ttl電平(0~+5v),兩者必須要經過電平轉換晶元進行電平間的轉換。而進行並行傳輸時,由於雙方都是ttl電平,所以pc的並口可以與微控制器或其他晶元直接相連;另外,序列傳輸速度慢,每次只能傳送一位,而並行每次可以傳送8位,速度上的差異顯而易見。

而對於微控制器,串列埠(uart)是最常用的埠,尤其對於存在兩個或多個串列埠的微控制器來說,充分利用串列埠進行通訊是非常重要的。

輸出輸入介面的擴充套件

微控制器串列埠實現"並行"通訊,其原理就是將pc機傳過來的並行資料轉換成序列資料,送入微控制器的串列埠再由其進行相應處理。實質上就是乙個資料串-並、並-串轉換的過程。

pc的並口為乙個標準的25針插座,包含乙個八位二進位制資料埠(位址為378h),即第2腳到第9腳;乙個輸入控制埠(位址為379h),即第15腳、13腳、12腳、10腳、11腳,

其另外低三位無定義;乙個輸出控制口(位址為37ah),即第1腳、14腳、16腳、17腳,其另外高四位無定義。由此可見後面兩個埠都不是完全的8位。

輸出介面電路擴充套件

這裡使用常用的移位暫存器74ls164與微控制器的rxd口構成輸出介面電路。

雙列直插式74ls164引腳定義如圖1所示。

其中:qa~qh為並行輸出的資料,送入pc機並口378h埠(接收資料的8個資料位);微控制器串列埠輸出的資料從ab輸入;clr訊號用於清除輸出資料(通常用在移位完成時);內部資料移位依靠時鐘clk訊號上公升沿(由微控制器tx提供)控制。

表1是該晶元工作的真值表。

輸入介面電路擴充套件

使用常用的移位暫存器74ls165與微控制器的rxd口構成輸入介面電路。

雙列直插式74ls165引腳定義如圖2所示。

其中:a~h為並行輸入的資料,接pc機並口378h埠(接收資料的8個資料位);微控制器串列埠接收的資料(rxd埠)從qh輸入;sh/ld訊號用於重新裝載資料(通常用在資料完全移出後);ser是用於填充資料移出後的空位的邏輯電平訊號(邏輯"1"或"0");而資料是否移動由clkinh和clk聯合控制;內部資料移位依靠時鐘clk訊號(仍由微控制器的txd提供)上公升沿控制。

表2是該晶元工作的真值表。

其他軟硬體準備工作

輸入輸出控制埠的連線。將微控制器的p3.4、p3.

5口分別與pc並口的第15腳、第16腳相連。這樣在進行資料通訊時,兩者的握手訊號傳輸就解決了:當並口的第16腳置高電平時,用來通知微控制器接收pc機已準備就緒的資料,微控制器收到以後就可以進行相應控制,接收資料;當微控制器接收完資料時,會置p3.

4為高電平並被379h的第15腳接收,於是pc機準備傳送下乙個資料……微控制器向pc機傳送資料時,情況與此類似,由p3.4傳送訊號給pc機,而由p3.5接收pc機傳送過來的訊號。

軟體方面,由於是用串列埠進行"並行"通訊,因此就不能將串列埠的工作方式設定為方式0(移位暫存器輸入/輸出方式)以外的其他方式。還要注意此時串列埠的波特率固定為微控制器外接晶振頻率的1/12。序列資料通過rxd輸入/輸出,txd用於傳送控制輸入輸出資料移位的時鐘脈衝。

收發的資料為8位,低位在前。

設計例項

由於這一並行通訊實現方法非常簡單,所以對於有一定微控制器程式設計經驗的開發人員來說,只要硬體電路確定下來,軟體方面的問題就非常容易。圖3為電路原理圖。

需要說明的是:1、微控制器與pc機並口要共地;2、由於並行通訊存在應答訊號(本圖中由微控制器的p3.4、p3.5實現此功能),所以不會出現rxd埠資料混亂的情況。

小結現在微控制器的應用越來越廣泛,微控制器與pc之間的通訊是乙個非常重要的應用。如果單純的從實現微控制器與pc的並行通訊的角度來說,該實現方法並不是最簡單的。最簡單的方法是將pc的並口對應引腳與微控制器的p1口和p3口直接相連,然後軟體上實現。

本文的目的是充分利用微控制器的串列埠資源與pc機進行通訊。

51微控制器串列埠485通訊程式

以下為微控制器串列埠485通訊程式,從機程式 當然也適用於主機程式 主機傳送可以先用串列埠幫手軟體來除錯,經過keil uvision4實際測試,測試效果如結尾 所示,大部分來自網路,只是改了兩個地方 len sizeof dbuf if i errlen 1 幀超長,錯誤,返回,就可以實現了,其中...

微控制器模擬串列埠

189c51微控制器i o 口模擬序列通訊的實現方法 嚴天峰 目前普遍採用的mcs51和pic 系列微控制器通常只有乙個 或沒有 uart 非同步序列通訊介面,在應用系統中若需要多個序列介面 例如在多機通訊系統中,主機既要和從機通訊又要和終端通訊 的情況下,通常的方法是擴充套件一片8251或 825...

微控制器程式詳解

微控制器程式詳解.txt 根網線 盡賺了多少人的青春 有時候感動的就是身邊微不足道的小事。破碎不是最殘酷的最殘酷的是踩著這些碎片卻假裝不疼痛固執的尋找 將來就算我遇見再怎麼完美的人,都有乙個缺點,他不是你,下輩子要做男生,娶乙個像我這樣的女生。程式詳解 程式清單 共陽數碼管加減顯示 sp1 bit ...