交通灯控制系统设计

上传人:优*** 文档编号:44766989 上传时间:2021-12-05 格式:DOC 页数:28 大小:556KB
收藏 版权申诉 举报 下载
交通灯控制系统设计_第1页
第1页 / 共28页
交通灯控制系统设计_第2页
第2页 / 共28页
交通灯控制系统设计_第3页
第3页 / 共28页
资源描述:

《交通灯控制系统设计》由会员分享,可在线阅读,更多相关《交通灯控制系统设计(28页珍藏版)》请在装配图网上搜索。

1、目 录摘要I第1章 绪论11.1设计背景11.2设计要求11.3设计思路1第2章 设计总电路图及硬件设计22.1设计总电路图22.2硬件设计22.3系统时钟电路32.4系统复位电路32.5数码管显示电路42.6路灯指示电路52.7按键电路设计6第3章 软件系统设计63.1设计思路及关键技术63.2 软件流程73.3 延时函数83.4 读状态函数83.5 显示函数93.6 定时器0中断函数10第4章 Proteus软件仿真104.1 Proteus软件仿真104.2 南北路灯切换时仿真114.3 紧急情况下的仿真114.4东西紧急情况下的仿真12第5章 结束语13参考文献14致谢15附录 源程序

2、代码16第1章 绪论1 / 281.1 设计背景近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。1.2 设计要求本系统采用8051系列单片机AT89C52为中心器件来设计交通灯控制器,实现了通过8051芯片的P1口设置红、绿灯燃亮时间显示的功能;P0口连接交通灯循环点亮,本系统操作简单、扩展功能强

