基于51單片機多機通信的交通燈控制網(wǎng)絡(luò )設計
本文針對目前單片機書(shū)籍(包括教材)很少介紹多機通信的實(shí)現技術(shù)的情況,在交通燈控制系統的基礎上設計了一個(gè)交通燈控制網(wǎng)絡(luò )系統,以此為實(shí)例給出了單片機多機通信的解決方案。
1 單片機多機通信的基本原理
計算機之間的通信除了點(diǎn)對點(diǎn)通信外,還有一機對多機或多機之間的通信,構成計算機網(wǎng)絡(luò ),其中主從式多機通信是比較常用的一種方式。在主從式多機通信系統中,只有一臺主機,但可以有多臺從機。主機發(fā)送的信息可以傳送到各個(gè)從機或指定從機,從機發(fā)送的信息只能為主機所接收,各從機之間不能直接通信。主機通常由PC機擔任,也可用單片機擔當(本文研究的是用單片機作主機),從機通常為單片機。 MCS-51單片機串行口的方式2和方式3具有多機通信功能,可實(shí)現一臺主機和若干臺從機構成總線(xiàn)式的多機分布式系統,其連接方式如圖1所示。
在多機通信中,可充分利用MCS-51單片機的多機通信控制位SM2。用作主機的單片機的SM2應設定為0,作從機的SM2設定為1。主機發(fā)送并為從機接收的數據有兩類(lèi):一類(lèi)是地址,用于指示需要和主機通信的從機的地址,由串行數據第9位為“1”標志;另一類(lèi)是數據,由串行數據第9位為“0”標志。由于所有從機的SM2=1,故每個(gè)從機總能在RI=0時(shí)收到主機發(fā)來(lái)的地址(因為串行數據第9位為“1”),并進(jìn)入各自的中斷服務(wù)程序。在中斷服務(wù)程序中,每臺從機把接收到的從機地址和它的本機地址(系統設計時(shí)分配)進(jìn)行比較。所有比較不相等的從機均從各自的中斷服務(wù)程序中退出(SM2仍為1),只有比較地址相等的從機才是被主機尋址通信的從機。被尋址從機在程序中使SM2=0,以便接收隨之而來(lái)的數據或命令(RB8=0)。上述過(guò)程進(jìn)一步歸結如下:
(1)主機的SM2=0,所有從機的SM2=1,都處于監聽(tīng)狀態(tài)(只能接收地址幀),以便接收主機發(fā)來(lái)的地址。
(2)主機給從機發(fā)送一幀地址信息時(shí),其中的8位是地址,第9位為1表示是地址幀。
(3)所有從機在SM2=1、RB8=1且RI=0時(shí),接收到主機發(fā)來(lái)的從機地址幀后,進(jìn)行中斷處理,進(jìn)入相應的中斷服務(wù)程序,并和本機地址進(jìn)行比較以確認是否為被尋址從機。
(4)被尋址的從機通過(guò)指令清除SM2,使SM2=0進(jìn)入接收數據狀態(tài),可以接收主機隨后發(fā)送的數據(包括命令),并向主機發(fā)回接收到的從機地址作為響應信號,供主機核對,實(shí)現主機與被尋址從機的雙機通信;未被尋址從機保持SM2=1,并退出中斷服務(wù)程序。
(5)完成主機和被尋址從機之間的數據通信,被尋址從機在通信完成后重新使SM2=1,并退出中斷服務(wù)程序,恢復到監聽(tīng)狀態(tài),等待下次通信。
2 交通燈控制網(wǎng)絡(luò )硬件電路設計
2.1 硬件電路
城市交通控制系統是一個(gè)聯(lián)動(dòng)的系統,所有路口的交通燈控制系統由一臺中心主機控制,當某一路口將出現緊急情況時(shí)(如交通管制、交通堵塞、路段維修等),單擊中心主機的對應按鈕即可使該路口的所有紅燈亮,禁止所有普通車(chē)輛通行。本文利用Proteus軟件仿真設計了
一臺主機控制兩臺從機的主從式多機系統,實(shí)施時(shí)可以擴展到253臺主機,硬件電路如圖2所示。單片機U1為主機,U2、U3為從機,代表兩個(gè)路口的控制機,S1、S2為按鈕,分別與U1的P1.1、P1.0連接,當按下時(shí)分別控制兩個(gè)路口的交通信號燈為所有紅燈亮,表示該路口出現緊急情況。與主機U1相連的兩個(gè)BCD數碼管用于顯示從機接收到的響應幀,即出現緊急情況的路口地址號,如果接收到的響應幀傳送出現錯誤,與主機發(fā)出的地址號不同時(shí),這兩個(gè)數碼管顯示FF,當S1和S2沒(méi)有按下時(shí),這兩個(gè)數碼管也顯示FF。
由于串行口通信時(shí)傳輸的“0”或者“1”是通過(guò)相對于“地”的電壓區分的,因此使用串行口通信時(shí),必須將主、從機的“地”線(xiàn)相連以使其具有相同的電壓參考點(diǎn)。
評論