市道路错综复杂,相互交错,交通灯是城市交通的重要指挥系统。交通信号灯作为管制交通流量、提高道路通行能力的有效手段,对减少交通事故有明显效果。但是车流量是随时变化的,而传统的交通灯模式采用的是定时控制,反而容易造成交通堵塞。
本文设计的交通灯可根据平时或上下班高峰期来转换红绿灯切换时间,如上下班高峰期红灯转换时间设置为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进行仿真。该系统完全可以完成设计的要求。
评论
查看更多