郝文延
(長治醫(yī)學院生物醫(yī)學工程系,山西長治 046000)
隨著各種車輛的增多,經常遇到交通堵塞問題,作為交通控制主要工具的交通燈,扮演著重要的角色[1],本文設計了一種交通燈控制系統(tǒng)綜合實驗,該系統(tǒng)包括:主控制器AT89S52、鍵盤模塊、數碼管顯示模塊、LED燈模塊等,為使學習能綜合練習從輸入到輸出的完整過程。系統(tǒng)中可采用主控器的外部中斷功能、定時中斷功能、動態(tài)掃描功能等,這些功能放入一個程序中,可使學習者能更深刻地理解它們的實際應用。
(1)通過學習該實驗,掌握單片機并行口傳輸數據的方法,以控制數碼管和發(fā)光二極管的亮滅。(2)掌握用動態(tài)掃描方法解決多位LED共用一個P口顯示的問題。(3)通過單片機程序的編寫,熟練掌握計數器/定時器和中斷的使用方法。(4)通過系統(tǒng)的硬件設計,掌握驅動芯片的使用及數碼管的連接,將所學的電路理論聯系到實踐中去。
系統(tǒng)主要由單片機最小系統(tǒng)、功能鍵模塊、特殊事件處理模塊、接口電路、驅動電路及LED顯示模塊組成。其中,單片機為系統(tǒng)的主控部件,用以控制其他模塊協調工作,文中選擇AT89S52為主控芯片[2]。LED顯示模塊用以顯示各車道的通行情況及時間(紅燈表示該車道禁止通行;綠燈表示該車道允許通行,黃燈為中間過渡時間);驅動電路用以驅動LED和數碼管工作;特殊事件處理模塊以外部中斷方式進入;接口電路則起到各模塊間的連接作用,以使整個系統(tǒng)正常工作。模擬交通燈控制系統(tǒng)的硬件框圖如圖1所示。
(1)LED板模塊。由于交通實際情況是右轉不受紅綠燈限制,車輛直行與人行道的直行一致,因此該實驗設計每塊LED板包含一個兩位數碼管U1、6個LED燈D1~D6,其中,6個 LED燈排成兩行,每行有紅(R)、黃(Y)、綠(G)3個燈,上面一行指示車輛和人行的直行(S)通行,下面一行指示車輛的左轉(L)通行。6個LED的陰極連接到一個公共段G1上,當G1為低電平,a為高電平時就可以點亮D1;同樣,若要點亮D6,只要使G1為低電平,f為高電平即可。
圖1 交通燈控制系統(tǒng)的硬件框圖
(2)驅動電路。ULN2003是常見的驅動芯片,一片可提供8路驅動信號,兩片ULN2003共16路,用于驅動8位數碼管及4組2×3LED燈的陰極[3],其中U2為LED燈的陰極驅動芯片,U3為數碼管的驅動芯片;8個三極管Q1~Q8組成的共集電極電路用于驅動8位數碼管的段及LED燈的陽極。
(3)單片機接口電路。系統(tǒng)中的單片機選擇AT89S52芯片,對交通燈的控制主要用其中的定時器完成,一方面要完成對各模塊的控制,另一方面是協調好各模塊的時序及口線沖突問題。如圖1所示,P1為數碼管段碼和LED燈陽極的控制口,P0和P2分別為數碼管和LED燈的位選信號控制口。
(4)按鍵模塊。圖1中,在P3口的P3.2~P3.6引腳各裝有一個按鍵K1~K5,其中,K1用于外部中斷0發(fā)出一單脈沖向CPU申請中斷,K2用于外部中斷1發(fā)出一單脈沖向CPU申請中斷進行模式選擇,K3~K5是設置倒計時時間的功能鍵,K3用于數碼管的換位,K4用于進行加1操作,K5用于確認操作。
系統(tǒng)分3種工作模式:正常模式、特殊事件模式和時間設置模式[4],并且通過圖1中K1、K2按鈕可實現模式選擇。交通燈的主要狀態(tài)示意圖,如圖2所示,南北方向交通燈亮滅順序及時間長短如圖3所示。
圖2 交通燈主要狀態(tài)示意圖
圖3 南北方向交通燈亮滅順序及時間長短
(1)正常模式。
狀態(tài)1 如圖2程序開始運行先南北段通行60 s,其中車輛和人行道的直行通行40 s,數碼管顯示時間40 s,此時南北段直行通行綠燈亮(SG)、左轉紅燈亮(LR),東西段直行左轉紅燈都亮60 s,同時南北段和東西段方向的數碼管分別從40 s和60 s開始倒計時。
狀態(tài)2 南北段直行倒計時至最后5 s時,直行綠燈同時黃燈閃爍(SG SY);左轉紅燈同時黃燈閃爍(LR LY),如圖3所示。
狀態(tài)3 如圖2所示,南北段直行倒計時為0時,數碼管顯示時間從20 s開始倒計時,直行通行紅燈亮(SR)、左轉綠燈亮(LG),表示禁止車輛和人的直行,允許左轉,左轉通行20 s,東西段紅燈繼續(xù)倒計時。
狀態(tài)4 南北段左轉倒計時至最后5 s時,直行紅燈繼續(xù)亮(SR),左轉綠燈同時黃燈閃爍(LG LY),如圖3所示。
狀態(tài)5 南北段左轉倒計時為0時,數碼管顯示時間從60 s開始倒計時,直行紅燈亮(SR)、左轉紅燈亮(LR),表示禁止南北段的直行和左轉。東西段狀態(tài)與南北段交替,開始允許直行通行40 s后左轉通行20 s,再循環(huán)至狀態(tài)1。
(2)特殊事件模式。特殊事件指臨時需緊急通行的事件,比如急救車、消防車、警車等。此時,應使東西南北4個方向全亮紅燈,并延時10 s,以便特殊事件得到解決。
(3)時間設置模式。如果某路段的時間初始值與該路段的車輛通行狀況不符,可按下中斷鍵進入時間設置模式,對該路段各個路口的直行、左轉時間長度進行設置。
軟件設計主要用C語言編程,總程序分為3部分:主程序;顯示控制、狀態(tài)處理等子程序;定時、特殊事件和時間設置等中斷處理程序[5]。
(1)主程序流程。系統(tǒng)以正常狀態(tài)下交通信號燈各狀態(tài)的循環(huán)顯示為主程序,如圖4所示。在主程序中,調用數碼管倒計時子程序和中斷延時以實現各種交通狀態(tài)。
圖4 主程序流程圖
(2)顯示控制。數碼管采用動態(tài)方式顯示交通指示燈的計時時間,查詢判斷是否計滿50 ms,記滿后需重置計數初值,循環(huán)顯示20次直至完成定時1 s,倒計時時間減1。流程如圖5所示。
圖5 顯示控制流程圖
(3)特殊事件通行控制。發(fā)生特殊事件時通行受特殊事件強行通過按鍵控制,將此按鍵按下,無論原來信號燈的狀態(tài)如何,一律強制4個路口紅燈點亮,禁止其他車輛通行[6],使特種車放行10 s,其流程如圖6所示。
圖6 緊急事件處理流程
設計中學習者首先需要在KeilC51環(huán)境下對編寫的程序進行編譯調試,然后要用Proteus軟件對模擬交通燈控制系統(tǒng)進行仿真分析[7],實現系統(tǒng)運行所需的功能,最后可在Protel中畫出PCB圖,動手制作PCB板并組裝完成。
為檢驗學習者做該交通燈綜合實驗的學習效果,實驗前后對63名學習者關于AT89S52單片機部分軟硬件設計知識的掌握情況,進行了填表調查,結果如表1所示。
表1 實驗前后學習者對AT89S52單片機軟硬件知識掌握情況統(tǒng)計表
實驗結果表明,學習者通過做該模擬交通燈綜合實驗,可以更靈活、有效、全面地掌握單片機軟硬件設計。
該模擬交通燈控制系統(tǒng)硬件部分具有電路簡單、成本低、可擴展等優(yōu)點,通過軟件部分,控制4塊LED板上的數碼管倒計時及紅、黃、綠二極管的點亮與熄滅,實現基本的交通燈功能,時間設置功能和特殊事件處理等功能。
[1]吳慎將,李黨娟.智能交通燈控制器的設計[J].研究與開發(fā),2010,29(11):51-53.
[2]李廣弟,朱秀月,冷祖祈.單片機基礎[M].3版.北京:航空航天大學出版社,2010.
[3]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.
[4]郭強,劉志峰,張愛平,等.基于STC89C52單片機的智能交通燈控系統(tǒng)設計[J].機電一體化,2008,14(11):85-88.
[5]譚浩強.C程序設計[M].3版.北京:清華大學出版社,2008.
[6]王冬梅,張建秋,路敬裿.基于單片機的交通燈控制系統(tǒng)設計與實現[J].佳木斯大學學報:自然科學版,2009,27(1):42-44.
[7]何翼.智能交通燈控制系統(tǒng)設計與仿真[J].重慶交通大學學報:自然科學版,2010,29(5):763-766.