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