王剛
摘要: 本文設計了基于AT89S51單片機的交通燈控制系統。該系統由單片機最小系統、交通燈顯示電路、倒計時顯示電路、緊急和特殊情況處理電路組成。通過Proteus、Keil軟件搭建硬件仿真電路與軟件設計、軟硬聯調,實現了交通燈的基本功能及緊急、特殊情況交通處理功能。仿真結果表明:本系統具有電路設計簡單,性價比高,穩定性好,操作性強等特點。為進一步擴展交通燈功能的多樣化、智能化提供了參考方案,具有一定的實用價值。
Abstract: This paper designs a traffic light control system based on AT89S51 single-chip microcomputer. The system consists of a single-chip minimum system, a traffic light display circuit, a countdown display circuit, and emergency and special case processing circuits. Proteus and Keil software are used to build hardware simulation circuit and software design, hardware and software joint debugging, to achieve the basic functions of traffic lights and emergency and special circumstances of traffic handling. The simulation results show that this system has the characteristics of simple circuit design, high performance-to-price ratio, good stability, and strong operability, which provides a reference program for further diversification and intelligentization of traffic light functions, and has certain practical value.
關鍵詞: AT89S51;顯示電路;處理功能;硬件仿真
Key words: AT89S51;display circuit;processing function;hardware simulation
中圖分類號:U491.5+1 文獻標識碼:A 文章編號:1006-4311(2018)17-0131-02
0 引言
近年來,我國汽車數量增長迅速,大中型城市的交通壓力也日趨增大。隨著微控制器技術的不斷發展,功能日益完善,在工業控制、儀器儀表、武器裝備、通信等領域獲得廣泛應用。在此背景下,采用單片機設計出智能化、人性化的交通燈控制電路,為緩解交通壓力提供了可行性的解決方案。
1 系統總體設計
根據系統的功能,本設計的硬件仿真分為三個模塊:單片機最小系統、交通燈顯示模塊、緊急、特殊情況處理模塊。最小系統采用核心芯片AT89S51;顯示模塊采用發光二極管為交通燈、四位一體七段數碼管為倒計時顯示;非自鎖按鍵構成緊急和特殊情況處理電路。系統組成框圖如圖1所示。系統的軟件設計分為四個模塊:動態顯示模塊、交通燈工作模塊、中斷模塊、定時/計數器模塊。
2 硬件仿真設計
本系統的硬件仿真采用Proteus軟件。Proteus軟件是EDA工具軟件,它是目前比較好的仿真單片機及外圍器件的工具。同時能與Keil軟件進行軟硬聯調,準確展示單片機的仿真效果。
系統仿真電路主要由單片機最小系統、交通燈顯示電路、倒計時顯示電路、緊急、特殊情況處理電路部分組成,硬件仿真電路如圖2所示。
①單片機最小系統:也稱單片機最小應用系統,是指用最少的元件組成,可以使單片機工作的系統。對51系列單片機來說,最小系統包括電源電路、單片機、復位電路、時鐘電路、程序存儲器選擇電路。
單片機:選用8位單片機AT89S51,該單片機具有性能穩定,硬件資源豐富,根據適用、夠用的原則,該芯片能夠作為交通燈的微控制器。
電源電路:由外部電源提供DC 5V,加在單片機VCC(40號引腳),VSS端(20號引腳)。
時鐘電路:為單片機工作提供基本時鐘。單片機須在時鐘信號控制下嚴格的按時序進行工作。本設計的時鐘電路采用內部時鐘方式,即通過兩個30pF電容及12MHz的晶體振蕩器實現單片機的時鐘電路的功能,具體電路連接參看圖2中XTAL1與XTAL2的連接部分。
復位電路:單片機復位是使CPU和系統中的其他功能部件都恢復到一個確定的初始狀態,單片機的復位條件是必須使單片機的RST(第9引腳)加上持續2個機器周期以上的高電平。復位電路參看圖2所接RST端的電路。單片機上電時,按下復位按鍵RESET鍵,在RST端產生一個復位高電平,單片機復位。具體電路連接參看圖2中RST端的連接方式。
程序存儲器選擇電路:單片機內部有4KB的程序存儲器,能夠存放本次設計的交通燈控制程序,無需外擴存儲器。單片機的(第31引腳)接VCC,即為高電平時,單片機讀取程序從內部程序存儲器讀取。具體連接方法參看圖2中單片機端的接線方式。
②交通燈顯示電路:采用6個發光二極管模擬兩個方向的紅黃綠交通燈,通過單片機的P0口控制,采用灌電流控制方式,對應的P0口某一位為低電平時點亮該位對應LED燈。所接6個200Ω電阻起到限流作用,防止電流過大燒壞發光二極管。具體連接方法參看圖2中P0.0~P0.5端的接線方式。
③倒計時顯示電路:四位一體的共陽數碼管分別模擬兩個方向的倒計時顯示器,每個方向2位,P2.0~P2.3連接數碼管的位選端,為數碼管提供的位選信號。P1.0~P1.7的連接數碼管的段選端,為數碼管提供段選信號。具體連接方法參看圖2中P1、P2口對應端的連接方式。
④緊急和特殊情況處理電路:采用非自鎖按鍵S1、S2分別模擬緊急情況和特殊情況的發生,當S1、S2沒有按鍵按下時,表示正常情況。當S1按下時,表示緊急情況,將S1接至(P3.2引腳),即可實現外部中斷0的中斷請求。當S2按下時,表示特殊情況,將S2接至(P3.3引腳),即可實現外部中斷1的中斷請求。具體連接方式參看圖2中P3口對應的連接方式。
3 軟件設計
倒計時交通燈的程序編寫采用C語言進行設計,C語言因執行效率高、可移植性好,可以直接對硬件進行操作等多種優勢而被廣泛使用。單片機C語言的編譯軟件采用Keil μVision。該軟件是目前最流行的開發51單片機軟件,能將程序與硬件仿真軟件進行系統聯調,從而成功實現仿真。程序包括如下部分:主函數、中斷函數、定時函數、顯示函數,6個用戶自定義狀態函數。
3.1 主函數:包括兩個部分
①6個狀態函數:nanbei50s();nanbei3s();nanbei2s();dongxi50s();dongxi3s();dongxi2s();交通燈系統正常工作時,南北方向和東西方向自動切換6個運行狀態。狀態1至狀態3:東西方向紅燈亮(55s)、南北方向綠燈亮(50s);南北方向綠燈閃爍(3s)、南北方向黃燈亮(2s);狀態4到狀態6:南北方向紅燈亮(55s)、東西方向綠燈亮(50s)、東西方向綠燈閃爍(3s)、東西方向黃燈(2s)。正常情況下,交通燈從狀態1順序切換到狀態6,如此循環。主函數中通過調用六個狀態子函數,使程序結構清晰,便于糾錯、調試。
②基于仿真電路的設計,主函數中將外部中斷0和外部中斷1開中斷,利用自然優先級使中外部中斷0為高優先級。在調用中斷函數時采用外部中斷的下降沿觸發方式。主函數如下:
void main( )
{TMOD=0X01;IT0=1;EX0=1;IT1=1;EX1=1;EA=1;
While(1)
{nanbei50s();nanbei3s();nanbei2s();dongxi50s();dongxi3s();dongxi2s();}}
3.2 動態顯示函數:采用動態掃描法實現四位數碼管的數值顯示。動態掃描顯示過程:在某一時段只讓其中1位的LED位選口有效,并在段選口上送出相應的字形顯示編碼。這時,在選中的LED上顯示指定字符,其他位的LED處于熄滅狀態;延時一段時間,下一時段按順序選通另外1位LED,并送出相應的字形顯示編碼,依此規律循環下去,直到最后1位LED被選通,顯示指定字符。反復進行以上LED動態掃描過程,就能實現各位LED穩定顯示字符的效果。以東西交通燈顯示程序為例,其中ew為全局變量,存放東西方向交通燈的倒計時數。南北交通燈顯示程序與東西方向類似。
void display()
{unsigned led[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char wei[ ]={0xfe,0xfd,0xfb,0xf7};
unsigned char b; P2=wei[0];P1=led[ew/10];
for(b=0;b<100;b++);P1=0X00;P2=wei[1];P1=led[ew%10];
for(b=0;b<100;b++);P1=0X00;}
3.3 定時函數:采用定時計數器0,工作方式1,定時50ms的時間作為基本時間單位。通過多次調用該函數,實現1s的計時。定時函數如下:
void dingshi50ms(unsigned char i)
{unsigned char j; for(j=0;j
{TH0=(65536-50000)/256; TL0=(65536-50000)%256;
TR0=1;while(!TF0); TF0=0; }}
3.4 中斷處理函數:當按下按鍵S1后,進入外部中斷0中斷處理函數。包括保護現場,兩個方向為紅燈,持續20s,對應交通的緊急情況。當按下按鍵S2后,進入外部中斷1的中斷處理函數。包括保護現場,南北方向綠燈,東西方向紅燈,持續10s,對應交通的特殊情況。
4 仿真結果
將源程序在Keil軟件進行編譯、鏈接后與Proteus仿真電路軟硬聯調,成功展示了交通燈的正常運行狀態,分別按下按鍵S1,S2后,交通燈的緊急、特殊情況運行正常。
5 結語
通過對系統的總體設計、搭建硬件仿真電路、軟件設計、軟硬聯調,成功設計倒計時交通燈電路,該系統具備功能可靠、性價比高、結構簡單等優點。本設計的硬件仿真適合應用于虛擬儀器的教學演示和實際的應用系統設計等方面,為交通燈的智能化發展提供可行性參考方案。
參考文獻:
[1]尹毅峰,劉龍江.單片機原理及應用[M].北京:北京理工大學出版社,2010.
[2]倪志蓮.單片機應用技術[M].北京:北京理工大學出版社,2010.
[3]王冬梅,張建秋,路敬.基于單片機的交通燈控制系統設計與實現[J].佳木斯大學學報:自然科學版,2009,27(1):94-96.
[4]彭偉.單片機C語言程序設計實訓100例[M].北京:電子工業出版社,2012.