基于单片机的十字路口交通灯设计论文_第1页
基于单片机的十字路口交通灯设计论文_第2页
基于单片机的十字路口交通灯设计论文_第3页
基于单片机的十字路口交通灯设计论文_第4页
基于单片机的十字路口交通灯设计论文_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z.摘 要近年来随着科技的飞速开展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件构造软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。则靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示交通灯信号通过P1口

2、输出,显示时间通过P0口输出至双位数码管。本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。关键词:单片机;交通灯 AbstractIn recent years, with the rapid development of science and technology, the application of SCM is going deep, driving the traditional detection techniques to renew day by day. In the real-time e*amination and in the automatic

3、 control monolithic integrated circuit application system, the monolithic integrated circuit often took a core part uses.The monolithic integrated circuit aspect knowledge is only insufficient, but should also act according to the concrete hardware architecture software and hardware union, to be imp

4、roved.The intersection vehicles shuttle, the pedestrian is bustling, car dealership traffic lane, person sidewalk, methodical. Then depending on what to realizes this orderly order the traffic lights on the automatic control system. There are great number kinds of modes to control the traffic lights

5、. The system uses a series of MCS-51 as the center AT89C51 single-chip device designed to control the traffic lights,so as to realize the function of setting red, green light time by 8051 chips P3 port according to the actual traffic flows, lighting the red-light and green-light by turn and lighting

6、 the yellow-light to warm while 5 seconds left(outputting the traffic light signal by P1,outpuing the time by P0 and showing the time on double-digitsni*ie tube). Short of the design cycle, high reliability, practical, simple operation, easy maintenance, the e*pansion of powerful is this system.Key

7、words:SCM; MCU; traffic light目 录TOC o 1-2 h z uHYPERLINK l _Toc278403553中 英 文 摘 要 PAGEREF _Toc278403553 h 2HYPERLINK l _Toc2784035541设计要求4HYPERLINK l _Toc278403555设计目的 PAGEREF _Toc278403555 h 4HYPERLINK l _Toc2784035563方案比拟、设计与论证 PAGEREF _Toc278403556 h 4HYPERLINK l _Toc2784035574原理分析 PAGEREF _Toc27

8、8403557 h 5HYPERLINK l _Toc2784035584.1 交通灯显示时序的理论分析 PAGEREF _Toc278403558 h 5HYPERLINK l _Toc2784035594.2 交通灯显示的理论分析7HYPERLINK l _Toc2784035605程序设计流程图 PAGEREF _Toc278403560 h 7HYPERLINK l _Toc2784035616总体设计与电路图 PAGEREF _Toc278403561 h 9HYPERLINK l _Toc2784035626.1芯片选择 PAGEREF _Toc278403562 h 9HYPER

9、LINK l _Toc2784035636.2设计电路图10HYPERLINK l _Toc2784035646.3PROTEUS仿真图:11HYPERLINK l _Toc2784035656.4交通灯程序12HYPERLINK l _Toc2784035667 仿真测试、数据及结果分析18HYPERLINK l _Toc2784035678 总结与展望 PAGEREF _Toc278403567 h 18HYPERLINK l _Toc278403568致谢20HYPERLINK l _Toc278403569参考文献:21HYPERLINK l _Toc278403570附 录 PAGE

10、REF _Toc278403570 h 221设计要求1.1程序开场运行先南北段通行、东西段制止60s,后东西段通行、南北段制止60s,依此循环。 1.2系统分三种工作模式:正常模式、繁忙模式、特殊模式,并且通过三个按钮正常、繁忙、特殊可相互转化。1.3正常模式: 直行时间显示数码管显示60。此时南北段直行通行绿灯、东西段制止红灯40s,南北段人行道通行绿灯,东西段人行道制止红灯,同时南北段和东西段方向的数码管分别从40s和60s开场倒计时,至最后5s时南北段绿灯变成黄灯闪烁;此后南北段左拐左拐灯亮通行、东西段制止红灯20s,南北段、东西段人行道都制止红灯,同时南北段和东西段方向的数码管都从2

11、0s开场倒计时,至最后5s时南北段左拐灯变成黄灯闪烁;再后东西段直行通行绿灯、南北段制止红灯40s,东西段人行道通行绿灯,南北段人行道制止红灯,同时东西段和南北段方向的数码管分别从40s和60s开场倒计时,至最后5s时东西段绿灯变成黄灯闪烁;最后东西段左拐左拐灯亮通行、南北段制止红灯20s,东西段、南北段人行道都制止红灯,同时东西段和南北段方向的数码管都从20s开场倒计时,至最后5s时东西段左拐灯变成黄灯闪烁。1.4繁忙模式:繁忙指示灯亮,南北段、东西段的通行时间改为45s,其中左拐的时间改为15s,其它与正常模式类似。1.5特殊模式:特殊模式灯亮,南北段、东西段的通行时间改为75s,其中左拐

