《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 單片機(jī)多機(jī)通信的交通燈設(shè)計
單片機(jī)多機(jī)通信的交通燈設(shè)計
摘要: 單片機(jī)利用串行口進(jìn)行多機(jī)通信是一個比較復(fù)雜的過程,,因此大多數(shù)單片機(jī)書籍沒有對這方面的內(nèi)容進(jìn)行介紹,,或者沒有提供實(shí)例,本文對MCS-51單片機(jī)的多機(jī)通信進(jìn)行一定的探討,,利用單片機(jī)多機(jī)通信對城市交通燈控制系統(tǒng)實(shí)現(xiàn)網(wǎng)絡(luò)化集中控制,,是一個很好的實(shí)例,,通過Proteus仿真運(yùn)行(其運(yùn)行情況如圖3所示),此方案切實(shí)可行,。
Abstract:
Key words :

    摘要:文章分析了MCS-51系列單片機(jī)" title="單片機(jī)">單片機(jī)利用串行口進(jìn)行多機(jī)通信" title="多機(jī)通信">多機(jī)通信的基本原理,,對利用單片機(jī)多機(jī)通信方式實(shí)現(xiàn)交通燈" title="交通燈">交通燈控制系統(tǒng)的網(wǎng)絡(luò)化控制進(jìn)行了研究,,設(shè)計了硬件電路圖及主、從機(jī)程序,,并在Proteus軟件上進(jìn)行了仿真運(yùn)行,。
關(guān)鍵詞:單片機(jī);多機(jī)通信,;交通燈系統(tǒng),;控制網(wǎng)絡(luò)

    由于微機(jī)技術(shù)的飛速發(fā)展和控制系統(tǒng)的復(fù)雜化,多機(jī)通信的應(yīng)用越來越廣泛,,特別在一些對工業(yè)過程的控制中,,多機(jī)通信已經(jīng)成為通信控制領(lǐng)域的主流通信方式。
    本文針對目前單片機(jī)書籍(包括教材)很少介紹多機(jī)通信的實(shí)現(xiàn)技術(shù)的情況,,在交通燈控制系統(tǒng)的基礎(chǔ)上設(shè)計了一個交通燈控制網(wǎng)絡(luò)系統(tǒng),,以此為實(shí)例給出了單片機(jī)多機(jī)通信的解決方案。

1 單片機(jī)多機(jī)通信的基本原理
    計算機(jī)之間的通信除了點(diǎn)對點(diǎn)通信外,,還有一機(jī)對多機(jī)或多機(jī)之間的通信,,構(gòu)成計算機(jī)網(wǎng)絡(luò),其中主從式多機(jī)通信是比較常用的一種方式,。在主從式多機(jī)通信系統(tǒng)中,,只有一臺主機(jī),但可以有多臺從機(jī),。主機(jī)發(fā)送的信息可以傳送到各個從機(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)一臺主機(jī)和若干臺從機(jī)構(gòu)成總線式的多機(jī)分布式系統(tǒng),,其連接方式如圖1所示。

a.JPG


    在多機(jī)通信中,,可充分利用MCS-51單片機(jī)的多機(jī)通信控制位SM2,。用作主機(jī)的單片機(jī)的SM2應(yīng)設(shè)定為0,作從機(jī)的SM2設(shè)定為1,。主機(jī)發(fā)送并為從機(jī)接收的數(shù)據(jù)有兩類:一類是地址,,用于指示需要和主機(jī)通信的從機(jī)的地址,由串行數(shù)據(jù)第9位為“1”標(biāo)志,;另一類是數(shù)據(jù),,由串行數(shù)據(jù)第9位為“0”標(biāo)志。由于所有從機(jī)的SM2=1,,故每個從機(jī)總能在RI=0時收到主機(jī)發(fā)來的地址(因?yàn)榇袛?shù)據(jù)第9位為“1”),,并進(jìn)入各自的中斷服務(wù)程序。在中斷服務(wù)程序中,,每臺從機(jī)把接收到的從機(jī)地址和它的本機(jī)地址(系統(tǒng)設(shè)計時分配)進(jìn)行比較,。所有比較不相等的從機(jī)均從各自的中斷服務(wù)程序中退出(SM2仍為1),只有比較地址相等的從機(jī)才是被主機(jī)尋址通信的從機(jī),。被尋址從機(jī)在程序中使SM2=0,,以便接收隨之而來的數(shù)據(jù)或命令(RB8=0)。上述過程進(jìn)一步歸結(jié)如下:
    (1)主機(jī)的SM2=0,,所有從機(jī)的SM2=1,,都處于監(jiān)聽狀態(tài)(只能接收地址幀),以便接收主機(jī)發(fā)來的地址,。
    (2)主機(jī)給從機(jī)發(fā)送一幀地址信息時,,其中的8位是地址,第9位為1表示是地址幀,。
    (3)所有從機(jī)在SM2=1,、RB8=1且RI=0時,接收到主機(jī)發(fā)來的從機(jī)地址幀后,,進(jìn)行中斷處理,,進(jìn)入相應(yīng)的中斷服務(wù)程序,并和本機(jī)地址進(jìn)行比較以確認(rèn)是否為被尋址從機(jī),。
    (4)被尋址的從機(jī)通過指令清除SM2,,使SM2=0進(jìn)入接收數(shù)據(jù)狀態(tài),可以接收主機(jī)隨后發(fā)送的數(shù)據(jù)(包括命令),,并向主機(jī)發(fā)回接收到的從機(jī)地址作為響應(yīng)信號,,供主機(jī)核對,實(shí)現(xiàn)主機(jī)與被尋址從機(jī)的雙機(jī)通信,;未被尋址從機(jī)保持SM2=1,,并退出中斷服務(wù)程序。
    (5)完成主機(jī)和被尋址從機(jī)之間的數(shù)據(jù)通信,,被尋址從機(jī)在通信完成后重新使SM2=1,,并退出中斷服務(wù)程序,恢復(fù)到監(jiān)聽狀態(tài),,等待下次通信,。

