市道路錯綜復雜,相互交錯,交通燈是城市交通的重要指揮系統。交通信號燈作為管制交通流量、提高道路通行能力的有效手段,對減少交通事故有明顯效果。但是車流量是隨時變化的,而傳統的交通燈模式采用的是定時控制,反而容易造成交通堵塞。
本文設計的交通燈可根據平時或上下班高峰期來轉換紅綠燈切換時間,如上下班高峰期紅燈轉換時間設置為40秒,平時設置為60秒。這樣可有效緩解在上下班時間,由于紅燈設置時間太長,為了趕時間而闖紅燈現象。同時,有效緩解交通堵塞現象。
1、交通管理的方案論證
1968年,聯合國《道路交通和道路標志信號協定》對各種信號燈的含義作了規定:綠燈亮允許通行;紅燈亮,禁止通行;黃燈亮,提示人們注意紅,綠燈的狀態即將切換。為了方便說明,現假設東西,南北走向的兩干道相交于一處十字路口。同時,為了保證行人安全,設置A,B,C,D四條人行道。如圖1所示。
圖1 ? 路口指示燈示意圖
路口指示燈工作情況說明:當東西道為紅燈,此道車輛禁止通行,此時B,D人行道上行人可通過馬路;同時南北道為綠燈,此道車輛通過,此時A,C人行道上行人禁止通行,時間為60秒。黃燈閃爍5秒,警示車輛和行人紅,綠燈的狀態即將切換。當東西道為綠燈,此道車輛通行,此時B,D人行道上行人禁止通過馬路;同時南北道為紅燈,此道車輛禁止通過,此時A,C人行道上行人可通行,時間為60秒。依此循環,即可指引車輛有序行駛,行人安全通過馬路。
2、系統硬件電路的設計
2.1、系統電路總體概要
本設計主要由89C52單片機、交通燈顯示模塊、紅外接收模塊、數碼管、按鍵等組成。89C52單片機為系統主控制器,控制其他模塊協調工作;按鍵和紅外接收模塊用來切換系統工作模式:正常模式或上下班高峰模式。即正常模式下,紅燈設置的時間為60秒;上下班高峰模式下,紅燈設置的時間為40秒。交通燈顯示模塊用以指引各路道車輛的通行,數碼管為了顯示交通紅綠燈所剩的切換時間,行人依此判斷是否有足夠時間過馬路,是走還是停。其主要框圖如圖2所示。
圖2 ?系統設計總框圖
2.2、硬件電路的設計
2.2.1、控制器的選擇
作為交通智能控制的中心,控制器的選擇十分重要。我們常見的有:(1)現場可編程門陣列FPGA;(2)可編程邏輯控制器PLC;(3)51系列單片機等。這是一種較為實用的系統,所以要從價格和使用方面等因素綜合考慮。以上3種控制器都可以很好的完成交通燈的智能控制,而FPGA和PLC操作和完成簡單,但成本價格較高,性價比低。對于本設計,51系列單片機完全可以實現其控制,且性能良好,價格低廉。因此選用大家所熟知的89C52單片機作為控制器。
圖3 紅外發射與接收原理圖
通用紅外遙控系統由發射和接收兩大部分組成,應用編解碼專用集成電路芯片來進行控制如圖3所示。紅外接收頭的工作原理:內置接收管將紅外發射管發射出來的光信號轉換為微弱的電信號,此信號經由IC內部放大器進行放大,然后通過自動增益控制、帶通濾波、解調變、波形整形后還原為遙控器發射出來的原始編碼,經由接收頭的信號輸出腳輸入到電器上的編碼識別電路。
本設計選用89C52單片機作為控制器,控制系統的正常運行。本系統有兩種運行模式,普通模式和上下班高峰模式。可通過按鍵或紅外遙控對系統運行模式進行切換。按鍵切換適于值班人員使用,而紅外遙控切換適于交警巡查時使用,方便快捷。現簡要介紹該系統工作原理:89C52單片機通過鎖存器控制數碼管顯示紅綠燈時間,東西、南北四組數碼管時間顯示相同。P1^2~P1^7控制交通燈的顯示。P1^2~P1^4控制東西道兩組交通燈的顯示,這兩組紅綠燈通過單片機控制顯示相同顏色的指示燈并且切換時間相同;而P1^5~P1^7控制南北道兩組交通燈的顯示,這兩組紅綠燈同樣通過單片機控制顯示相同顏色的指示燈并且切換時間相同。P3^5接按鍵S1,通過此按鍵可控制系統運行模式。P3^2接紅外接收模塊,通過此接口可紅外遙控切換系統運行模式。如圖4所示:
圖4 ?硬件電路圖
3、系統軟件的設計
#include
#defineuintunsignedint
#defineucharunsignedchar
uintaa,num,MODEL1,numa,HMODE1;
ucharshi,ge,gtime,rtime;
……
sbitdula=P1^0;//段選
sbitwela=P1^1;//位選
sbitLED1=P1^2;//東西(紅燈)
sbitLED2=P1^5;//南北(紅燈)
sbitLED3=P1^6;//南北(黃燈)
sbitLED4=P1^3;//東西(黃燈)
sbitLED5=P1^7;//南北(綠燈)sbitLED6=P1^4;//東西(綠燈)
sbitKEY1=P3^5;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f};
uchartable1[]={0xbf,0x7f};
voiddelay(ucharz)//延時函數
{ucharx,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);}
voidinit()
{TMOD=0x01;//選擇方式一,16位計數器
TH0=15536/256;
TL0=15536%256;//定時器高、低位,置入初值
EA=1;//中斷允許總控制位
ET0=1;//定時器0中斷允許控制位
TR0=1;//定時器0運行控制位
aa=0;
gtime=60;
rtime=40;
num=1;
numa=1;MODEL1=1;
HMODE1=0;}
定時的函數及原理:
當單片機工作于定時狀態時,定時/計數器對機器周期進行計數,每個機器周期包括12個振蕩周期,以晶振頻率為12MHZ為例,則:
1個機器周期=12/晶振頻率=12/12000000=0.001ms
定時時間為:TC=XTP。其中,TP為機器周期,TC為定時時間。
則應裝入計數/定時器的初值為:
N=M-Tc/Tp
(注:M=2n,TP為機器周期,TC為定時時間)
對于方式1,一次最大的定時時間為:T=(216-0)×0.001=65.536ms,為了便于計算,設定每次最大定時時間為50ms,計算應裝入的初值:
N=65536-50000=15536
顯示子函數:
通過單片機對鎖存器進行位選,段選的控制,使數碼管顯示需要的數字。
voiddisplay(shi,ge)
{dula=1;
P0=table[shi];
dula=0;
wela=1;
P0=table1[0];
wela=0;
delay(5);
P0=0xff;//對數碼管消影
dula=1;
P0=table[ge];
dula=0;
wela=1;
P0=table1[1];
wela=0;
delay(5);
P0=0xff;}
模式一函數:
voidmod1()
{if(num==1&》ime》5)//東西道紅燈亮,南北道綠燈亮,最后5秒切換成黃燈
{LED5=0;
LED1=0;}
f(num==2)//東西道綠燈亮,南北道紅燈亮
{ LED2=0;
LED6=0;
LED5=1;
LED3=1;
LED1=1;}
if(num==1&》ime==5)//東西道紅燈亮,南北道黃燈亮5秒
{ LED5=1;
LED2=1;
LED3=0;}
shi=gtime/10;
ge=gtime%10;
if(aa==20)//50ms×20=1s,即過1s數碼管數字減1
{aa=0;
gtime--;}
display(shi,ge);
if(gtime==0&&num!=2)
{gtime=60;
num=2;}
if(gtime==0&&num==2)
{num=1;
gtime=60;
LED2=1;
LED6=1;}}
模式二函數:
如同模式一,只是參數有變化。如將gtime=60換成
rtime=40;num=1換成numa=1;僅此而已。
主函數:
void ?main()
{init();
while(1)
/*模式一,平常模式,紅綠燈切換時間為60秒*/
{if(MODEL1==1||HMODE1==0)//按鍵或紅
外控制切換模式
{mod1();}
/*通過按鍵切換工作模式*/
if(KEY1==0)
{delay(5);//按鍵消抖
while(KEY1==0)
{MODEL1++;
rtime=40;
if(MODEL1==3)
{MODEL1=1;
gtime=60;}
while(!KEY1);}}
……
/*模式二,上下班高峰期模式。紅綠燈切換時間為40秒*/
if(MODEL1==2||HMODE1==1)
{mod2();}
}}
voidtimer0()interrupt1
{TH0=15536/256;
TL0=15536%256;
aa++;}
4、系統的仿真
結合軟硬件,通過proteus仿真,此系統可安全、可靠的運行。仿真圖的部分截圖如圖5所示。
圖5 ?交通燈控制系統運行示意圖
5、結論
本文給出了紅外遙控雙模式交通燈控制系統,通過硬件電路的搭建和軟件的調試,最后通過proteus進行仿真。該系統完全可以完成設計的要求。
評論