12、的时间改为20s,其它与正常模式类似。设计目的2.1了解交通灯管理的根本工作原理2.2熟悉AT89C51的工作原理和应用编程2.3熟悉AT89C51并行接口的各种工作方式和应用2.4熟悉AT89C51计数器/定时器的工作方式和应用编程外部中断的方法2.5掌握多位LED显示问题的解决 3方案比拟、设计与论证3.1 显示界面方案3.1.1 倒计时显示该系统要求完成倒计时的功能。因只需显示数字,基于上述原因,我们考虑完全采用数码管显示,四个路口分别采用一个二位阴极数码管即可。3.1.2 状态灯显示该系统要求完成状态灯显示的功能。求于简单,我们把各个路口的红灯和黄灯设成直行和左拐两个通行方式所共有,也

13、就是说,一个路口只需四个状态灯,一个直行通行的绿灯,一个左拐通行的绿灯,一个共有的红灯,一个共有的黄灯。3.2 输入方案该系统要求能手动改变东西与南北的通行时间、紧急情况处理,我们采用扩展I/O口方法,在外部中断P32口上扩展三个中断口,分别连接三个按钮。该方案的优点是:使用灵活,并且可提供较多I/O口,节省了AT89C51的中断口资源。4原理分析4.1 交通灯显示时序的理论分析下列图所示为一种红绿灯规则的状态图。图4.1 状态S1南北直行通行图4.2 状态S2南北左拐通行图4.1 状态S1南北直行通行图4.2 状态S2南北左拐通行图4.4 状态S4东 西左拐通行图4.3 状态S3东西直行通行

14、图4.4 状态S4东 西左拐通行图4.3 状态S3东西直行通行共四种状态,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期,循环执行如下列图所示:图4.5 交通灯状态循环图图4.5 交通灯状态循环图依据上述车辆行驶的状态图,可以列出各个路口灯的逻辑表如下表所示(其中逻辑值1代表直行通行,逻辑值0代表制止通行,逻辑值L代表左拐通行):S1的状态ESWN逻辑值0101显示时间正常模式下为40SS2的状态ESWN逻辑值0L0L显示时间正常模式下为20SS3的状态ESWN逻辑值1010显示时间正常模式下为40SS4的状态ESWN逻辑值L0L0显示时间正常模式下为20S程序就是在上述四种状

15、态下循环转化的。一个周期四个状态,在正常模式下共花费2分钟。4.2 交通灯显示的理论分析4.2.1 倒计时显示的理论分析 利用定时器中断,设置TH0=TH1(65536-50000)/256,即每0.05秒中断一次。每到第20次中断即过了20*0.05秒1秒时,使时间的计数值减1,便实现了倒计时的功能。4.2.2 状态灯显示的理论分析 黄灯闪烁同样可以利用定时器中断。每到第10次中断即过了10*0.05秒0.5秒时,使黄灯标志位反置,即可让黄灯1秒闪烁一次。5程序设计流程图T0响应T0响应N南北黄灯标志位为1N东西黄灯标志位为1Y0.5s到Y1s到南北黄灯位置反团里Y东西黄灯位置反团里Y返回倒

16、计时减1,计数值置0NN图5.1 定时器0中断流程图开场开场南北直行通行东西制止南北左拐通行东西制止AT89C51初始化南北黄灯闪烁南北黄灯闪烁通行35秒YN闪烁5秒YN通行15秒YN闪烁5秒YN东西黄灯闪烁东西直行通行南北制止东西左拐通行南北制止东西黄灯闪烁通行35秒YN闪烁5秒YN通行15秒YN闪烁5秒YN图5.2 主程序流程图INT0响应INT0响应N繁忙键按下N特殊键按下N正常键按下返回关中断开中断正常模式设置Y繁忙模式设置Y特殊模式设置Y图5.3 外部中断0中断流程图6总体设计与电路图6.1芯片选择AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,有40个引

17、脚,32个外部双向输入/输出I/O端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,有40个引脚,32个外部双向输入/输出I/O端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器CPU和Flash存储单元

18、,可以按照常规方法对其进展编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱。图6.1 AT89C51芯片引脚图图6.1 AT89C51芯片引脚图6.2设计电路图图6.2 电路图图中大局部连线采用总线形式。共五个二位阴极数码管,其中四个分别用于四个路口的倒计时显示,另外一个用于总体的直行时间显示,五个数码管的阳极都接到AT89C51的P0口,阴极接到P2口;共32个发光二极管,其中16个绿色发光二极管,14个红色发光二极管,2个黄色发光二极管,四个路口每个路口各有一个红禁行、黄警告发光二极管,二个绿色发光二极管通行,一个

