课程设计
单片机制作交通指示灯
电气工程学院电信102班马青林
交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。对于复杂的城市交通系统,为了确保安全,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口。考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,拟采用MCS-51系列的单片机来实现十字路口交通信号灯的控制。正常情况下,十字路口的红绿灯应交替变换,以下设计中,用发光二极管来模拟信号灯,要求使用8051定时器/计数器0作为定时器,假设南北和东西的通车时间都为30s,外部中断的延时为10s,要求对通行时间进行倒计时,从P1口输出,以此来实现十字路口交通灯的指示功能。
交通灯在安全行车过程中起着十分重要的作用,现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯,加上一个倒计时的显示计时器来控制行车,对于一般情况下的安全行车、车辆分流发挥着作用,根据行车过程中出现的实际情况,如何全面有效地利用交通灯指示交通情况,我们尝试用单片机来控制交通灯,在软、硬件方面采取一些改进措施,使交通灯在控制中灵活而有效。
当前,交通事业蓬勃发展,交通流量年年增长,大、中、小城市的
汽车、摩托车等各种车辆与日俱增,道路交通繁忙,经常有严重堵车现象,特别是在交叉口,机动车、非机动车、行人来往非常混乱,为了在叉口的各条干道实现合理的科学分流。本人根据单片机具有物美价廉、功能强,所以设计以下的控制系统,具体如下:
一.设计目的:
1、通过交通信号灯控制系统的设计,掌握80C51并行口传输数据的方法,以控制发光二极管的亮与灭;
2、用80C51作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理.
3、通过单片机控制设计,熟练掌握汇编语言和C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;
4、完成控制系统的硬件设计、软件设计、仿真调试。
5,由于对面对的两个交通灯现象一样,同时合为一个,所以实验中控制6个灯就可以了。
二.设计要求:
交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭。用8051做输出口,控制十二个发光二极管
燃灭,模拟交通灯管理。在一个交通十字路口有一条主干道(东西方向),一条从干道(南北方向),主干道的通行时间比从干道通行时间长,四个路口安装红,黄,绿,灯各一盏;
如图所示:
三.设计任务和内容:
任务:设计一个能够控制十二盏交通信号灯的模拟系统。并且要求交通信号灯按照交通规则的模试来运行。实验通过控制六个交通灯就好了。
内容:因为本课程设计是交通灯的单片机控制设计,所以要了解实际交通灯的变化情况和规律。假设一个十字路口为东西南北走向。然后转状态1南北红灯,东西绿灯通车。过一段时间转状态2东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,东西仍然红灯。最后循环至状态1。
四.控制系统的总体要求:
因东西同属一个车道,南北属一条车道,因此控制一边的灯就可以了,现象一样
1.东西路口的绿灯亮,南北XX的红灯亮,东西路口方向通车;
2.延时一段时间后,东西路口的绿灯熄灭,黄灯开始延时并且开始闪烁,闪烁5次后,东西路口红灯亮,而同时南北XX的绿灯亮,南
北路口方向开始通车;
3.延时一段时间之后,南北XX的绿灯熄灭,黄灯开始延时并且开始闪烁,闪烁5次之后,再切换到东西路口方向;
之后重复1到3过程。
五.交通信号灯模拟控制系统设计程序流程图:
六、C程序为:include"reg51.h"defineuintunsignedint
defineucharunsignedcharsbitr1=P0^2;
sbity1=PO^1;
sbitb1=P0^0;
sbitr2=P0^7;
sbity2=P0^6;
sbitb2=P0^5;
voiddelay(void)
uinti;
for(i=0;i<34530;i++);}
voidmain(void)
uinti=0;
while(1)
r1=1;y1=0;b1=0;r2=0;y2=0;b2=1;
for(i=0;i<5;i++)
delay();r1=1;y1=0;b1=0;
r2=0;y2=1;b2=0;
for(i=0;i<1;i++)delay();r1=0;y1=0;b1=1;
r2=1;y2=0;b2=0;
for(i=0;i<5;i++)delay();
r1=0;y1=1;b1=0;r2=1;y2=0;b2=0;
for(i=0;i<1;i++)delay}
七、模拟交通灯电路原理图
八、调试与仿真
打开Keil程序,执行菜单命令“Project”、“NewProject”创建“模拟交通
信号灯”项目,并选择单片机型号为ATC51。
执行菜单命令“File”、“New”创建文件,输入汇编(C语言)源程序,
保存为“交通信号灯.ASM”或“模拟交通灯.C”。在“Project”栏的File项目管
理窗口中右击文件组,选择“AddFiletoGroup‘SourceGroup1’”,将源程序“模
拟交通灯.ASM”(或“模拟交通灯.C”)添加到项目中。
执行菜单命令“Project”、“OptionforTarget'Target1'”,在逃出的对话
框中选择“Output”选项卡,选中“CreateHE_File”。在“Debug”选项卡中,
选中“Use:ProteusVSMSimulator”。
执行菜单命令“Project”、“BuildTarget”,编译源程序。如果编译成功,
则在“DebugWindow”窗口中显示没有错误,并创建了“模拟交通灯.HE_”文
在已绘制好的原理图的ProteusISIS菜单栏中,执行菜单命令“Debug”、
“UseRemoteDebugMonitor”将该项选中,使proteus与Keil真正连接起来,使
他们联合调试。