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