19、用于直行通行,一个用于左拐通行,四个人行道,每个人行道两边各有一红、绿发光二极管,另外两个红色发光二极管分别用于繁忙模式和特殊模式的指示,其中四个路口的二极管接到P1口,人行道的发光二极管接到P3口,繁忙模式和特殊模式的指示灯接P2口;外部中断0接上三个按钮,分别用于繁忙、特殊、正常模式的转化。6.3PROTEUS仿真图:图6.3 PROTEUS仿真图图6.3 PROTEUS仿真图6.4交通灯程序/* 十字路口交通灯控制 C 程序*/#include #defineucharunsigned char#defineuintunsigned int/*定义控制位*/sbit Time_Show_

20、LED2=P25; /Time_Show_LED2(直行时间显示)控制位sbit Time_Show_LED1=P24; /Time_Show_LED1(直行时间显示)控制位sbit EW_LED2=P23; /EW_LED2控制位sbit EW_LED1=P22; /EW_LED1控制位sbit SN_LED2=P21; /SN_LED2控制位sbit SN_LED1=P20; /SN_LED1控制位sbit SN_Yellow=P16; /SN黄灯sbit EW_Yellow=P12; /EW黄灯sbit EW_ManGreen=P30; /EW人行道绿灯sbit SN_ManGreen=

21、P31; /SN人行道绿灯sbit Special_LED=P26; /交通特殊指示灯sbit Busy_LED=P27; /交通繁忙指示灯sbit Nomor_Button=P35; /交通正常按键sbit Busy_Btton=P36; /交通繁忙按键sbit Special_Btton=P37; /交通特殊按键 sbit EW_ManRed=P33; /EW人行道红灯sbit SN_ManRed=P34; /SN人行道红灯bit Flag_SN_Yellow; /SN黄灯标志位bit Flag_EW_Yellow; /EW黄灯标志位char Time_EW; /东西方向倒计时单元char

22、 Time_SN; /南北方向倒计时单元uchar EW=60,SN=40,EWL=19,SNL=19; /程序初始化赋值,正常模式uchar EW1=60,SN1=40,EWL1=19,SNL1=19; /用于存放修改值的变量uchar code table10=0*3F,0*06,0*5B,0*4F,0*66,0*6D,0*7D,0*07,0*7F,0*6F; /0-9段选码uchar code S8=0*28,0*48,0*18,0*48,0*82,0*84,0*81,0*84; /交通信号灯控制代码/*延时子程序*/void Delay(uchar a)uchari;i=a;while

23、(i-);/*显示子函数*/void Display(void)uchar h,l;h=Time_EW/10;l=Time_EW%10; P0=tablel; EW_LED2=1; /点亮EW_LED2Delay(2);EW_LED2=0; /熄灭EW_LED2P0=tableh;EW_LED1=1; /点亮EW_LED1Delay(2);EW_LED1=0;h=Time_SN/10;l=Time_SN%10;P0=tablel;SN_LED2=1; /点亮SN_LED2Delay(2);SN_LED2=0;P0=tableh;SN_LED1=1; /点亮SN_LED1Delay(2);SN_

24、LED1=0;h= EW1/10;l= EW1%10;P0=tablel;Time_Show_LED1=1; /点亮Time_Show_LED1Delay(2); Time_Show_LED1=0;P0=tableh;Time_Show_LED2=1;/点亮Time_Show_LED2Delay(2);Time_Show_LED2=0; /*外部0中断效劳程序*/void INT0_srv(void)interrupt 0 using 1 E*0=0; /关中断 if(Nomor_Button=0) /测试按键是否按下,按下为正常状态 EW1=60;SN1=40;EWL1=19;SNL1=19

25、;Busy_LED=0; /关繁忙信号灯Special_LED =0; /关特殊信号灯 if(Busy_Btton=0) /测试按键是否按下,按下为繁忙状态 EW1=45;SN1=30;EWL1=14;SNL1=14;Special_LED=0; /关特殊信号灯Busy_LED=1; /开繁忙信号灯 if(Special_Btton=0)/测试按键是否按下,按下为特殊状态 EW1=75;SN1=55;EWL1=19;SNL1=19;Busy_LED=0; /关繁忙信号灯Special_LED =1;/开特殊信号灯 E*0=1; /开中断/*T0中断效劳程序*/void timer0(void)

26、interrupt 1 using 1static uchar count;TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=10) if(Flag_SN_Yellow=1) /测试南北黄灯标志位 SN_Yellow=SN_Yellow; if(Flag_EW_Yellow=1) /测试东西黄灯标志位 EW_Yellow=EW_Yellow; if(count=20) Time_EW-; Time_SN-; if(Flag_SN_Yellow=1) /测试南北黄灯标志位 SN_Yellow=SN_Yellow; if(Fla

27、g_EW_Yellow=1) /测试东西黄灯标志位 EW_Yellow=EW_Yellow; count=0;/*主程序开场*/voidmain(void) Busy_LED=0;Special_LED=0;IT0=1; /INT0负跳变触发TMOD=0*01; /定时器工作于方式1TH0=(65536-50000)/256; /定时器赋初值TL0=(65536-50000)%256;EA=1; /CPU开中断总允许ET0=1; /开定时中断E*0=1; /开外部INTO中断TR0=1; /启动定时 while(1) /*S0状态*/SN_ManRed=0;SN_ManGreen=1; /SN

