资源描述
C51程序设计课程报告
——交通灯
学 院: 电信学院
班 级: 09电子信息工程本1班
学 号: 091102010142
姓 名: 邵宝川
摘要
交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。随着车辆的日益增多,交通问题将日趋严重。 可通过多修建道路或限制车辆的办法来解决,但道路的增加是有限的,而限制车辆会使汽车及其相关产业受到压制。目前,发达国家的交通主要是向智能化交通方向发展。如给汽车装上导航仪等办法,充分利用电子设备提高现有道路交通系统的运输能力。交通灯是管理城市交通的重要工具,交通灯对道路交通流的影响近年来引起广大学者的广泛注意。目前绝大部分交通灯其时间都是设定好的,不管是车流高峰还是低谷,红绿灯的时间都固定不变,还有一些交通灯能根据简单划分的时间段来调整时间,但控制起来都不是很灵活,这使得城市车流的调节不能达到最优。而我们设计的交通灯充分考虑了在道路繁忙时,各道口车流量不同,和消防车、警车等车辆通过路口时等紧急情况,给予了交通指挥一定的自由度,设计更加人性化。
目录
一、设计背景 3
二、设计原理 3
三、电路图 4
(一)逻辑图: 4
(二)交通信号模拟控制系统电路原理图 5
四、程序流程图 6
五、编写程序 7
六、仿真结果图 15
(一)东西绿灯,南北红灯: 15
(二)东西黄灯,南北红灯 16
(三)东西红灯,南北绿灯 17
(四)东西黄灯,南北绿灯 18
七、调试 19
八、结论 19
九、参考文献 20
(一) 网络参考 20
(二)书本参考 20
一、设计背景
交通灯是一个城市经济的动脉,它不但体现了一个城市的发展活力,也直接与老百姓的生活息息相关。所谓“路通财通”就是说明了一个良好的交通环境的重要性。而交通灯在这个交通环境中起一个重要的角色,智能的交通灯能有效地缓解城市的交通压力,减少交通事故;智能交通灯能为当地人民节省大量的出行时间,创造出更多的社会价值;智能的交通灯为交通顺畅提供了保障,对当地经济起着一个不可估量的作用。
目前研究交通灯的方案有很多,有应用CPLD设计交通信号灯控制器方法,有应用PLC实现对交通灯的控制系统的设计。有应用单片机实现对交通信号灯设计的方法。目前国内的交通灯一般设在十字路口,在醒目位置用红黄绿三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一个车道为副干道,车辆较少,放行时间应该短些。2.没有考虑到紧急车辆通过时,两车道都应该采取措施。譬如:消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
二、设计原理
用AT89C51单片机控制一个交通灯系统,晶振采用12 MHz。设A车道与B车道交叉组成十字路口,A车道是主干道,B为支道。设计要求如下:
(一)用发光二极管模拟交通信号灯;
(二)正常情况下,A, B两车道轮流放行,A车道放行50 s,另有3s用于警告;东西南北车道放行30 s,另有3s用于警告;
(三)在交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。在B车道放行期间,若A车道有车而B车道无车,按下模拟开关K1使A车道放行15s;
(四)有紧急车辆通过时,按下开关K2使A, B车道均为红灯,禁止通行30s。
三、电路图
当一个车道有车而另一个车道没车时、可采用外部中断执行中断服务程序,分别以按钮开关K1,K2模拟A、B车道的车辆检测情况。当按下K1时、A车道通行;当按下K2时,B车道通行。
由此可得卡诺图如下:
表达式:
(一)逻辑图:
(二)交通信号模拟控制系统电路原理图
北
四、程序流程图
五、编写程序
交通灯信号灯模拟系统程序如下:
#INCLUDE <AT89X51.H>
UNSIGNEDCHAR CODE SEGDATA[]={0X3F,0X06,0X5B,0X4F,0X66,
0X6D,0X7D,0X07,0X7F,0X6F};
UNSIGNED CHAR LEDCODE[]={0X0C,0X0C,0X0A,0X21,0X21,0X11};
//**********************0X21东西红灯,南北绿灯
//**********************0X11东西红灯,南北黄灯
//**********************0X0C东西绿灯,南北红灯
//**********************0X0A东西黄灯,南北红灯
UNSIGNED CHAR SECOND;
UNSIGNED CHAR RED,GRE,YELL;
//UNSIGNED CHAR KEYCNT;
UNSIGNED INT TCNT,FLAG;
//UNSIGNED INT K;
VOID DEPLAY10MS(VOID)
{
UNSIGNED INT I,J;
FOR(I=0;I<4;I++)
FOR(J=0;J<250;J++);
}
VOID S0(VOID)
{
P1=0XFE;
P0=SEGDATA[RED/10];
P3=SEGDATA[GRE/10];
DEPLAY10MS();
P1=0XFD;
P0=SEGDATA[RED%10];
P3=SEGDATA[GRE%10];
DEPLAY10MS();
}
VOIDS1(VOID)
{
P1=0XFE;
P0=SEGDATA[RED/10];
P3=SEGDATA[YELL/10];
DEPLAY10MS();
P1=0XFD;
P0=SEGDATA[RED%10];
P3=SEGDATA[YELL%10];
DEPLAY10MS();
}
VOID S2(VOID)
{
P1=0XFE;
P3=SEGDATA[RED/10];
P0=SEGDATA[GRE/10];
DEPLAY10MS();
P1=0XFD;
P3=SEGDATA[RED%10];
P0=SEGDATA[GRE%10];
DEPLAY10MS();
}
VOID S3(VOID)
{
P1=0XFE;
P3=SEGDATA[RED/10];
P0=SEGDATA[YELL/10];
DEPLAY10MS();
P1=0XFD;
P3=SEGDATA[RED%10];
P0=SEGDATA[YELL%10];
DEPLAY10MS();
}
VOID SEGPLAY(VOID)
{
SWITCH(FLAG)
CASE 0:
CASE1: S0();BREAK;
CASE 2:S1();BREAK;
CASE 3:
CASE 4:S2();BREAK;
CASE 5:S3();BREAK;
}
}
VOID YELLS(VOID)
{
UNSIGNED CHAR I;
P2=LEDCODE[FLAG];
FOR(I=0;I<10;I++)
{
SEGPLAY();
}
P2=LEDCODE[FLAG]&0XED;
FOR(I=0;I<10;I++)
{
SEGPLAY();
}
}
VOID GRES(VOID)
{
UNSIGNED CHAR I;
P2=LEDCODE[FLAG];
FOR(I=0;I<10;I++)
{
SEGPLAY();
}
P2=LEDCODE[FLAG]&0XDB;
FOR(I=0;I<10;I++)
{
SEGPLAY();
}
}
VOID MAIN(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;
SEGPLAY();
SWITCH(FLAG)
{
CASE 0:P2=LEDCODE[FLAG];BREAK;
CASE 1:GRES();BREAK;
CASE 2:YELLS();BREAK;
CASE 3:P2=LEDCODE[FLAG];BREAK;
CASE 4:GRES();BREAK;
CASE 5:YELLS();BREAK;
}
}
}
VOID T0(VOID) INTERRUPT 1 USING 0
{
TCNT++;
TH0=0X3C;
TL0=0XB0;
IF(TCNT==20)
{
TCNT=0;
SECOND--;
IF(SECOND==0)
{
SECOND=30;
FLAG++;
}
IF(SECOND==5)
{FLAG++;}
IF(SECOND==10)
{FLAG++;}
IF(FLAG==6)
{FLAG=0;}
}
}
六、仿真结果图
(一)东西绿灯,南北红灯:
北
(二)东西黄灯,南北红灯
北
(三)东西红灯,南北绿灯
北
(四)东西黄灯,南北绿灯
北
七、调试
单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则无从谈起。
硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路故障,包括设计性错误和公益性故障。一般原则是先静态后动态。
利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。
先要将单片机AT89 S51芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,这些都没有问题后,接上仿真机进行联机调试观察各接口线路是否正常。
单片机AT89 S51是系统的核心,利用万用表检测单片机电源Vcc是否为(40脚)+5 V、晶振是否正常工作(可用示波器测试,也可以用万用表检测,两引脚电压一般为1.8~2.3V)、复位引脚RST(复位时为高电平,单片机工作时为低电平)、EA是否为+5V(高电平),这样一来单片机就能工作了,再结合电路图,检测故障就很容易了。
八、结论
通过为本次课程设计,使我对这门课有了许多新的了解,弥补了在课堂上学习的不足。相信这对我以后的学习和工作都会有很大的帮助。
首先,通过实体仿真软件等辅助软件的共同效果,是这次课程设计有了鲜明的活力。还使我认识到这次实训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂上无法得到的东西。特别是protues软件的功能是我了解了当今开发系统的新方向,令人大开眼界!
在本次课程设计中我通过一个智能交通灯的设计,使我深深地体会到了在现实生活中的应用,既增强了我们的好奇心,又巩固了我们的理论知识。更让我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,就有可能让他成为现实。这里我学习完protues软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在这次课程设计中不仅只对C51编程有了新的认识,还对整个C51的开发平台都有了一定的了解,这是一笔不错的收获。
通过这次课程设计,使我的感触很深,要达到目的,不同的人就有不同的方法。只要你的方法不错!五花八门都可以,而且是各有特色。走出来的结果都有各自的独到之处。在编程中“简”字贯穿于整个程序设计中,越简单越好,毕竟C51留给用户的资源是有限的,所以我们要充分利用这些资源,达到更好的效果,这些是我们在以后的学习生活中应值得注意的地方。
最后十分感谢老师对我的帮助和支持!
九、参考文献
(一) 网络参考
1 中国电子网:
2 东哥电子技术网:
3 常用电子元件资料:http://www.xie-
4 常用电子元器件:http://www.hongyan-
(二)书本参考
1 苏伟斌,等.51系列单片机应用手册[M].北京:北京希望电子出版社.2003.
2 何立民,等.MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社.1990.
3 胡汉才,等.单片机原理及系统设计[M].北京:清华大学出版社.2002.
展开阅读全文