十字路口交通信號燈單片機控制系統設計與調試

第一章 控制要求

1.1 控制要求

(1)系統工作受開關控制,起動開關 ON 則系統工作;起動開關 OFF 則系統停止工作。

(2)控制對象有八個:

東西方向紅燈兩個 , 南北方向紅燈兩個,

東西方向黃燈兩個 , 南北方向黃燈兩個,

東西方向綠燈兩個 , 南北方向綠燈兩個,

東西方向左轉彎綠燈兩個,南北方向左轉彎綠燈兩個。

(3)另外東西方向、南北方向各設置顯示兩位十進制的7段顯示器,用來顯示倒數計數值。

1)高峰時段按時序圖二(見附圖)運行, 正常時段按時序圖三(見附圖)運行,晚上時段按提示警告方式運行,規律為: 東、南、西、北四個黃燈全部閃亮,其餘燈全部熄滅。

高峰時段、正常時段及晚上時段的時序分配按時序圖一運行(見附圖)。

可以只選擇高峰時段或正常時段進行設計,但最後評分值最高以良好評議;如果全部功能實現(需要設計一個24小時的時鐘作為時段劃分的基礎),最高評分值以優秀評議。

時序圖

十字路口交通信號燈單片機控制系統設計與調試

第二章 系統方案設計

2.1交通燈運行狀態分析

根據控制要求,系統以下圖交通的運行狀態來設計系統方案。

狀態1南北直行;狀態2南北左轉; 狀態3東西直行;狀態4東西左轉。

共有四種狀態,分別設定為S1、S2、S3、S4,交通燈以這四種狀態為一個週期。循環執行如圖1.5所示:

十字路口交通信號燈單片機控制系統設計與調試

圖2.1 交通燈狀態循環圖

2.2系統總體方案設計

十字路口交通信號燈單片機控制系統設計與調試

圖2.2系統總體方案圖

本系統採用MCS-51系列單片機AT89C51為中心器件來設計交通燈控制器,實現了正常、高峰、晚間時通過單片機的P1口設置紅、綠、黃燈亮滅的功能。東西、南北兩位7段顯示器用來顯示倒數計數值。系統分三種工作時段:正常、高峰、晚間,並且通過時間段來控制"正常"、"高峰"、"晚間"相互轉化。

正常時段:南北段直行通行(綠燈)、東西段禁止(紅燈)40s,同時南北段和東西段方向的數碼管分別從40s和70s開始倒計時,至最後5s時南北段綠燈變成黃燈閃爍;此後南北段左轉(左轉綠燈亮)通行、東西段禁止(紅燈)20s,同時南北段和東西段方向的數碼管都從20s開始倒計時,至最後5s時南北段左轉燈變成黃燈閃爍;再後東西段直行通行(綠燈)、南北段禁止(紅燈)40s,同時東西段和南北段方向的數碼管分別從40s和70s開始倒計時,至最後5s時東西段綠燈變成黃燈閃爍;最後東西段左轉(左轉綠燈亮)通行、南北段禁止(紅燈)20s,同時東西段和南北段方向的數碼管都從20s開始倒計時,至最後5s時東西段左轉燈變成黃燈閃爍。

高峰時段:南北段、東西段的通行時間改為45s,左轉的時間改為15s,其它與正常時段相同。

晚間時段:禁止左轉和直行,東西南北四個方向黃燈閃亮。

第三章 系統電路設計

3.1控制芯片選擇

十字路口交通信號燈單片機控制系統設計與調試

圖3.1 AT89C51引腳圖

AT89C51是美國ATMEL公司生產的低電壓,高性能CMOS 8位單片機,有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,器件採用ATMEL公司的高密度、非易失性存儲技術生產,與標準MCS-51指令系統及8051產品引腳兼容,片內置通用8位中央處理器(CPU)和Flash存儲單元,可以按照常規方法對其進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反覆擦寫的Flash存儲器可有效地降低開發成本。

3.2狀態燈選擇