28、人行道通行EW_ManRed=1;/EW人行道制止EW_ManGreen=0;Flag_EW_Yellow=0; /EW关黄灯显示信号Time_EW=EW;Time_SN=SN;while(Time_SN=5) P1=S0;/SN绿灯,EW红灯 Display();/*S1状态*/P1=0*00;while(Time_SN=0)Flag_SN_Yellow=1; /SN开黄灯信号位P1=P1|0*08; /保持EW红灯Display();/*S2状态*/SN_ManRed=1; /SN人行道制止SN_ManGreen=0;EW_ManRed=1; /EW人行道制止EW_ManGreen=0;F

29、lag_SN_Yellow=0; /SN关黄灯显示信号Time_SN=SNL;while(Time_SN=5)P1=S2; /SN左拐绿灯亮,EW红灯Display();/*S3状态*/P1=0*00;while(Time_SN=0)Flag_SN_Yellow=1;/SN开黄灯信号位P1=P1|0*08; /保持EW红灯Display();/*赋值*/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*S4状态*/SN_ManRed=1; /SN人行道制止SN_ManGreen=0;EW_ManRed=0;EW_ManGreen=1; /EW人行道通行Flag_SN_Yell

30、ow=0; /SN关黄灯显示信号Time_EW=SN;Time_SN=EW;while(Time_EW=5) P1=S4; /EW通行,SN红灯Display();/*S5状态*/P1=0*00;while(Time_EW=0)Flag_EW_Yellow=1;/EW开黄灯信号位P1=P1|0*80; /保持SN红灯Display();/*S6状态*/SN_ManRed=1; /SN人行道制止SN_ManGreen=0;EW_ManRed=1; /EW人行道制止EW_ManGreen=0;Flag_EW_Yellow=0;/EW关黄灯显示信号Time_EW=EWL;while(Time_EW=

31、5)P1=S6; /EW左拐绿灯亮,SN红灯Display();/*S7状态*/P1=0*00;while(Time_EW=0)Flag_EW_Yellow=1; /EN开黄灯信号位P1=P1|0*80; /保持SN红灯Display();/*赋值*/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;7 仿真测试、数据及结果分析程序运行结果如下:1 首先,直行时间显示数码管显示60。此时南北段绿灯亮、东西段红灯亮40s,南北段人行道绿灯亮,东西段人行道红灯亮,同时南北段和东西段方向的数码管分别从40s和60s开场倒计时。2 35秒后,南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红

32、灯亮,人行道灯不变。3 40秒后,南北方向左拐灯亮,东西方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从19秒开场倒计时。4 55秒钟后,南北方向的黄灯闪烁5秒,此时东西方向仍维持红灯亮,人行道灯不变。5 1分钟后,东西段绿灯亮、南北段红灯亮40s,东西段人行道绿灯亮,南北段人行道红灯亮,同时南北段和东西段方向的数码管分别从60s和40s开场倒计时。6. 1分35秒后,东西方向的黄灯闪烁5秒钟,此时南北方向仍维持红灯亮,人行道灯不变。7 1分40秒后,东西方向左拐灯亮,南北方向红灯亮,东西和南北人行道全部红灯亮,同时南北段和东西段方向的数码管分别从19秒开场倒计时。

33、8 1分55秒钟后,东西方向的黄灯闪烁5秒,此时南北方向仍维持红灯亮,人行道灯不变。9. 按下繁忙、特殊按钮时直行显示分别为45和75。其它过程与正常模式下一样。8 总结与展望8.1 软件延时与定时器计时软件延时,设计简单,使用方便,但是无法进展准确计时,无法在实际应用中进展使用,本次设计采用了定时器0进展计时,每50ms产生一个脉冲信号,可以准确的计时并方便8段数码管进展显示。8.2 使用中断的好处使用中断可以进展多样化设计,强化程序功能与执行效率。在本设计中程序每50ms请求一次中断,实现准确定时与数码管显示刷新。8.3 关于本次设计本次课程设计的过程是艰辛的,不过收获却是很大的。在设计过程中,会出现了一些问题,但都是常见的小问题,如:代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。综合课程设计让我把以前学习到的知识得到稳固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,但通过查阅相关书籍、资料以及和周围同学交流后都得以一一解决。由于使用的是单片机作为

温馨提示

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

评论

0/150

提交评论