摘 要:主要講解了MCS-51單片機雙機系統的通信原理,對單片機的串行口進行了詳細的分析與介紹,通過發送與接收程序的分析,實現了51單片機的串口通信。
關鍵詞:單片機;接口;串行通信
1 概述
在工控系統和工程應用中,當需要實現主從節點間的控制時,常需要使用單片機的串口通信功能。因而主從式分布式系統成為現代工業廣泛應用的模式。它們大多由MCS-51單片機組成。由于單片機具有功能強、體積小、價格低廉、開發應用方便,能實現全雙工串行通訊的特點,在智能儀表、數據采集、工業控制等方面都有廣泛的應用。本文中兩塊實驗板的R1與L2、R2與L1、兩機的地線分別相連, 如圖1所示。
圖1 STC89C51
2 MCS-51串口介紹
2.1 串行接口數據緩沖器(SBUF)
SBUF是兩個在物理上獨立的接收、發送緩沖器,可同時發送、接收數據。通過指令來區別讀寫的是接收緩沖器還是發送緩沖器。串行口對外也有兩條獨立的收發信號線RxD(P3.0)、TxD(P3.1),可以同時發送、接收數據,實現全雙工。
2.2 串行口控制寄存器(PCON)
SCON寄存器用來控制串行口的工作方式和狀態,它可以按位尋址。在復位時所有位被清零,字節地址為98H。各位含義如下:
SM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應于工作方式0、1、2、3。串行接口工作方式特點見下表
SM2:多機通信控制位。
REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。
TB8:方式2或3時,TB8為要發送的第9位數據,根據需要由軟件置1或清0。
RB8:在方式2或3時,RB8位接收到的第9位數據,實際為主機發送的第9位數據TB8,使從機根據這一位來判斷主機發送的時呼叫地址還是要傳送的數據。
TI:發送中斷標志。用于指示一幀數據發送是否發送完畢。在方式0時,當串行發送第8位數據結束時,或在其他方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷請求。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。
RI:接收中斷標志。用于指示一幀數據發送是否接收完畢接。收完一幀數據后由硬件自動置1,并申請中斷。必須要軟件清零后才能繼續接收。
2.3 波特率發生器
波特率發生器用來控制串行通信的數據傳輸速率的,51系列單片機用定時器T1作為波特率發生器。
2.4 電源控制寄存器PCON
其最高位為SMOD,當SMOD=1時,波特率提高1倍。
2.5 波特率確定
在方式1下,串行口波特率由定時器T1的溢出率決定,通常為了計算方便,定時器T1采用方式2(20H),TH1和TL1為0FDH,若晶振頻率為11.0592,則波特率就是9600。
3 實驗程序
3.1 發送主程序
}
3.2 接收主程序
void main(){
//定時器、工作方式初始化
3.3 實驗結果
圖2所示為發送機、接收機顯示3的結果。
4 結束語
本文通過兩塊實驗板上的兩片STC89C52RC單片機實現信息的串行通信,講述了串行通信的概念、89C52單片機串行接口的功能及串行通信在雙機之間的實現。發送方采用查詢法,數據由串行口TXD輸出,經過傳輸線將數據傳送到接收端,接收方采用中斷法,實現單片機間的數據傳輸。