該系統設計紅、綠、黃狀態燈顯示的功能,用LED燈來代替實際的交通燈,由於有四種不同的運行狀態,一個十字路口需要16個LED燈,倒計時數碼管顯示選用兩位帶片選的7段數碼管,需要4個。數碼管顯示簡單,程序簡單,端口用的少。普通單色發光二極管具有體積小、工作電壓低、工作電流小、發光均勻穩定、響應速度快、壽命長等優點,可用各種直流、交流、等電源驅動點亮,它屬於電流控制型,使用時需串接合適的限流電阻。

3.3系統硬件原理圖設計

十字路口交通信號燈單片機控制系統設計與調試

圖3.2系統原理佈置圖

第四章 系統軟件設計

4.1 程序流程圖設計

十字路口交通信號燈單片機控制系統設計與調試

圖4.1主程序流程圖

系統通電後,初始化定時器,進行24小時定時,在7:00到8:15或16:30到17:00時,按高峰時段運行。在6:30到7:00或8:15到16;30或18:00到19:00時,按正常時段運行。其餘時段,按晚間時段運行。

十字路口交通信號燈單片機控制系統設計與調試

十字路口交通信號燈單片機控制系統設計與調試

圖4.2 時鐘及晚間時段程序流程圖


本設計利用單片機的定時器T0中斷來設置24小時定時,設置TH1=0x3C,TL1=0xB0.即每0.05秒中斷一次。到第20次中斷即過了20*0.05秒=1秒時,計60S時,滿意1分鐘,計滿60分鐘,滿1小時,計滿24小時,又重新開始計時。用定時器T1中斷來設置數碼管倒計時,每滿1S時,使時間的計數值減1,便實現了倒計時的功能。

十字路口交通信號燈單片機控制系統設計與調試

圖4.3 高峰時段及正常時段流程圖

4.2 系統編程

4.2.1定時器的中斷設置

在單片機中,中斷技術主要用於實時控制。所謂實時控制,就是要求計算機能及時地響應被控對象提出的分析、計算和控制等請求,使被控對象保持在最佳工作狀態,以達到預定的控制效果。由於這些控制參量的請求都是隨機發出的,而且要求單片機必須做出快速響應並及時處理,對此,只有靠中斷技術才能實現。

本系統中的定時時鐘及倒計時的設置和相應中斷服務子程序如下:

/*24小時時鐘 */

void Timer0Cofig(){

TMOD=0x01; //T0定時器工作方式

TH0=0x3C; //設置初始值,定時50MS

TL0=0xB0;

ET0=1; //定時器開中斷

TR0=1; //啟動定時器0

EA=1; //CPU開中斷總允許

}

void T0int() interrupt 1{

TH0=0x3C; //設置初始值

TL0=0xB0;

second_counter++;

if(second_counter>=20){second++;second_counter=0;}

if(second>=60){minute++;second=0;}

if(minute>=60){hour++;minute=0;}

if(hour>=24){hour=0;}

}

/********倒數顯示定時器*********/

void Timer1Cofig()

{

TMOD=0x01; //T1定時器工作方式

TH1=0x3C; //定時器初值50ms中斷一次

TL1=0xB0;

ET1=1; //定時器開中斷

TR1=1; //啟動定時器1

EA=1; //CPU開中斷總允許

}

/*定時器中斷函數*/

void timer1() interrupt 3{

TH1=0x3C; //重新裝入初值

TL1=0xB0;

RGY_second++;

if(RGY_second==20){

RGY_second=0;

Time_EW--;//滿1秒,數碼管值減1

Time_SN--;

}

}

第五章 系統調試與仿真

5.1 proteus仿真結果

根據系統設計要求,進行keil調試和proteus系統仿真,不斷調試程序。發光二極管,數碼管都能按要求顯示,符合要求。proteus總體仿真圖如下。

十字路口交通信號燈單片機控制系統設計與調試

圖5.1 仿真結果


分享到:


相關文章: