王曉萍,陳嫄嫄
(1.十堰職業(yè)技術(shù)學(xué)院機(jī)電工程系;2.十堰市第十三中學(xué)數(shù)學(xué)組,湖北十堰442000)
隨著大規(guī)模集成電路的發(fā)展,微型計(jì)算機(jī)的性價(jià)比大為提高,因而應(yīng)用也越來越廣泛。單片機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,主要用在各種自動控制系統(tǒng)中。在自動控制系統(tǒng)中,單片機(jī)從外電路采集信息,再對采集到的信息進(jìn)行分析、處理,然后輸出相應(yīng)的控制信號對外部電路進(jìn)行控制。
本文就十字路口的交通燈控制系統(tǒng)為例,介紹單片機(jī)在開環(huán)控制系統(tǒng)中的控制方法。十字路口交通燈設(shè)計(jì)方案如圖1所示。
圖1 十字路口的交通燈控制
(1)縱向(A向)與橫向(B向)的交通燈定時(shí)為60秒交換紅綠色一次;
(2)燈光有紅、黃、綠三種顏色(圖1中的R,O, G),每次紅綠燈交換時(shí)要求在黃燈停留3秒鐘;
(3)一路在60秒內(nèi)過車完后超過6秒,無車?yán)^續(xù)過時(shí),如另外一路有車在等待,則自動提前交換燈色,交換過程也得在黃燈處停留3秒;
(4)在緊急車輛(如消防車、救護(hù)車、警車等)通過時(shí),四周街口都顯示紅燈,其他車輛不得通行,只允許緊急車輛通過,緊急車輛通過后,交通燈自動恢復(fù)原來的狀態(tài)。
雖然還可以對控制系統(tǒng)提出更多的要求,但是我這里提出的四點(diǎn)基本要求已經(jīng)足夠能反映出交通燈控制問題對單片機(jī)提出的方式是什么。這種控制方式具有以下幾個(gè)特點(diǎn):
(1)這是沒有反饋的開環(huán)控制系統(tǒng)[1]。
(2)輸入和輸出都是開關(guān)量。圖1中的車輛檢測傳感器(A1,A2以及B1,B2)是光電開關(guān)式的,因此送入單片機(jī)的信息是開關(guān)量;單片機(jī)對交通燈的控制是通過繼電器的,所以也是開關(guān)量輸出。
(3)程序執(zhí)行中有中斷響應(yīng)功能。就是說一個(gè)方向的車輛能夠申請另一個(gè)方向中斷其綠燈而讓自己方向的車輛通行。中斷程序的響應(yīng)條件是,被請求的這一方向已經(jīng)在6秒鐘內(nèi)沒有車輛通過。
(4)有非屏蔽中斷響應(yīng)功能。圖1中J為緊急測量檢測傳感器,當(dāng)檢測到有緊急車輛要通過的信號時(shí),立即發(fā)出開關(guān)量形式的緊急中斷信號。這是最優(yōu)先級的中斷形式,即非屏蔽中斷。
圖2為系統(tǒng)的計(jì)算機(jī)控制硬件結(jié)構(gòu)示意圖,下面簡單介紹各部分的功能:
圖2 交通燈控制系統(tǒng)硬件圖
(1)CPU為控制系統(tǒng)的核心部件,它負(fù)責(zé)執(zhí)行程序,接受輸入信號和發(fā)出控制信號;
(2)ROM為只讀存儲器。它內(nèi)部存放已經(jīng)由廠家編制好的用來協(xié)調(diào)單片機(jī)內(nèi)部各個(gè)組件之間的運(yùn)行的監(jiān)控程序;
(3)RAM是隨機(jī)讀寫存儲器。用來存放用戶編制的控制交通燈的程序;
(4)LED為發(fā)光二極管顯示器。在編制程序時(shí),它可以幫助用戶觀察存儲器中所顯示的內(nèi)容是否符合要求;
(5)8255A芯片是并行輸入/輸出接口,使用其中的PA口和PB口,它們都有8個(gè)并行引出線作為輸入和輸出的端線[2];
(6)REL為繼電器板。其中有6個(gè)繼電器接PA口的6條輸出線,用于控制A向和B向的交通燈;
(7)GB或門板是一個(gè)門電路組件,其中裝有兩個(gè)或門,分別檢測A向和B向的狀態(tài),輸入與輸出的關(guān)系是:
A1+A2=A
B1+B2=B
A1和A2分別存放A向兩個(gè)街口的檢測器,只要其中一個(gè)為1(有車要通過),則A為1,即通知計(jì)算機(jī)A向有車要求通過。
B1和B2存放B向兩個(gè)街口的檢測器,作用與上面相同。
(8)J為4個(gè)街口有緊急車輛通過的公共輸入端口。
開始時(shí)設(shè)A向的綠燈亮,A向通行,B向不通, B向紅燈亮。60秒后自動轉(zhuǎn)為B向綠燈亮(B向通行),A向紅燈亮(A向不通行)。這是在A、B兩個(gè)方向都很頻繁通車的正常運(yùn)行情況。
如果在A向綠燈亮而B向紅燈亮?xí)r,A向在6秒鐘內(nèi)沒有檢測到車輛通行,如果同時(shí)檢測到B向有在等待通過的車輛,則使程序跳轉(zhuǎn),燈光自動按次序改變:
A向綠燈滅而B向紅燈滅;
A向黃燈和B向黃燈亮3秒;
A向紅燈亮而B向綠燈亮,同時(shí)A、B向黃燈滅。
此時(shí),B向車輛通行,程序正常循環(huán),即60秒后再自動轉(zhuǎn)為A向車輛通行。在程序正常循環(huán)的過程中,如果突然來了緊急車輛,不論其方向是否與正在運(yùn)行的方向相同,則都使程序跳轉(zhuǎn)至讓緊急車輛通行的子程序中去。這時(shí)沒有黃燈轉(zhuǎn)換,A、B方向直接亮起紅燈,禁止一般車輛繼續(xù)通行。
根據(jù)控制過程的燈色配置,可以將燈色狀態(tài)歸納成4個(gè)模式(PAD),見表1
表1 紅燈配置模式
根據(jù)上面設(shè)計(jì)的交通規(guī)則,可以設(shè)計(jì)出下面的流程圖:
圖3 系統(tǒng)軟件流程圖
程序開始后,就對A向進(jìn)行測試,如果A=1,表示A向有車要求通過,則程序轉(zhuǎn)至CH K1端并且輸出燈色模式ZA;否則轉(zhuǎn)至CHK3并且輸出燈色模式ZB。
如果A、B向都沒有車輛通過時(shí),則對CH K0和CH K2進(jìn)行循環(huán)測試,同時(shí)維持原來的輸出狀態(tài)不變。在循環(huán)測試的過程中,如果檢測到某一方向有車通過,則A(或者B)=1,其控制流程為圖中的左半部分(或者右半部分)。當(dāng)有緊急車輛通過時(shí), CPU的非屏蔽引腳NMI為低電平,則進(jìn)入緊急車輛程序。緊急車輛通過以后,程序再從“開始”方框進(jìn)入控制流程。
以上討論對于不同的單片機(jī)系列都具有一定的參考價(jià)值,具體選用某一系列型號的單片機(jī)時(shí),只要根據(jù)軟件系統(tǒng)的設(shè)計(jì)編寫出相應(yīng)的匯編語言程序就可以實(shí)現(xiàn)對交通燈的控制,對于單片機(jī)應(yīng)用方面的學(xué)習(xí)也具有一定的指導(dǎo)意義。
[1]俞國亮.MC51單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2008:424-428.
[2]李繼燦.新編16/32位微型計(jì)算機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2006:262-269.