陳 剛,魯俊婷
(黃河水利職業(yè)技術(shù)學(xué)院,河南 開封 475004)
隨著經(jīng)濟、社會和科技的發(fā)展,單片機的應(yīng)用不斷深入社會的各個領(lǐng)域, 其中MCS-51 系列單片機更是以價格和功能的優(yōu)勢被廣泛用于各種控制系統(tǒng)之中。 本系統(tǒng)采用51 系列單片機AT89S51,構(gòu)成控制電路,用匯編語言編寫相應(yīng)的軟件程序,實用性強、操作簡單。 以下分功能模塊對其進行闡述。
所設(shè)計的交通燈管理系統(tǒng)能夠真實模擬雙干線交通信號燈的管理,設(shè)置兩組紅、黃、綠燈,并配置兩對LED 顯示器和一個緊急車輛放行按鈕。在正常情況下,兩個干線上的紅、黃、綠燈按四個狀態(tài)進行轉(zhuǎn)換,并以倒計時的方式將剩余時間顯示在與每個干線對應(yīng)的兩位LED 顯示器上。 4 個狀態(tài)分別用S0、S1、S2 和S3 表示。 其工作過程如下: 起始狀態(tài)S0 為東西向紅燈、 南北向綠燈, 兩個方向都從45s開始倒計時,持續(xù)40s 后轉(zhuǎn)為狀態(tài)S1:狀態(tài)S1 為東西向紅燈,南北向黃燈以1Hz 頻率閃爍。 狀態(tài)S1 持續(xù)5s 后轉(zhuǎn)為狀態(tài)S2。 東西向綠燈,南北向紅燈,兩個方向都從35s 開始倒計時。 持續(xù)30s 后再轉(zhuǎn)為狀態(tài)S3。狀態(tài)S3 為東西向黃燈以1Hz 頻率閃爍,南北向仍然為紅燈,狀態(tài)S3 持續(xù)5s 后,循環(huán)至狀態(tài)S0。兩個方向重新從45s 開始倒計時。
所設(shè)計的交通燈管理系統(tǒng)須滿足急救車優(yōu)先通過的要求。 有急救車到達時,兩向交通信號為全紅燈,以便讓急救車通過。 急救車通過后,交通燈恢復(fù)中斷前狀態(tài)。
本系統(tǒng)硬件電路的設(shè)計主要通過3 個大的電路模塊來實現(xiàn):紅綠燈控制電路、倒計時顯示電路。緊急狀態(tài)產(chǎn)生與解除電路。
關(guān)于紅綠燈控制電路的設(shè)計, 系統(tǒng)使用AT89S51 的P0 口驅(qū)動紅綠燈的亮滅。 P0.0 接?xùn)|西向紅燈,P0.1 接?xùn)|西向黃燈,P0.2 接?xùn)|西向綠燈,P0.5 接南北向紅燈,P0.6 接南北向黃燈,P0.7 接南北向綠燈。 LED1、LED2、LED3 分別為東西向的紅、黃、 綠燈,LED6、LED7、LED8 分別為南北向的紅、黃、綠燈。
關(guān)于倒計時顯示電路的設(shè)計,根據(jù)位選線與段選線連接方法的不同,LED 顯示器分為靜態(tài)顯示和動態(tài)顯示兩種方式。 段選線控制字符的選擇,位選線控制顯示位的亮、暗。 由于動態(tài)顯示的硬件資源利用率高,而且采用串行輸出,形式可以大大節(jié)省單片機的內(nèi)部資源, 所以系統(tǒng)采用動態(tài)顯示方式。串并轉(zhuǎn)換器采用74LS164, 在低電平時允許通過8mA 電流, 無需添加其他驅(qū)動電路。 74LS164 為串入/并出的移位寄存器, 并行數(shù)據(jù)輸出端Q0~Q7 通過限流電阻分別接到顯示器的字形口(a~dp);單片機的P1.0~P1.3 連接顯示器的字位口。 74LS164 的A、B 為串行數(shù)據(jù)輸入端, 連接單片機的P1.4;CLK為移位脈沖輸入端,連接單片機的P1.5。
關(guān)于緊急狀態(tài)產(chǎn)生與解除電路,我們選用兩個按鈕SW1 和SW2。 SW1 為緊急狀態(tài)產(chǎn)生按鈕,與單片機的P3.2 引腳連接;SW2 為緊急狀態(tài)解除按鈕,與單片機的P3.3 引腳連接。 當有緊急車輛要通過時,按下SW1,兩個方向紅燈同時點亮,倒計時時間停止。 當緊急車輛通過后,再按下SW2,則繼續(xù)緊急車輛通過前的狀態(tài)。
由此設(shè)計出交通燈管理系統(tǒng)電路 (如圖1 所示)。
圖1 交通燈管理系統(tǒng)電路圖Fig.1 Traffic light management system circuit diagram
表1 狀態(tài)控制碼Table 1 Status control code
本系統(tǒng)采用匯編語言編寫程序,編程方面需解決以下3 個方面問題。
由硬件電路圖可知, 單片機的P0 口連接發(fā)光二極管的陰極,所以通過編寫指令將狀態(tài)控制碼送往單片機的P0 口,即可實現(xiàn)4 種紅綠燈狀態(tài)。 表1 列出了狀態(tài)控制碼。
(1)倒計時時間控制。 將需要顯示的倒計時時間始終存放在單片機內(nèi)部RAM 的R3 中。利用單片機內(nèi)部定時器T0 進行定時, 使定時器工作在定時方式1,定時時間t 選為10ms。 當定時滿100 次時,說明1s 時間到,這時只需讓R3 中的倒計時數(shù)值減1 即可。
(2)顯示部分。 編寫相應(yīng)的顯示子程序,使兩組顯示器顯示出R3 中的倒計時時間。 并把顯示子程序放入定時器0 中斷子程序中。 這樣可以每10ms調(diào)用一次顯示子程序,使顯示器隨時顯示出倒計時時間。
本系統(tǒng)以按下緊急按鈕SW1 為中斷申請,表示有急救車通過。 這時兩向全為紅燈,倒計時時間停止。 按下解除按鈕SW2,中斷解除,返回原來的紅綠燈狀態(tài), 倒計時時間繼續(xù)計時。 狀態(tài)控制碼如表1所示。 由于緊急通車狀態(tài)的產(chǎn)生和解除是隨機的,所以對于緊急按鈕SW1 和解除按鈕SW2 的檢測不能間斷,因此,將這兩個按鈕的檢測程序放在定時器0 中斷子程序中,這樣每10ms 就會檢測一次中斷按鈕,達到了緊急通車狀態(tài)的控制要求。
通過以上分析,程序包含3 大功能模塊:主程序、定時器中斷子程序、動態(tài)顯示子程序。 其中主程序與定時器中斷子程序在時間上是同步運行的,動態(tài)顯示子程序的功能是顯示R3 中的倒計時時間,供定時器中斷子程序調(diào)用,結(jié)構(gòu)較為簡單。 以下給出主程序和定時器中斷子程序的流程圖。
圖2 主程序流程圖Fig.2 Main program flow
圖3 定時器斷子程序流程圖Fig.3 Timer interruption subroutine flow
本系統(tǒng)硬件電路簡單, 軟件程序采用匯編語言編寫,與硬件電路配合使用,更為高效。 在現(xiàn)有道路條件下,對于提高交通控制和管理水平,合理使用現(xiàn)有交通設(shè)施,充分發(fā)揮其能力,更加靈活有效地提高道路的利用率,有較高的指導(dǎo)作用,可廣泛用于實際的交通燈控制系統(tǒng)之中。
[1] 胡健. 單片機原理及接口技術(shù)[M]. 北京: 機械工業(yè)出版社,2005:144.
[2] 胡健. 單片機原理及接口技術(shù)實踐教程[M]. 北京:機械工業(yè)出版社,2005:22-23,163.
[3] 陶春鳴. 單片機實用技術(shù)[M]. 北京:人民郵電出版社,2008:118.