交通灯设计(版本1)_第1页
交通灯设计(版本1)_第2页
交通灯设计(版本1)_第3页
交通灯设计(版本1)_第4页
交通灯设计(版本1)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书(计算机学院)设计课题:专业班级:学生姓名:学生学号:指导教师:2目录第一章:摘要.3第二章:引言.3第三章:设计目的及简要.43.1设计目的.43.2设计步骤.43.3具体内容.5第四章:详细设计.64.1设计所需芯片及其特性.64.2设计电路:.64.3交通灯电路:.74.4倒计时显示电路:.8第五章:程序运行效果图.95.1程序运行效果图.95.2正常状态.105.3黄灯状态.105.4紧急状态.11第六章:软件框图.126.1主程序流程图:.12第七章:交通灯的设计程序说明.137.1源程序代码.13第八章:调试与运行.178.1调试平台.178.2调试程序.17第九章:心得体会.18第十章:设计资料及参考文献.193第一章:摘要近年来随着科技的飞速发展,一个以微电子技术、计算机技术和通信技术为先导的信息革命正在蓬勃发展。计算机技术作为三者之一,怎样与实际应用更有效的结合并发挥其作用。单片机作为计算机技术的一个分支,正在不断的应用到实际生活中,同时带动传统控制检测的更新。在实时检测和自动控制的应用系统中,单片机往往是作为一个核心部件使用,针对具体应用对象的特点,配以其它器件来加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现交通的井然秩序呢?靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。交通信号灯控制方式很多。本系统采用美国ATMEL公司生产的单片机AT89S51,以及其它芯片来设计交通灯控制。实现了通过AT89S51芯片的P1口设置红、绿灯点亮的功能,通过AT89S51芯片的RXD、TXD输入、输出设置显示时间。交通灯的点亮采用发光二极管实现,时间的显示采用七段数码管实现。单片机系统采用的直流供电。为了系统稳定可靠,系统内集成了“看门狗”芯片,避免了系统因为死机而停止工作的情况发生。系统实用性强、操作简单、扩展性好。第二章:引言今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥挤现象日4趋严重,造成的经济损失越来越大,并一直保持大比例的增长。现在交通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。第三章:设计目的及简要3.1设计目的由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。3.2设计步骤1.利用Proteus7.5SP3仿真软件按下列要求绘制仿真实例,用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯,用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码,P31、P32、P34P37控制数码管的位选,P20P24接收中断信号并反馈给INT0接口进行中断处理。2.按照基本要求编制程序实现相应功能。硬件电路图硬件电路图通过Proteus7.5SP3仿真之后如图所示,其中:按钮K0连接P20端口实现红灯全亮,处理交通意外按钮K1连接P21端口实现南北方向亮灯时间+1s按钮K2连接P22端口实现南北方向亮灯时间-1s按钮K3连接P23端口实现东西方向亮灯时间+1s按钮K4连接P24端口实现东西方向亮灯时间-1s整体实验连接电路如下图所示5图一3.3具体内容本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:1.初始东西绿灯亮,南北红灯亮,东西方向通车。2.延时27s,东西路口绿灯熄灭,黄灯闪烁3次。3.黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车4.延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。5.当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键),重新按上述方式工作。6.当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。6第四章:详细设计4.1设计所需芯片及其特性本设计使用的单片机为AT89C51。AT89C51是带有4K字节闪存的低电压高性能微处理器。其主要特性:1、与MCS-51兼容4K字节可编程FLASH存储器。2、寿命:1000写/擦循环。3、数据保留时间:10年。4、全静态工作:0Hz-24MHz。5、三级程序存储器锁定。6、1288位内部RAM。7、32可编程I/O线。8、两个16位定时器/计数器。9、5个中断源。10、可编程串行通道。11、低功耗的闲置和掉电模式。12、片内振荡器和时钟电路。4.2设计电路:设计电路主要由两部分组成,一部分为P1口与十二个发光二极管连接电路,另一部分是P0、P2口与八个七段显示器相连的电路,下面分别详细说明。74.3交通灯电路:设计中采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0P1.5控制。单片机的I/O接口与交通灯电路的具体连接方式为:P1.0P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3P1.5分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阳极的连接方式,因此I/O口输出低电平时,与之相连的发光二极管会亮,I/O口输出高电平时,相应的发光二极管会灭。交通灯电路如图所示图二84.4倒计时显示电路:该显示装置选用七段数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要两个数码管,这样四个路口就要求八个数码管。有序AT89C51单片机的I/O作为输出时,具有较强吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O就可以直接驱动,从而简化硬件电路的设计。四个路口倒计时显示被置在同一时刻显示相同的数字,期中P0口用来显示时间的十位,P2口用来显示时间的个位。电路如下图所示12345678abcdefgh12345678abcdefgh12345678hgfedcbaP85P86R510kR610kP83P84R310kR410k图三9第五章:程序运行效果图5.1程序运行效果图图四105.2正常状态图五5.3黄灯状态图六115.4紧急状态图七5.5元件清单:名称件数参数选择理由电阻810K限流,以免烧坏数码管发光二极管123色便于仿真显示AT89C5114K闪存低电压,高性能八位微处理器七段显示数码管8常用数字显示,便于仿真开关3特殊情况使用12第六章:软件框图6.1主程序流程图:开始初始化,全部为黄灯并按照初始化运行东西红灯亮,南北绿灯亮调用显示程序,将时间送显示东西黄灯闪烁,南北黄灯烁调用显示程序,将时间送显示东西绿灯亮,南北红灯亮调用显示程序,将时间送显示东西黄灯闪烁,南北黄灯闪烁调用显示程序,将时间送显示13第七章:交通灯的设计程序说明7.1源程序代码#include#defineucharunsignedchar#defineuintunsignedintsbitnom=P37;ucharcodeled_table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示数码表ucharcodelight_state=0x21,0x12,0x0c,0x12;/交通灯状态存储表ucharcodeem_state3=0x24,0x21,0x0c;/紧急灯状态显示表ucharlight_time2=0,4,0,1,0,5,0,1;/显示时间存储表ucharstatebef,time1s=100,state=0;/存储紧急灯状态,定时基数,状态基数uinttime;/显示时间变量bitmd_flag,state_flag=1,red;/显示时间更改状态,状态切换标志位,红绿切换标志位/*-延时函数-*/voiddelay(void)uchari,j;for(i=100;i0;i-)for(j=100;j0;j-);/*-读状态函数:判断是否有紧急灯状况出现-*/ucharrd_emstate(void)ucharvalue;value=P3;value=4;valueif(value!=statebef)statebef=value;return1;/判断是否有紧急灯状况发生,保存按键值,置返回标志为1elsereturn0;/*-显示函数14-*/voiddisplay(void)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_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=0xed;P0=led_tabletime/10%10;delay();/秒的十位P2=0xdb;P0=led_tabletime%10;delay();/秒的个位/*-主函数-*/voidmain()/初始化定时器0,外部中断1EA=1;EX1=1;IT1=1;ET0=1;TMOD=0x01;TH0=-10000/256;TL0=-10000%256;TR0=1;while(1)if(rd_emstate()/如果有紧急灯按下,进行如下紧急处理switch(statebef)case0x04:P1=em_state0;TR0=0;break;/紧急灯15亮case0x02:P1=em_state1;TR0=0;break;/东西应急灯亮case0x01:P1=em_state2;TR0=0;break;/南北应急灯亮case0x00:TR0=1;break;default:break;if(state_flag)/正常状态下时间切换,如果状态标志为1,进行如下处理,进行状态间切换switch(state)case0:time=light_time00*60+light_time01;P1=light_state0;break;/南北红灯亮时间case1:time=light_time10*60+light_time11;P1=light_state1;break;/黄灯亮时间case2:time=light_time20*60+light_time21;P1=light_state2;break;/南北绿灯亮时间case3:time=light_time10*60+light_time11;P1=light_state1;break;/黄灯亮时间default:break;state_flag=0;/清标志位if(nom=0)md_flag=0;/恢复时间状态,更改为最近更改的值display();/*-定时器0-*/voidTime0int(void)interrupt1EA=0;TH0=-10000/256;TL0=-10000%256;time1s-;if(time1s=0)/一秒中到,重新置数time1s=100;time-;/显示时间自减if(time=0)/显示时间减到0时切换显示时间状态16state+;/四个状态轮流切换if(state=4)state=0;state_flag=1;/置状态切换标志位EA=1;/*-外部中断1-*/voidExint1(void)interrupt2EA=0;md_flag=1;/置更改时间标志位if(red)switch(P3&0X07)case6:light_time01+;if(light_time01=60)light_time01=0;break;/南北方向绿灯时间秒加小于60scase5:light_time00+;if(light_time00=10)light_time00=0;break;/分加小于10mcase3:red=0;break;/红绿灯切换elseswitch(P3&0X07)case6:light_time21+;if(light_time21=60)light_time21=0;break;/南北方向红灯时间秒加小于60case5:light_time20+;if(light_time20=10)light_time20=0;break;/分加小于10case3:red=1;break;/红绿灯切换EA=1;17第八章:调试与运行8.1调试平台我们采用的是KeilSoftware生产的Cx51编译器。运行在WindowsXP操作平台下。开启计算机进入KeilC51编译器介面图八8.2调试程序1打开Keil软件,新建工程;单片机交通灯设计2选择芯片;3新建文档,把编写好代码写入文档并保存了ASM文件;4把保存的文档加载到SourceGroup;5编译程序;6设置转换成16进制;7运行程序的结果;8把编译好的16进制文件(jtd.hex)输入单片机AT89S51仿真器和对其进行初始化。9给实验板进行通电,观察运行结果,不一致则跳到第一步进行反复调试,直到与预定目的一致。以下是在程序调试过程中出现在情况:通电以后,把程序装好,数码管是的数字不变,按复位键后重新开始还是如此。经过和同组人的共同分析后,发现是中断系统在计时到了118秒以后,赋的初值R0,R1没有减1,修改如下:DSD:INCR3MOVTH1,#3CHMOVTL1,#0B0HCJNER3,#20,FH;判断是否够1秒DECR0DECR1MOVR3,#00H;R3清0FH:RETI;中断返回通电以后,东西、南北方向的时间均递减,20秒以后,东西方向的20秒用完,变成东西左转、南北各20秒,此后,时间显示和红绿灯不再变化,一直保持这一状态。经过老师和同组人的共同努力,终于找到原因,问题出在循环控制过程中,当经过第一次20秒判断后,寄存器R2加1,当再次运行到循环控制处时,判断R2与#01H相同,程

温馨提示

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

评论

0/150

提交评论