基于AT89S52的交通燈綜合實(shí)驗(yàn)設(shè)計(jì)
摘要 介紹了模擬交通燈控制系統(tǒng)的綜合實(shí)驗(yàn)設(shè)計(jì),系統(tǒng)以AT89S52為核心,采用多種中斷處理和P口分時復(fù)用功能來控制數(shù)碼管和LED燈,實(shí)現(xiàn)了各種情況下交通燈的正常指示和倒計(jì)時功能。實(shí)驗(yàn)采用的軟件有KeilC51、Proteus、Protel等,統(tǒng)計(jì)數(shù)據(jù)表明,通過實(shí)驗(yàn)?zāi)苁箤W(xué)習(xí)者較完整地掌握單片機(jī)系統(tǒng)設(shè)計(jì)。
關(guān)鍵詞 綜合實(shí)驗(yàn);交通燈控制;AT89S52
隨著各種車輛的增多,經(jīng)常遇到交通堵塞問題,作為交通控制主要工具的交通燈,扮演著重要的角色,本文設(shè)計(jì)了一種交通燈控制系統(tǒng)綜合實(shí)驗(yàn),該系統(tǒng)包括:主控制器AT89S52、鍵盤模塊、數(shù)碼管顯示模塊、LED燈模塊等,為使學(xué)習(xí)能綜合練習(xí)從輸入到輸出的完整過程。系統(tǒng)中可采用主控器的外部中斷功能、定時中斷功能、動態(tài)掃描功能等,這些功能放入一個程序中,可使學(xué)習(xí)者能更深刻地理解它們的實(shí)際應(yīng)用。
1 實(shí)驗(yàn)的設(shè)計(jì)目的
(1)通過學(xué)習(xí)該實(shí)驗(yàn),掌握單片機(jī)并行口傳輸數(shù)據(jù)的方法,以控制數(shù)碼管和發(fā)光二極管的亮滅。(2)掌握用動態(tài)掃描方法解決多位LED共用一個P口顯示的問題。(3)通過單片機(jī)程序的編寫,熟練掌握計(jì)數(shù)器/定時器和中斷的使用方法。(4)通過系統(tǒng)的硬件設(shè)計(jì),掌握驅(qū)動芯片的使用及數(shù)碼管的連接,將所學(xué)的電路理論聯(lián)系到實(shí)踐中去。
2 硬件設(shè)計(jì)
2.1 模擬交通燈控制系統(tǒng)框圖
系統(tǒng)主要由單片機(jī)最小系統(tǒng)、功能鍵模塊、特殊事件處理模塊、接口電路、驅(qū)動電路及LED顯示模塊組成。其中,單片機(jī)為系統(tǒng)的主控部件,用以控制其他模塊協(xié)調(diào)工作,文中選擇AT89S52為主控芯片。LED顯示模塊用以顯示各車道的通行情況及時間(紅燈表示該車道禁止通行;綠燈表示該車道允許通行,黃燈為中間過渡時間);驅(qū)動電路用以驅(qū)動LED和數(shù)碼管工作;特殊事件處理模塊以外部中斷方式進(jìn)入;接口電路則起到各模塊間的連接作用,以使整個系統(tǒng)正常工作。模擬交通燈控制系統(tǒng)的硬件框圖如圖1所示。
2.2 各模塊的硬件結(jié)構(gòu)
(1)LED板模塊。由于交通實(shí)際情況是右轉(zhuǎn)不受紅綠燈限制,車輛直行與人行道的直行一致,因此該實(shí)驗(yàn)設(shè)計(jì)每塊LED板包含一個兩位數(shù)碼管U1、6個LED燈D1~D6,其中,6個LED燈排成兩行,每行有紅(R)、黃(Y)、綠(G)3個燈,上面一行指示車輛和人行的直行(S)通行,下面一行指示車輛的左轉(zhuǎn)(L)通行。6個LED的陰極連接到一個公共段G1上,當(dāng)G1為低電平,a為高電平時就可以點(diǎn)亮D1;同樣,若要點(diǎn)亮D6,只要使G1為低電平,f為高電平即可。
(2)驅(qū)動電路。ULN2003是常見的驅(qū)動芯片,一片可提供8路驅(qū)動信號,兩片ULN2003共16路,用于驅(qū)動8位數(shù)碼管及4組2×3LED燈的陰極,其中U2為LED燈的陰極驅(qū)動芯片,U3為數(shù)碼管的驅(qū)動芯片;8個三極管Q1~Q8組成的共集電極電路用于驅(qū)動8位數(shù)碼管的段及LED燈的陽極。
(3)單片機(jī)接口電路。系統(tǒng)中的單片機(jī)選擇AT9S52芯片,對交通燈的控制主要用其中的定時器完成,一方面要完成對各模塊的控制,另一方面是協(xié)調(diào)好各模塊的時序及口線沖突問題。如圖1所示,P1為數(shù)碼管段碼和LED燈陽極的控制口,P0和P2分別為數(shù)碼管和LED燈的位選信號控制口。
(4)按鍵模塊。圖1中,在P3口的P3.2~P3.6引腳各裝有一個按鍵K1~K5,其中,K1用于外部中斷0發(fā)出一單脈沖向CPU申請中斷,K2用于外部中斷1發(fā)出一單脈沖向CPU申請中斷進(jìn)行模式選擇,K3~K5是設(shè)置倒計(jì)時時間的功能鍵,K3用于數(shù)碼管的換位,K4用于進(jìn)行加1操作,K5用于確認(rèn)操作。
3 軟件設(shè)計(jì)
3.1 工作模式說明
系統(tǒng)分3種工作模式:正常模式、特殊事件模式和時間設(shè)置模式,并且通過圖1中K1、K2按鈕可實(shí)現(xiàn)模式選擇。交通燈的主要狀態(tài)示意圖,如圖2所示,南北方向交通燈亮滅順序及時間長短如圖3所示。
(1)正常模式。
狀態(tài)1 如圖2程序開始運(yùn)行先南北段通行60 s,其中車輛和人行道的直行通行40 s,數(shù)碼管顯示時間40 s,此時南北段直行通行綠燈亮(SG)、左轉(zhuǎn)紅燈亮(LR),東西段直行左轉(zhuǎn)紅燈都亮60 s,同時南北段和東西段方向的數(shù)碼管分別從40 s和60 s開始倒計(jì)時。
狀態(tài)2 南北段直行倒計(jì)時至最后5 s時,直行綠燈同時黃燈閃爍(SG SY);左轉(zhuǎn)紅燈同時黃燈閃爍(LR LY),如圖3所示。
狀態(tài)3 如圖2所示,南北段直行倒計(jì)時為0時,數(shù)碼管顯示時間從20 s開始倒計(jì)時,直行通行紅燈亮(SR)、左轉(zhuǎn)綠燈亮(LC),表示禁止車輛和人的直行,允許左轉(zhuǎn),左轉(zhuǎn)通行20 s,東西段紅燈繼續(xù)倒計(jì)時。
狀態(tài)4 南北段左轉(zhuǎn)倒計(jì)時至最后5 s時,直行紅燈繼續(xù)亮(SR),左轉(zhuǎn)綠燈同時黃燈閃爍(LG LY),如圖3所示。
狀態(tài)5 南北段左轉(zhuǎn)倒計(jì)時為0時,數(shù)碼管顯示時間從60 s開始倒計(jì)時,直行紅燈亮(SR)、左轉(zhuǎn)紅燈亮(LR),表示禁止南北段的直行和左轉(zhuǎn)。東西段狀態(tài)與南北段交替,開始允許直行通行40 s后左轉(zhuǎn)通行20 s,再循環(huán)至狀態(tài)1。
(2)特殊事件模式。特殊事件指臨時需緊急通行的事件,比如急救車、消防車、警車等。此時,應(yīng)使東西南北4個方向全亮紅燈,并延時10 s,以便特殊事件得到解決。
(3)時間設(shè)置模式。如果某路段的時間初始值與該路段的車輛通行狀況不符,可按下中斷鍵進(jìn)入時間設(shè)置模式,對該路段各個路口的直行、左轉(zhuǎn)時間長度進(jìn)行設(shè)置。
3.2 程序流程圖
軟件設(shè)計(jì)主要用C語言編程,總程序分為3部分:主程序;顯示控制、狀態(tài)處理等子程序;定時、特殊事件和時間設(shè)置等中斷處理程序。
(1)主程序流程。系統(tǒng)以正常狀態(tài)下交通信號燈各狀態(tài)的循環(huán)顯示為主程序,如圖4所示。在主程序中,調(diào)用數(shù)碼管倒計(jì)時子程序和中斷延時以實(shí)現(xiàn)各種交通狀態(tài)。
(2)顯示控制。數(shù)碼管采用動態(tài)方式顯示交通指示燈的計(jì)時時間,查詢判斷是否計(jì)滿50 ms,記滿后需重置計(jì)數(shù)初值,循環(huán)顯示20次直至完成定時1 s,倒計(jì)時時間減1。流程如圖5所示。
(3)特殊事件通行控制。發(fā)生特殊事件時通行受特殊事件強(qiáng)行通過按鍵控制,將此按鍵按下,無論原來信號燈的狀態(tài)如何,一律強(qiáng)制4個路口紅燈點(diǎn)亮,禁止其他車輛通行,使特種車放行10 s,其流程如圖6所示。
4 實(shí)驗(yàn)結(jié)果與分析
設(shè)計(jì)中學(xué)習(xí)者首先需要在KeilC51環(huán)境下對編寫的程序進(jìn)行編譯調(diào)試,然后要用Proteus軟件對模擬交通燈控制系統(tǒng)進(jìn)行仿真分析,實(shí)現(xiàn)系統(tǒng)運(yùn)行所需的功能,最后可在Protel中畫出PCB圖,動手制作PCB板并組裝完成。
為檢驗(yàn)學(xué)習(xí)者做該交通燈綜合實(shí)驗(yàn)的學(xué)習(xí)效果,實(shí)驗(yàn)前后對63名學(xué)習(xí)者關(guān)于AT89S52單片機(jī)部分軟硬件設(shè)計(jì)知識的掌握情況,進(jìn)行了填表調(diào)查,結(jié)果如表1所示。
實(shí)驗(yàn)結(jié)果表明,學(xué)習(xí)者通過做該模擬交通燈綜合實(shí)驗(yàn),可以更靈活、有效、全面地掌握單片機(jī)軟硬件設(shè)計(jì)。
5 結(jié)束語
該模擬交通燈控制系統(tǒng)硬件部分具有電路簡單、成本低、可擴(kuò)展等優(yōu)點(diǎn),通過軟件部分,控制4塊LED板上的數(shù)碼管倒計(jì)時及紅、黃、綠二極管的點(diǎn)亮與熄滅,實(shí)現(xiàn)基本的交通燈功能,時間設(shè)置功能和特殊事件處理等功能。