交通灯C51程序设计作业Word格式文档下载.doc
《交通灯C51程序设计作业Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《交通灯C51程序设计作业Word格式文档下载.doc(21页珍藏版)》请在冰豆网上搜索。
目录
一、设计背景 3
二、设计原理 3
三、电路图 4
(一)逻辑图:
4
(二)交通信号模拟控制系统电路原理图 5
四、程序流程图 6
五、编写程序 7
六、仿真结果图 15
(一)东西绿灯,南北红灯:
15
(二)东西黄灯,南北红灯 16
(三)东西红灯,南北绿灯 17
(四)东西黄灯,南北绿灯 18
七、调试 19
八、结论 19
九、参考文献 20
(一)网络参考 20
(二)书本参考 20
一、设计背景
交通灯是一个城市经济的动脉,它不但体现了一个城市的发展活力,也直接与老百姓的生活息息相关。
所谓“路通财通”就是说明了一个良好的交通环境的重要性。
而交通灯在这个交通环境中起一个重要的角色,智能的交通灯能有效地缓解城市的交通压力,减少交通事故;
智能交通灯能为当地人民节省大量的出行时间,创造出更多的社会价值;
智能的交通灯为交通顺畅提供了保障,对当地经济起着一个不可估量的作用。
目前研究交通灯的方案有很多,有应用CPLD设计交通信号灯控制器方法,有应用PLC实现对交通灯的控制系统的设计。
有应用单片机实现对交通信号灯设计的方法。
目前国内的交通灯一般设在十字路口,在醒目位置用红黄绿三种颜色的指示灯。
加上一个倒计时的显示计时器来控制行车。
对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:
1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;
另一个车道为副干道,车辆较少,放行时间应该短些。
2.没有考虑到紧急车辆通过时,两车道都应该采取措施。
譬如:
消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
二、设计原理
用AT89C51单片机控制一个交通灯系统,晶振采用12MHz。
设A车道与B车道交叉组成十字路口,A车道是主干道,B为支道。
设计要求如下:
(一)用发光二极管模拟交通信号灯;
(二)正常情况下,A,B两车道轮流放行,A车道放行50s,另有3s用于警告;
东西南北车道放行30s,另有3s用于警告;
(三)在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。
在B车道放行期间,若A车道有车而B车道无车,按下模拟开关K1使A车道放行15s;
(四)有紧急车辆通过时,按下开关K2使A,B车道均为红灯,禁止通行30s。
三、电路图
当一个车道有车而另一个车道没车时、可采用外部中断执行中断服务程序,分别以按钮开关K1,K2模拟A、B车道的车辆检测情况。
当按下K1时、A车道通行;
当按下K2时,B车道通行。
由此可得卡诺图如下:
表达式:
(二)交通信号模拟控制系统电路原理图
北
四、程序流程图
五、编写程序
交通灯信号灯模拟系统程序如下:
#INCLUDE<
AT89X51.H>
UNSIGNEDCHARCODESEGDATA[]={0X3F,0X06,0X5B,0X4F,0X66,
0X6D,0X7D,0X07,0X7F,0X6F};
UNSIGNEDCHARLEDCODE[]={0X0C,0X0C,0X0A,0X21,0X21,0X11};
//**********************0X21东西红灯,南北绿灯
//**********************0X11东西红灯,南北黄灯
//**********************0X0C东西绿灯,南北红灯
//**********************0X0A东西黄灯,南北红灯
UNSIGNEDCHARSECOND;
UNSIGNEDCHARRED,GRE,YELL;
//UNSIGNEDCHARKEYCNT;
UNSIGNEDINTTCNT,FLAG;
//UNSIGNEDINTK;
VOIDDEPLAY10MS(VOID)
{
UNSIGNEDINTI,J;
FOR(I=0;
I<
4;
I++)
FOR(J=0;
J<
250;
J++);
}
VOIDS0(VOID)
P1=0XFE;
P0=SEGDATA[RED/10];
P3=SEGDATA[GRE/10];
DEPLAY10MS();
P1=0XFD;
P0=SEGDATA[RED%10];
P3=SEGDATA[GRE%10];
VOIDS1(VOID)
P3=SEGDATA[YELL/10];
P3=SEGDATA[YELL%10];
VOIDS2(VOID)
P3=SEGDATA[RED/10];
P0=SEGDATA[GRE/10];
P3=SEGDATA[RED%10];
P0=SEGDATA[GRE%10];
VOIDS3(VOID)
P0=SEGDATA[YELL/10];
P0=SEGDATA[YELL%10];
VOIDSEGPLAY(VOID)
SWITCH(FLAG)
CASE0:
CASE1:
S0();
BREAK;
CASE2:
S1();
CASE3:
CASE4:
S2();
CASE5:
S3();
VOIDYELLS(VOID)
UNSIGNEDCHARI;
P2=LEDCODE[FLAG];
10;
SEGPLAY();
P2=LEDCODE[FLAG]&
0XED;
VOIDGRES(VOID)
0XDB;
VOIDMAIN(VOID)
{
TMOD=0X01;
ET0=1;
EA=1;
TH0=0X3C;
TL0=0XB0;
TCNT=0;
TR0=1;
SECOND=30;
FLAG=0;
WHILE
(1)
RED=SECOND;
GRE=SECOND-5;
YELL=SECOND;
CASE1:
GRES();
YELLS();
VOIDT0(VOID)INTERRUPT1USING0
TCNT++;
IF(TCNT==20)
SECOND--;
IF(SECOND==0)
FLAG++;
}
IF(SECOND==5)
{FLAG++;
IF(SECOND==10)
IF(FLAG==6)
{FLAG=0;
六、仿真结果图
(一)东西绿灯,南北红灯:
(二)东西黄灯,南北红灯
(三)东西红灯,南北绿灯
(四)东西黄灯,南北绿灯
七、调试
单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现和纠正的。
但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。
可见硬件的调试是基础,如果硬件调试不通过,软件设计则无从谈起。
硬件的调试主要是把电路各种参数调整到符合设计要求。
先排除硬件电路故障,包括设计性错误和公益性故障。
一般原则是先静态后动态。
利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。
先要将单片机AT89S51芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,这些都没有问题后,接上仿真机进行联机调试观察各接口线路是否正常。
单片机AT89S51是系统的核心,利用万用表检测单片机电源Vcc是否为(40脚)+5V、晶振是否正常工作(可用示波器测试,也可以用万用表检测,两引脚电压一般为1.8~2.3V)、复位引脚RST(复位时为高电平,单片机工作时为低电平)、EA是否为+5V(高电平),这样一来单片机就能工作了,再结合电路图,检测故障就很容易了。
八、结论
通过为本次课程设计,使我对这门课有了许多新的了解,弥补了在课堂上学习的不足。
相信这对我以后的学习和工作都会有很大的帮助。
首先,通过实体仿真软件等辅助软件的共同效果,是这次课程设计有了鲜明的活力。
还使我认识到这次实训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂上无法得到的东西。
特别是protues软件的功能是我了解了当今开发系统的新方向,令人大开眼界!
在本次课程设计中我通过一个智能交通灯的设计,使我深深地体会到了在现实生活中的应用,既增强了我们的好奇心,又巩固了我们的理论知识。
更让我们体会到了单片机手动的开始平台的完善与成熟。
只要你有想法,就有可能让他成为现实。
这里我学习完protues软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。
这对我以后的工作一定会有帮助的。
在这次课程设计中不仅只对C51编程有了新的认识,还对整个C51的开发平台都有了一定的了解,这是一笔不错的收获。
通过这次课程