3、。1.3 设计思路 A、B两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为A、B两干道的公共停车时间。设A道比B道的车流量大,指示灯燃亮的方案如表2-1-1。141514A道黄灯亮红灯亮黄灯亮绿灯亮黄灯亮红灯亮B道黄灯亮绿灯亮黄灯亮红灯亮黄灯亮绿灯亮表2-1-1说明:(1)当为黄灯时 A、B两道同时为黄灯;以提示行人或车辆下一个灯色即将到来 时间 1秒。 (2)当A到为红灯,A 道车辆禁止通行,A 道行人可通过;B 道为绿灯,B 道车辆通过,行人禁止通行。时间为4秒。(

4、3)当A道绿灯,A 道车辆通行;B 道为红灯,B 道车辆禁止通过,行人通行。时间为5秒。 A道车流大 通行时间长(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。(5)此表可根据车流量动态设定在没有特殊情况下,即在两道均有车辆要求通过时,交通灯按常规运行。通过控制开关可以输入要模拟的其它状态,交通灯将按照其输入状态的情况进行运行。第2章 设计总电路图及硬件设计2.1 设计总电路图 2.2 硬件设计交通灯控制系统的结构框图如图2-2-1所示。总体设计方案共有五个部分组成,分别是:单片机AT89C51、红、绿、黄灯显示电路、LED数显时间电路、晶振及复位控制电路

5、、控制与调时开关电路。在进行仿真调试过程中,程序运行正确,五个部分就同时工作,从而实现了交通灯的基本功能及调时功能。图2-2-1 硬件设计方案 2.3 系统时钟电路 晶振采用了内部时钟信号源的方式。对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本系统的实际应用中一定要注意正确选择参数(3010 PF),并保证对称性(尽可能匹配)。图2-3-1 系统时钟电路 2.4 系统复位电路复位电路我采用上电+按钮复位的方式。当开关打开时,RST通过电阻接地,当有开关闭合时由于电容的作用使电源VCC通过电阻施加在

6、单片机复位端RST上,实现单片机复位。只是可惜,在进行仿真器调试过程中,该复位电路是不起作用的。具体电路如图2-4-1所示。 图2-4-1 系统复位电路 2.5 数码管显示电路数码管工作原理 这里我们介绍8段数码管的工作原理。8段数码管又称为8字型数码管,分为8段:A、B、C、D、E、F、G、DP。其中,DP为小数点。数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共段,两根之间相互连通。 发光二极管的发光原理,我们已经介绍过了,同理,8段LED数码管,则是在一定形状的绝缘材料上,利用不同形状点划的发光二极管组合,排列成“8”字型的数码管,分别引出它们的电极,点亮相应的

7、点划来显示0-9的数字。 从电路上,按数码管的接法不同又分为共阴和共阳两种。图2-5-1是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。图2-5-1 数码管的内部电路接法在设计时,为了系统图的美观,我采用了6个数码管组成的数码管组,采用共阴极接法。如图2-5-2。 图2-5-2 系统数码管电路2.6 路灯指示电路 在设计路灯时,采用了发光二极管代替路灯。先介绍一下二极管,见图 2-6-1。二极管工作原理是单向导通,即只有正极电压高于负极电压某特定值时才会导通,而负极电压高于正极电压是不导通的。图 2-6-1 发光二极管示意图发光二极管是一种特殊的二极管,导通

8、时会发光(发光二极管导通压降一般为1.7V1.9V)。此外,工作电流要满足该二极管的工作电流。 发光二极管的正负极可以用万用表进行判断,把万用表拨至二极管档或电阻挡,用两个表笔分别接触二极管的两个引出脚。若发光二极管被点亮,则与红表笔相接的引出脚为正极。从外观上看,发光二极管的正极引脚的长度也比较长。 一般发光二极管与I/O端口之间都会再连接一个电阻,其作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。一般发光二极管的点亮电流为5mA至10mA。 路灯设计时我采用了红、黄、绿三种发光二级管。如图2-6-2所示。 图2-6-2 路灯设计电路2.7 按键电路设计按键工作方

9、式可以是中断方式也可以是扫描方式,对扫描方式来说,扫描是一直调用按键扫描程序,也可以用定时调用按键扫描程序,不管哪一种,都需要占用系统宝贵的时间资源,相比较而言中断就有优势,中断键盘只有在有按键按下时才去执行键盘程序,在没有按键按下的情况下,可以处理其他的事务,使资源得到充分的利用,故中断键盘有占用资源少,响应速度快的优点,但在有按键按下时有数码管闪烁的缺点,这是因为处理中断时,数码管停止了扫描,对显示要求不高的场合下,这也是完全可以满足要求的。但实际应用中,为了保证安全查询键值和响应,通常还要进行按键去抖和等待键释放(查询按键是否抬起)的动作, 由于按键本身是机械开关,所以在触点闭合或断开的

10、瞬间会出现电压抖动的现象。按键设计如图2-7-1所示。图2-7-1 按键电路第3章 软件系统设计3.1 设计思路及关键技术 一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、单片机、显示电路等构成。单片机是集成的IC芯片,只需根据实际设计要求选型。其他部分都需要根据应用要求和性能指标自行设计。首先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,

11、南北仍然红灯。最后循环至状态1。3.2 软件流程系统总体流程图如图3-2-1所示:display();default:break;南北应急灯亮东西应急灯亮紧急灯亮switch(statebef)清标志位黄灯亮时间南北绿灯时间黄灯亮时间南北红灯时间switch(state)state_flagwhile(1)初始化定时器0,外部中断1nom=0re_emstate()md_flag=0图3-2-1整体软件设计流程图3.3 延时函数延时函数的流程图如图3-4-1。延时程序如下:/*-延时函数-*/void delay(void) uchar i,j; for(i=100;i0;i-) for(j=

12、100;j0;j-); /循环10000次 3.4 读状态函数读状态函数的流程图如图3-5-1。 读状态函数如下:/*-读状态函数:判断是否有紧急灯状况出现图3-4-1 延时函数的流程图-*/uchar rd_emstate(void) uchar value; value=P3; value=4; value&=0x07; if(value!=statebef)statebef=value;return 1;/判断是否有紧急灯状况发生,/保存按键值,置返回标志为1 else return 0; 图3-4-2 读状态函数的流程图3.5 显示函数显示函数如下:void display(void)

13、 if(md_flag=1)/显示更改时间状态 if(1=red) / 南北方向红灯时间显示 P2=0xf6; P0=led_tablelight_time00;delay();/分钟 P2=0xed; P0=led_tablelight_time01/10;delay();/秒的十位 P2=0xdb; P0=led_tablelight_time01%10;delay();/秒的个位 else /正常状态,显示时间 P2=0xf6; P0=led_tabletime/100; delay();/分钟 P2=0xed; P0=led_tabletime/10%10;delay();/ 秒的十位

14、 P2=0xdb; P0=led_tabletime%10; delay();/秒的个位 3.6 定时器0中断函数定时器0中断函数如下:void Time0int(void) interrupt 1 EA=0; TH0=-10000/256; TL0=-10000%256; time1s-; if(time1s=0)/一秒中到,重新置数 time1s=100;time-;/显示时间自减if(time=0)/显示时间减到0时切换显示时间状态 state+;/四个状态轮流切换 if(state=4) state=0; state_flag=1;/置状态切换标志位 EA=1; 第4章 Proteus

15、软件仿真4.1 Proteus软件仿真Proteus软件用于系统的仿真,编译软件采用keil UV3。程序的仿真用英国的labcenter公司的Protens V7.13。其果如下:加电后的结果如图4-3-1。此时时间已经走过一秒,南北是红灯,东西是绿灯。图4-3-1 加电后仿真4.2 南北路灯切换时仿真切换时,转为黄灯亮,时间为一秒钟。如图4-2-1。图4-2-1 黄灯亮时4.3 紧急情况下的仿真此时,全部为红灯,所用车辆禁行,时间被锁定,此时允许特殊车辆经过。如图4-3-1。图4-3-1 紧急情况下的路灯显示4.4东西紧急情况下的仿真此时,南北为红灯,东西为绿灯,南北车辆禁行,东西可以通过

16、。时间被锁定,此时允许东西车辆经过。如图4-4-1。图4-4-1 东西紧急情况下的路灯显示第5章 结束语通过此次课程设计让我能够亲身参与电子产品的设计使我更加深深地体会到:现代的社会是信息的社会,很多与人们生活紧密相关的产品都是电子产品。要熟练地掌握单片机的基本知识,这样才能对试验中出现的问题进行分析解决。通过这次对交通灯系统的设计,我们掌握了设计一个实用装置电路的基本方法和基本步骤,掌握了实用装置工作的基本原理,实际解决了设计中出现的问题,增强了寻找问题,解决问题的能力。此次电子设计的成功不仅帮助我们更好地掌握书本知识,尤其重要的是增强了我们的自信,培养了我们独立思考的能力!通过这周紧张而充

17、实的课程设计,我学到了很多东西,让我重新认识自己,收益匪浅,并对我以后所要做的毕业设计有了一个初步的了解。做好一个课程设计或毕业设计不仅要具备扎实的书本知识并会善于应用,还要学会查阅资料,对以前学过的知识不清楚的地方还要进行复习,实在搞不明白的地方要向老师或同学请教,这样才可能做出一个比较不错的课程设计。在这里我要感谢我们的指导老师,非常感谢老师的指导和帮助。希望以后还能参加这样的课程设计。我想我会做的更好的。参考文献1余发山. 单片机原理及应用技术. 中国矿业大学,20022李朝青. 单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,19983李广弟. 单片机基础. 北京:北京航

18、空航天大学出版社,19924李泉溪. 单片机原理与应用实例仿真. 北京:北京航空航天大学出版社,20095江世明. 基于proteus的单片机应用技术. 北京:电子工业出版社,2009致 谢本次课程设计是在刘伟春老师的亲切关怀和精心指导下完成的,在此,对他的关心、指导和教诲表示衷心的感谢!我的设计自始至终都是在刘老师全面、具体的指导下进行的,刘老师在论文选题方面的远见卓识以及在完成课题和论文期间富有启发性的建议是本次课程设计得以顺利完成的根本保证。他高尚的品德、严谨的学风、一丝不苟的治学态度和孜孜不倦的工作精神使我终生受益,这将为我今后的学习和工作打下坚实的基础。感谢我的同学李娣、陈霞等人对我

19、的关心和帮助。他们的鼓励是我坚持完成本次课程设计的动力,他们提出的宝贵建议是我成功完成设计的保证。最后,感谢评阅老师评阅本论文并提出宝贵意见!附录 源程序代码#include#define uchar unsigned char#define uint unsigned intsbit nom=P37;uchar code led_table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示数码表uchar code light_state=0x21,0x12,0x0c,0x12;/交通灯状态存储表uchar code em_sta

20、te3=0x24,0x21,0x0c;/紧急灯状态显示表uchar light_time2=0,4,0,1,0,5,0,1;/显示时间存储表uchar statebef,time1s=100,state=0;/存储紧急灯状态,定时基数,状态基数uint time;/显示时间变量bit md_flag,state_flag=1,red;/显示时间更改状态,状态切换标志位,红绿切换标志位/*-延时函数-*/void delay(void) uchar i,j; for(i=100;i0;i-) for(j=100;j0;j-); /*-读状态函数:判断是否有紧急灯状况出现-*/uchar rd_e

21、mstate(void) uchar value; value=P3; value=4; value&=0x07; if(value!=statebef)statebef=value;return 1;/判断是否有紧急灯状况发生,保存按键值,置返回标志为1 else return 0; /*-显示函数-*/void display(void) if(md_flag=1)/显示更改时间状态 if(1=red) / 南北方向红灯时间显示 P2=0xf6; P0=led_tablelight_time00;delay();/分钟 P2=0xed; P0=led_tablelight_time01/1

22、0;delay();/秒的十位 P2=0xdb; P0=led_tablelight_time01%10;delay();/秒的个位 else /南北绿灯东西红灯亮时间显示 P2=0xf6;P0=led_tablelight_time20; delay();/分钟 P2=0xed;P0=led_tablelight_time21/10; delay();/秒的十位 P2=0xdb;P0=led_tablelight_time21%10; delay();/秒的个位 else /正常状态,显示时间 P2=0xf6; P0=led_tabletime/100; delay();/分钟 P2=0xe

23、d; P0=led_tabletime/10%10;delay();/ 秒的十位 P2=0xdb; P0=led_tabletime%10; delay();/秒的个位 /*-主函数-*/void main()/初始化定时器0,外部中断1 EA=1; EX1=1; IT1=1; ET0=1; TMOD=0x01; TH0=-10000/256; TL0=-10000%256; TR0=1; while(1) if(rd_emstate()/如果有紧急灯按下,进行如下紧急处理 switch(statebef) case 0x04:P1=em_state0;TR0=0;break;/紧急灯亮 ca

24、se 0x02:P1=em_state1;TR0=0;break;/东西应急灯亮 case 0x01:P1=em_state2;TR0=0;break;/南北应急灯亮 case 0x00:TR0=1;break;default: break; if(state_flag)/正常状态下时间切换,如果状态标志为1,进行如下处理,进行状态间切换 switch(state) case 0:time=light_time00*60+light_time01; P1=light_state0;break;/南北红灯亮时间 case 1:time=light_time10*60+light_time11;

25、P1=light_state1;break;/黄灯亮时间 case 2:time=light_time20*60+light_time21; P1=light_state2;break;/南北绿灯亮时间 case 3:time=light_time10*60+light_time11; P1=light_state1;break;/黄灯亮时间 default: break; state_flag=0;/清标志位 if(nom=0) md_flag=0;/恢复时间状态,更改为最近更改的值 display(); /*-定时器0-*/void Time0int(void) interrupt 1 E

26、A=0; TH0=-10000/256; TL0=-10000%256; time1s-; if(time1s=0)/一秒中到,重新置数 time1s=100;time-;/显示时间自减if(time=0)/显示时间减到0时切换显示时间状态 state+;/四个状态轮流切换 if(state=4) state=0; state_flag=1;/置状态切换标志位 EA=1; /*-外部中断1-*/void Exint1(void) interrupt 2 EA=0; md_flag=1;/置更改时间标志位 if(red) switch(P3&0X07) case 6: light_time01+

27、; if(light_time01=60) light_time01=0;break;/南北方向绿灯时间 秒加 小于60s case 5: light_time00+; if(light_time00=10) light_time00=0;break;/分加 小于10m case 3: red=0;break;/红绿灯切换 else switch(P3&0X07) case 6: light_time21+; if(light_time21=60) light_time21=0;break;/南北方向红灯时间 秒加 小于60 case 5: light_time20+; if(light_time20=10) light_time20=0;break;/分加 小于10 case 3: red=1;break;/红绿灯切换 EA=1; 温馨提示:最好仔细阅读后才下载使用,万分感谢!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!