void mod1()
{ if(num==1&>ime>5) // 东西道红灯亮,南北道绿灯亮,最后5 秒切换成黄灯
{ LED5=0;
LED1=0; }
if(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; } }
www.55dianzi.com模式二函数:
如同模式一,只是参数有变化。如将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(); }
} }
void timer0() interrupt 1
{ TH0=15536/256;
TL0=15536%256;
aa++; }
4 系统的仿真
结合软硬件,通过proteus 仿真,此系统可安全、可靠的运行。仿真图的部分截图如图5 所示。
图5 交通灯控制系统运行示意图
5 结论
该系统完全可以完成设计的要求。具有一定的实用价值,同时,该系统还有诸多开发前景,具备一定的扩展能力,如:根据图像识别,判断车辆数是否增加,以此来判断该运行哪种模式,有待进一步开发。