智能交通灯.docx
《智能交通灯.docx》由会员分享,可在线阅读,更多相关《智能交通灯.docx(13页珍藏版)》请在冰点文库上搜索。
智能交通灯
目录
一、设计目的…………………………………………3
二、设计要求…………………………………………3三、总体方案…………………………………………3
四、单元模块设计……………………………………3五、总体电路图………………………………………4六、元件清单…………………………………………5七、PCB版图…………………………………………6八、设计心得…………………………………………7九、参考文献…………………………………………8十、程序附录…………………………………………10
一、设计目的
1)熟悉集成电路的引脚安排。
2)掌握各芯片的逻辑功能及使用方法。
3)了解十字路口交通灯的工作原理。
4)熟悉十字路口交通灯的设计与制作。
二、设计要求
1)在具有主、支干道的十字路口,设计一个交通灯自动控制装置。
在十字路口的两个方向上各设一组红黄绿灯,显示顺序为其中一个方向是绿灯,黄灯,红灯,另一方面是红灯,绿灯,黄灯。
2)设置一组数码管,以计时的方式显示允许通行或禁止通行时间,其中主干道绿灯亮的时间为30秒,红灯25秒,黄灯过渡5秒;支干道红灯时间为30秒,绿灯25秒,黄灯过渡为5秒。
3)用两组数码管实现倒计时显示。
三、总体方案
系统硬件:
使用51单片机实现对交通灯的状态控制;采用红、绿、黄三组发光二极管模拟十字路口交通灯;通过单片机定时器实现对事件计时,采用倒计时控制;时间显示模块实现在数码管上的时间显示刷新功能。
软件设计:
本系统采用C语言编程,主要运用了状态机的编程思想,将主程序设定在几个状态之间进行循环,从而实现交通灯的循环状态。
本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,增加了紧急状况处理这项特特殊功能。
四、单元模块设计
Ø单片机交通控制系统的通行方案设计
如果不考虑初始状态两个路口的红灯全亮,则交通灯可分为以下几个状态:
状态1:
东西路口的绿灯亮,南北路口的红灯亮,此时东西方向开始通车,延迟一段时间,转为状态2;
状态2:
东西路口的绿灯灭,然后东西路口黄灯闪烁,在此期间南北路口仍为红灯,闪烁若干次后东西路口的黄灯灭,转为状态3;
状态3:
东西路口的红灯亮,南北路口的绿灯亮,此时南北方向开始通车,延迟一段时间,转为状态4;
状态4:
南北路口的绿灯灭,然后南北路口黄灯闪烁,在此期间东西路口仍为红灯,闪烁若干次后南北路口的黄灯灭,转为状态1,之后反复循环。
状态5:
紧急通车时,两个方向上的红灯亮,数码管显示88。
Ø单片机交通控制系统的基本构成及原理
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入数码管就可以显示倒计时以提醒行使者,更具人性化。
本系统在此基础上,加入了紧急情况处理功能。
图3交通灯系统的总体框图
据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块,数码管显示模块输出。
系统的总体框图如上所示。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到数码管上实时显示。
在此过程中随时调用急停按键中断。
Ø系统硬件总电路构成
实现本设计要求的具体功能,选用STC89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,4个两位数码管东西南北各1个构成倒计时显示模块,按键当做紧急按钮。
Ø系统工作原理
系统上电或手动复位之后,系统先显示状态灯及数码管,将状态码值送显P2口,将要显示的时间值的个位和十位分别送显P2口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值。
另外,还要开启外部中断0,紧急情况处理中断,一旦信号有效,即Key键为低电平时进入中断服务子程序,在中断程序中把定时器关闭,并将状态和时间等数据保存,东西南北路口的红灯全亮禁止全部通行,再按一下Key键,再次进入外部中断,当第二次进入外部中断后,将定时器打开,并将上一次的状态和时间等数据返回,从而实现紧急情况下的处理和现场的恢复。
五、总体电路图
六、元件清单
元器件型号
数量
STC89C52单片机
1片
两位共阳极数码管
2个
LED发光二极管
红、黄、绿各2个
10K电阻
13个
30pF瓷片电容
2个
11.0592M晶振
1个
4.7uF电容
1个
复位开关
1个
自锁开关
1个
总体电路图:
Protuse仿真图
PCB图:
献:
[1]张毅刚,新编MCS-51单片机应用系统设计[M]哈尔滨:
哈尔滨工业大学出版社,2006
[2]王义军,单片机原理及应用习题与实验指导书[M],北京:
中国电力出版社,2006
[3]陈明荧8051单片机课程设计实训教材[M],北京:
清华大学出版社。
2004
附录1:
程序主体设计流程
全部控制程序实际上分为若干模块:
状态灯控制程序,数码管显示程序紧停程序,中断服务子程序等。
整个软件程序方面主要分两大部分:
主程序部分和中断处理程序。
流程图如图10所示。
设计说明:
该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。
智能交通灯控制系统在正常工作的情况下,每48s循环变化一次。
每个循环周期在还剩5s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。
若中断按键按下则转入中断服务子程序进行相关操作。
附录2:
系统程序
/*交通灯程序*/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳七段编码
uchartime;
staticcharp1=0;
sbitp2_0=P2^0;
sbitp2_1=P2^1;
sbitp3_2=P3^2;
sbitsnb=P1^0;//控制南北方向绿灯
sbitewb=P1^1;//控制东西方向绿灯
sbitsny=P1^2;//控制南北方向黄灯
sbitewy=P1^3;//控制东西方向黄灯
sbitsnr=P1^4;//控制南北方向红灯
sbitewr=P1^5;//控制东西方向红灯
uinti,j,num;
voidshijian(uintnum0);
voiddisplay(uchartime);
voiddelay(uintn);
voidRGB_control(void);
/*--定时计数器T0及其中断初始化函数--*/
voidinit(void)
{
ewr=0;ewb=1;ewy=1;
snr=0;sny=1;snb=1;
delay(200);
p3_2=1;
EX0=1;
IT0=1;
EA=1;//开总中断
}
/*----------延时函数---------------*/
voiddelay(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=124;j>0;j--);
}
/*紧急情况下,急救车优先,产生中断函数*/
voidjjqk()interrupt0
{
EX0=0;
if(p3_2==0)
delay(100);
if(p3_2==0)
{
p1=P1;
p2_0=1;
p2_1=1;
P0=0x80;
ewr=0;
snr=0;
ewb=1;
ewy=1;
sny=1;
snb=1;
}
while(p3_2==0);
P1=p1;
EX0=1;
}
/*--------------显示函数------------*/
voiddisplay(uchartime)
{
p2_1=1;//输出个位的位码
P0=table[time%10];//输出时间个位的段码
delay(20);//亮20ms
p2_1=0;
p2_0=1;//输出十位的位码
P0=table[time/10];//输出时间十位的段码
delay(20);//亮20ms
p2_0=0;
}
/*-----红、绿、黄灯控制函数-----*/
voidRGB_control(void)
{
ewr=1;
ewb=0;
snr=0;
shijian(15);
ewb=1;
ewy=0;delay(500);
ewy=1;delay(500);
ewy=0;delay(500);
ewy=1;delay(500);
ewy=0;delay(500);
ewy=1;delay(500);
snr=1;
snb=0;
ewr=0;
shijian(15);
snb=1;
sny=0;delay(500);
sny=1;delay(500);
sny=0;delay(500);
sny=1;delay(500);
sny=0;delay(500);
sny=1;delay(500);
}
/*显示时间函数*/
voidshijian(uintnum0)
{
for(i=num0;i>0;i--)
{
num=20;
while(num--){display(i);}
}
}
/*----------主函数-----------------*/
voidmain(void)
{
init();
while
(1)
{
RGB_control();
}
}