2 交通燈控制網(wǎng)絡(luò)硬件電路設(shè)計
2.1 硬件電路
    城市交通控制系統(tǒng)是一個聯(lián)動的系統(tǒng),所有路口的交通燈控制系統(tǒng)由一臺中心主機(jī)控制,,當(dāng)某一路口將出現(xiàn)緊急情況時(如交通管制,、交通堵塞、路段維修等),,單擊中心主機(jī)的對應(yīng)按鈕即可使該路口的所有紅燈亮,,禁止所有普通車輛通行,。本文利用Proteus軟件仿真設(shè)計了一臺主機(jī)控制兩臺從機(jī)的主從式多機(jī)系統(tǒng),實(shí)施時可以擴(kuò)展到253臺主機(jī),,硬件電路如圖2所示,。單片機(jī)U1為主機(jī),U2,、U3為從機(jī),,代表兩個路口的控制機(jī),S1,、S2為按鈕,,分別與U1的P1.1、P1.0連接,,當(dāng)按下時分別控制兩個路口的交通信號燈為所有紅燈亮,,表示該路口出現(xiàn)緊急情況。與主機(jī)U1相連的兩個BCD數(shù)碼管用于顯示從機(jī)接收到的響應(yīng)幀,,即出現(xiàn)緊急情況的路口地址號,,如果接收到的響應(yīng)幀傳送出現(xiàn)錯誤,與主機(jī)發(fā)出的地址號不同時,,這兩個數(shù)碼管顯示FF,,當(dāng)S1和S2沒有按下時,這兩個數(shù)碼管也顯示FF,。

b.JPG


    由于串行口通信時傳輸?shù)?ldquo;0”或者“1”是通過相對于“地”的電壓區(qū)分的,,因此使用串行口通信時,必須將主,、從機(jī)的“地”線相連以使其具有相同的電壓參考點(diǎn),。

2.2 通信協(xié)議
    多機(jī)通信是一個復(fù)雜的通信過程,必須有通信協(xié)議來保證多機(jī)通信的可操作性和操作秩序,,實(shí)現(xiàn)收/發(fā)雙方的響應(yīng)與協(xié)調(diào),。這些通信協(xié)議,至少應(yīng)包括從機(jī)的地址,、主機(jī)的控制命令,、從機(jī)的響應(yīng)幀格式和數(shù)據(jù)通信格式等的約定,本文建立交通燈控制網(wǎng)絡(luò)系統(tǒng)的通信協(xié)議如表1
所示,。

c.JPG



3 軟件程序的設(shè)計
3.1 主機(jī)程序設(shè)計
    主機(jī)主要負(fù)責(zé)呼叫從機(jī),,發(fā)送控制命令以及從機(jī)響應(yīng)幀的接收,數(shù)據(jù)的顯示等功能,。為了保證主,、從機(jī)之間握手的成功,主機(jī)采用查詢方式發(fā)送和接收數(shù)據(jù),,串行口的工作方式設(shè)置為方式2,,SMOD=0,。其流程圖如圖3所示。
    h.JPG
   e.JPG

 

f.JPG


3.2 從機(jī)程序設(shè)計
    從機(jī)循環(huán)運(yùn)行交通燈控制程序,,交通燈控制程序利用定時器/計數(shù)器0實(shí)現(xiàn)定時,,為了能正常和主機(jī)通信,從機(jī)的串行口也工作于方式2,,SMOD=0,以保持和主機(jī)相同的波特率,。由于主機(jī)呼叫從機(jī)時發(fā)送的地址幀與命令幀沒有重復(fù),,為了使程序簡單,本文針對從機(jī)接收到主機(jī)發(fā)來的數(shù)據(jù)后不通過第九位數(shù)據(jù)來判斷是地址幀還是命令幀,。對接收到的數(shù)據(jù)如果與本機(jī)地址相等則表明是地址幀,,立即向主機(jī)發(fā)送自己的地址作為響應(yīng)信號;如果是命令則按命令執(zhí)行相關(guān)操作(所有路口紅機(jī)亮或恢復(fù)交通燈信號),;如果既不與本機(jī)地址相等也不是兩個命令之一,,則認(rèn)為該數(shù)據(jù)不是發(fā)送給本機(jī)的,該機(jī)繼續(xù)監(jiān)聽,,從機(jī)U2串行口接收和發(fā)送數(shù)據(jù)中斷服務(wù)程序清單如下:
d.JPG
    i.JPG

4 結(jié)束語
    單片機(jī)利用串行口進(jìn)行多機(jī)通信是一個比較復(fù)雜的過程,,因此大多數(shù)單片機(jī)書籍沒有對這方面的內(nèi)容進(jìn)行介紹,或者沒有提供實(shí)例,,本文對MCS-51單片機(jī)的多機(jī)通信進(jìn)行一定的探討,,利用單片機(jī)多機(jī)通信對城市交通燈控制系統(tǒng)實(shí)現(xiàn)網(wǎng)絡(luò)化集中控制,是一個很好的實(shí)例,,通過Proteus仿真運(yùn)行(其運(yùn)行情況如圖3所示),,此方案切實(shí)可行。

j.JPG

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。