您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的交通信号灯
二○一六~二○一七学年第一学期电子信息工程系电子产品策划与设计报告书班级:课程名称:学生姓名:学号:指导教师:二○一六年十二月基于单片机的交通信号灯一、设计要求近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。初始状态为状态1,南北方向绿灯通车,东西方向红灯。经过一段时间(25S)转换状态2,南北方向亮黄灯,延时5S,东西方向仍然红灯,再转换到状态3,东西方向绿灯通车,南北方向红灯。过一段时间(25S)转换到状态4,东西方向绿灯亮黄等,延时5S,南北方向仍然红灯。最后循环至南北绿灯,东西红灯。在这些状态下,有时钟倒数计时。二、电路设计及原理分析1、本设计由STC82C52最小系统模块,电源供电模块,交通信号灯模块,显示倒计时模块。2、路口交通指挥系统示意图如下所示:(本设计实物中东西、南北方向各做一个)干道主红黄绿支道红黄绿干3、设计的方案如下:(1)本设计采用单片机89C52作为控制器,通行时间及等待时间使用数码管以倒计时的方式显示,使用单片机P0.2-P0.4口控制东西方向的车辆通行;使用单片机P0.5-P0.7口控制南北方向车辆的通行;用P0.1-P02口控制两位共阴极数码管的选通;用P3.3口作为紧急情况东西南北方向全部红灯。(2)方案中设计有由人工控制的复位电路。(3)考虑到紧急情况获交通管制阶段需要路段不通车,本方案设计有东西南北四个方向全为红灯的设计。综上所诉,该产品的实现需要单片机模块,晶振模块,复位模块,中断信号模块,交通灯模块,倒计时数显模块,电源供电模块。三、焊接及安装调试过程1、调试过程如下图所示:2、焊接过程:3、焊接注意事项:(1)焊接前,应先检查焊锡设备和工具是否安全,如是否接触良好,焊接电缆绝缘外套有无破损等。(2)选用合适的焊锡。应选用焊接电子原件用的低熔点焊锡丝。(3)焊接时间不宜过长,否则容易烫伤原件。必要时可用镊子夹住管脚帮忙散热。(4)电烙铁应放在烙铁架上。2、安装调试过程(1)焊接完毕后,通电前对电路进行检查,首先检查正极与地是都短路,接下来检查各器件的高电平与电源是否接通,接地端是否与地线接通;(2)通电检查,如果通电交通灯没有反应,应立即关掉电源。重新检查电路。检查cpu的30号引脚电平的大小,并作出判断。正常情况下,30号引脚的电平为1-3V,若为5V,则说明cpu没有正常工作。四、软件设计软件的设计分以下5个步骤进行:1、分析问题,抽象出描述问题的数据模型根据课程设计要求,基本提出设计方案及包含的设计模块2、确定程序设计的思想主函数控制交通灯的亮灭,并加入延时子程序、显示子函数等调用函数。定义初试时间为25秒,每减一秒,进行一次延时子函数调用,并通过计时器控制时间为1秒,并调用数码管显示函数,从而输出倒计时,如此循环。3、流程图如下主函数→延时子函数→数显子函数→返回主函数→延时子函数……4、根据设计进行程序编写。5、静态检查,上机调试。五、安装调试结果六、个人体会及心得查找教材,资料,相应软件,为了这次课程设计,我们在图书馆及网络上查找了大量的相关资料,终于被我找全了和本次课程设计相关的不懂问题。根据所分析的系统的电路原理图,结合系统的设计要求,在Proteus环境下进行元器件之间的连线和编译与仿真,及时检查元器件的放置、连线是否有错误。根据交通灯系统的控制要求,经过实验,排除所有实验中的错误并实现了预定的功能。在老师的指导下,通过学习交通灯系统控制器的设计的实验,学习一种设计电子的软件,增加了我们对电子设计的了解。本次设计出现的问题及解决方法:1、焊接不够熟练,出现了虚焊漏焊情况,经过后期检查电路才得以发现并解决问题,自己的焊接水平有了很大的提高;2、程序编写过程比较艰难,自己的编程能力还有待提高,通过查阅书籍资料,自学了很多课外知识,收获颇丰;3、在电脑上进行仿真时,对软件操作熟练,软件的仿真还需要狠多特殊要求,比如:电脑用户名路径不能出现中文等,需要多次尝试才能发现问题。此次实验不但提高了我们实践的能力和理论水平,而且对于我们认识掌握各种操作技巧具有重大意义,使我们的综合素质得到了很大的提高。当然,通过这次实习,对我的影响远不只以上这些,它对我在以后的学习和生活中将会起到不可估量的作用。最后,我建议学校多搞些这样的设计,在锻炼我们的同时还丰富了我们的生活,还建议在今后的设计报告中,提供一些好的报告让我们参考。附录:#includereg51.hsbitled_A=P0^0;//数码管位sbitled_B=P0^1;//数码管位sbitdx_R=P0^2;sbitdx_Y=P0^3;sbitdx_G=P0^4;sbitnb_R=P0^7;sbitnb_Y=P0^6;sbitnb_G=P0^5;bitflag=0;sbitkey_stop=P3^3;charN=25;//初始时间是25chartab_disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7C,0x39,0x5E,0x79,0x71,0x80};//共阴极码表/*延时子函数*/voiddelay(intt){while(t--);}/*显示子函数*/voiddisplay(chardat){led_A=led_B=1;P2=0XFF;P2=~tab_disp[dat/10];if(dat/10)led_A=0;delay(1000);//延时P2=0XFF;led_A=led_B=1;//段灭显位灭显P2=~tab_disp[dat%10];//赋显示的数led_B=0;delay(1000);//延时}//循环显示60遍显示的函数voiddeal(charm){intt=60;while(t--)display(m);//循环显示60遍显示的函数}voidKEY(){unsignedcharsave;if(key_stop==0){flag=1;save=P0;P0=0x84;while(key_stop==0);while(flag==1){if(key_stop==0){flag=0;P0=save;while(key_stop==0);}}}}/*主函数*/voidmain(void){chari;EA=1;//全局中断开关IT1=1;//外部中断下降沿有效EX1=1;while(1){N=25;//初始时间是25dx_R=1;dx_Y=0;dx_G=0;//指示灯0是亮,1是灭nb_R=0;nb_Y=0;nb_G=1;//指示灯0是亮,1是灭for(i=N;i0;i--)//一秒一秒的减{deal(i);KEY();}dx_R=1;dx_Y=0;dx_G=0;//指示灯0是亮,1是灭nb_R=0;nb_Y=1;nb_G=0;//指示灯0是亮,1是灭N=5;//时间变成5for(i=N;i0;i--)//一秒一秒的减{deal(i);KEY();}dx_R=0;dx_Y=0;dx_G=1;//指示灯0是亮,1是灭nb_R=1;nb_Y=0;nb_G=0;//指示灯0是亮,1是灭N=25;//时间变成25for(i=N;i0;i--)//一秒一秒的减{deal(i);KEY();}dx_R=0;dx_Y=1;dx_G=0;//指示灯0是亮,1是灭nb_R=1;nb_Y=0;nb_G=0;//指示灯0是亮,1是灭N=5;//时间变成5for(i=N;i0;i--)//一秒一秒的减{deal(i);KEY();}}}
本文标题:基于单片机的交通信号灯
链接地址:https://www.777doc.com/doc-7345336 .html