二零一三年四月交通灯远程控制系统交通灯远程控制控制系统摘要要保证高效安全的交通秩序除了制定一系列的交通规则还必须通过一定的科技手段加以实现本文在对目前交通控制进行深入分析的基础上提出了基于单片机的交通控制系统设计方案通过总体设计交通灯原理接线图综合应用单片机原理微机原理微机接口技术等方面的知识结合单片机仿真系统的使用方法通过软硬件结合使用89C51单片机来设计出符合要求的交通灯控制系统完成由单片机89C51发光二极管LED数字显示器开关部分电阻及电容组成的交通灯控制系统系统除基本交通灯功能外还具有倒计时显示时间设置紧急情况处理LED信息显示时间可以根据具体情况手动控制等功能从而提高交通灯制系统的总体能力和综合应用能力关键词单片机交通灯闯红灯LED目录绪论1第1章方案选择及总体设计211方案选择212总体设计2121系统构成2122功能概述3第2章系统硬件设计521实现总体模型52289C51芯片介绍523工作原理6第3章系统软件设计731软件总体流程图732每秒钟的设定8331秒钟的方法8第4章系统调试分析及结果941电路板实物的制作942系统硬件调试943系统软件调试944系统总体调试10第5章总结11第6章谢辞12第7章参考文献13第8章附录14附录A原理图14附录BPCB版图15附录C元件清单16附录D单片机程序171绪论近年来随着国民经济的快速发展车辆的增多交通拥挤和阻塞现象时常出现交通拥塞已成为城市交通中迫切需要解决的社会问题而我国传统使用的定周期控制和各路口各自的独立控制方法在解决这些问题时效果并不是很好越来越多的证据表明简单地扩大道路基础设施并不能解决交通拥堵问题这要求在现有道路条件下提高交通控制和管理水平合理使用现有交通设施充分发挥其能力更加灵活有效地提高道路的利用率本文采用51系列单片机为中心器件设计交通灯交通灯是城市交通有序安全快速运行的重要保障而保障交通灯信号灯正常工作就成了保障交通有序安全快速运行的关键交通灯远程控制系统的设计可以在专业技能方面得到一个很大的提高同时在制板画板排布等方面可以得到全面的思维锻炼并熟练技巧因此研究交通远程控制系统有着十分重要的意义本课题主要从单片机的应用上来实现十字路口交通灯智能化的管理用以控制过往车辆的正常运作设计主要由振荡器和时钟电路组成设计方法有查阅法通过手机和网络知识进行概述实验法在实验室里做出单片机口的交通灯控制系统对比法单片机口的交通灯控制系统技术与其他技术进行比较采用MCS51系列单片机AT89C51为中心器件来设计交通灯控制电路实现了能根据实际车流量通过8051芯片的PI口设置红绿灯燃亮的时间的功能红绿灯循环点亮倒计时剩5秒时黄灯闪烁警示三种颜色等交替点亮以及紧急情况下的中断处理功能因此研究交通远程控制系统有着十分重要的意义2第1章方案选择及总体设计11方案选择能实现此电路的方法很多我们根据实际将范围定在以下几个比较切合我们的方案中第一种方案采用数字电子技术实现用基本的555芯片利用单稳态实现定时计数芯片如74LS16374LS160等完成计时功能控制电路芯片译码芯片如74LS138等基本芯片结合电阻电容等基本元件通过逻辑电路实现交通灯的功能第二种方案使用单片可编程来实现交通灯的功能利用单片机的外围扩展显示电路构成基本硬件然后编程实现对定时控制显示电路的控制然后调试完成设计结合实际情况根据毕业设计任务书的要求经过讨论和论证最终一致选用第二种方案的设计思路对交通灯控制系统进行设计12总体设计121系统构成整个系统的构成以AT89C51单片机为核心由IO口扩展LED数码管显示紧急情况中断电路还有复位电路等组成单片机作为整个硬件系统的核心它既是协调整机工作的控制器又是数据处理器它由单片机时钟电路复位电路等组成行车方向指示采用LED发光二极管可有红绿两种颜色指示放行与禁止黄灯作为红绿转换的提示形象直观行人通行指示也同样采用LED发光二极管用红绿两种颜色指示放行与禁止黄灯作为红绿转换的提示形象直观简洁明了更方便控制按键控制台可供警察在室内实时监视交通状况通过按键可设置紧急情况发生时的交通灯状态控制人机界面非常友好系统采用双数码管倒计时计数功能最大显示数字99友好的人机界面灵活的控制方式优化的物理结构以及丰富的功能是本设计的亮点控制系统的总框图如图1示3图1控制系统的总框图122功能概述本设计由中断系统单片机LED数码显示模块和按键等构成单片机是集成的IC芯片AT89C51单片机只需根据实际选型其他部分都需要根据应用要求和性能指标自行设计图2实现实际电路注以上电路图为我们所设计的交通灯控制系统的具体电路图在东南西北4四个方向的LED指示灯代表四个方位的交通信号灯电路图的下方是单片机控制系统复位中断等子电路1本系统交通灯控制规则如下1每个街口有左拐右拐直行及行人四种指示灯每个灯有红绿黄三种颜色自行车与汽车共用左拐右拐和直行灯2共有四种通行方式车辆南北直行各路右拐南北向行人通行南北向通行时间为1分钟各路右拐比直行滞后20秒钟开放南北向左拐各路右拐行人禁行通行时间为20分钟东西向直行各路右拐东西向行人通行东西向通行时间为1分钟各路右拐比直行滞后10秒钟开放东西向左拐各路右拐行人禁行通行时间为1分钟3在通行结束前10秒钟绿灯闪烁直至结束2有倒计时时间显示时间红绿灯切换提前5秒亮黄灯提示3若交道口出现紧急情况交警可手动控制全路口车辆禁行行人通行紧急情况结束后再转成自动状态5第2章系统硬件设计21实现总体模型图3实现总体模型2289C51芯片介绍189C51引脚图管脚图及各引脚功能介绍图489C51管脚图XTAL119脚接外部晶体的一端在片内它是振荡电路反相放大器的输入端在采用外部时钟时对于HMOS单片机该端引脚必须接地对于CHMOS单片机此引脚作为驱动端XTAL218脚接外部晶体的另一端在片内它是一个振荡电路反相放大器的输出端振荡电路的频率是晶体振荡频率若需采用外部时钟电路对于HMOS单片机该引脚输入外部时钟脉冲对于CHMOS单片机此引脚应悬浮交通灯显示时间显示时间89C51系统处理输入输出引脚1P00P0739脚32脚2P10P171脚8脚3P20P2726脚21脚4P30P3710脚17脚6RST9脚单片机刚接上电源时其内部各寄存器处于随机状态在该脚输入24个时钟周期宽度以上的高电平将使单片机复位RESETPSEN29脚在访问片外程序存储器时此端输出负脉冲作为存储器读选通信号CPU在向片外存储器取指令期间PSEN信号在12个时钟周期中两次生效不过在访问片外数据存储器时这两次有效PSEN信号不出现PSEN端同样可驱动8个LSTTL负载我们根据PSENALE和XTAL2输出端是否有信号输出可以判别80C51是否在工作ALEPROG30脚在访问片外程序存储器时此端输出负脉冲作为存储器读选通信号CPU在向片外存储器取指令期间PSEN信号在12个时钟周期中两次生效不过在访问片外数据存储器时这两次有效PSEN信号不出现PSEN端同样可驱动8个LSTTL负载我们根据PSENALE和XTAL2输出端是否有信号输出可以判别89C51是否在工作EAVPP31脚当EA端输入高电平时CPU从片内程序存储器地址0000H单元开始执行程序当地址超出4KB时将自动执行片外程序存储器的程序当EA输入低电平时CPU仅访问片外程序存储器在对87C51EPROM编程时此引脚用于施加编程电压VPP23工作原理1由89C51单片机的P1口显示红绿黄灯的亮灭情况由P0口显示每个灯的亮灭时间绿黄红时间分别为20秒5秒20秒循环由89C51单片机的P0口输出显示2通过单片机的P2口中任两位来控制数码管的高低位显示模拟接线接2122脚在实际电路焊接中是接了2326即对应P22十位P25个位口来控制软件中相应位也对应为P22和P25即可3南北红东西绿红灯倒计时20秒后然后灭4南北黄东西黄黄灯闪动5秒5南北绿东西红绿灯倒计时20秒后重新开始循环第3章系统软件设计硬件平台结构一旦确定大的功能框架即形成软件在硬件平台上构筑完7成各部分硬件的控制和协调系统功能是由软硬件共同实现的由于软件的可伸缩性最终实现的系统功能可强可弱差别可能很大因此软件是本系统的灵魂软件采用模块化设计方法不仅易于编程和调试也可减小软件故障率和提高软件的可靠性同时对软件进行全面测试也是检验错误排除故障的重要手段31软件总体流程图软件总体设计及流程图见图31主要完成各部分的软件控制和协调本系统主程序模块主要完成的工作是对系统的初始化发送显示数据同时对按键进行扫描等待外部中断以及根据所需要的功能进行相应的操作其流程图如图5所示图5软件总体流程图主程序比较简单初始化完成后调用按键扫描程序取得按键状态并根据当前系统状态调用相应的子程序32每秒钟的设定延时方法可以有两种一中是利用MCS51内部定时器产生溢出中断来确定1秒的8时间另一种是采用软件延时的方法331秒钟的方法我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒这样每当T0到50毫秒时CPU就响应它的溢出中断请求进入他的中断服务子程序在中断服务子程序中CPU先使软件计数器减然后判断它是否为零为零表示1秒已到可以返回到输出时间显示程序9第4章系统调试分析及结果因本设计本身要求有稳定性高免维护抗干扰能力强等功能系统调试除了验证数据处理的精度确保判断的准确性外同时必须确认各项功能的正常运行41电路板实物的制作由于本电路硬件设计中用单片机的两个IO口控制各路交通灯的循环点亮用同一芯片单片机的P1口和P3口的高四位来控制数码管的显示点亮因此在同一芯片中所要接的线路比较多在硬件的布局中各位LED灯和数码管的布局比较固定化集中分布在所控制的四个路口因此若采用双面PCB板的话这个电路的布线比较容易实现但是现实水平中做双面板会出现一些焊点接触不良而导致电路调试过程不易实现因此我们决定使用单面板布线单片面板的布线需要牺牲本设计电路板一部分实际电路的美观印制电路板的设计是以电路原理图为根据实现电路设计者所需要的功能印刷电路板的设计主要指版图设计需要考虑外部连接的布局内部电子元件的优化布局金属连线和通孔的优化布局电磁保护热耗散等各种因素优秀的版图设计可以节约生产成本达到良好的电路性能和散热性能简单的版图设计可以用手工实现复杂的版图设计需要借助计算机辅助设计CAD实现42系统硬件调试在设计过程中我们使用了proteus硬件仿真软件对该设计的硬件电路进行了实物功能仿真仿真效果良好实物交通灯控制系统的PCB电路板焊接工作量非常大电路安装完成后首先进行检查即确认电路无虚焊无短路无断路集成元件安装是否正确之后进行电路功能模块的分级调试根据电路功能逐级进行通行方式功能调试包括对四种通行方式控制调试行人和行车方向指示灯亮度和驱动电路调试倒计时功能调试数码管亮度调试复位和紧急情况手动控制功能调试43系统软件调试本系统的软件系统很大选用一般的伟福仿真器对程序进行编写和调试除了语法差错外当确认程序没问题时通过直接下载到单片机来调试采取的是自下到上的调试方法即单独调试好每一个模块然后再连接成一个完整的系统最后完成一个完整的系统调试1044系统总体调试系统做好后进行系统的完整调试主要任务是检验实现的功能及其效果并校正误差测试一开始我们就发现了系统出现了两个问题一是有一部分交通灯亮度不够所发出来的光非常的微弱以致于几乎感觉不到它的亮度二是数码管不工作没有时间显示这与设计的要求完全不符为了找出这个问题和解决方法我们查找了电路的输出各部分的输出电平发现了一个现象我们采用的数码管是共阴极数码而控制数码段显示的P1口输出的是高电平经多方查阅资料解决第二个问题可以有两个解决方法其一将硬件电路作修改将数码管换成共阳极的数码管这样数码管就可以正常进行时间显示了其二修改程序让控制数码管段码的P1输出的是低电平若采用修改硬件电路的方法的话硬件电路就得作变动已经布好的线也必须有相应的变动操作起来比较麻烦所以我们采用了第二种方法修改了程序电路中的段码代码再次调试按照设计要求的指标系统数码管电路部分基本能按照预先设定的要求来进行倒计时的显示亮度要求也基本符合预先设想接下来还有一个问题有待解决交通灯亮度不足以致于部分交通灯只能勉强看得出来它在亮而已这明显不能满足设计要求经多方检测我们认为这是由于LED灯驱动能力不足引起的亮度弱问题若要修正这个问题那就得为LED灯增加驱动电路以提高电路的驱动能力要实现这一步骤必须对硬件电路进行一定的改动LED灯的驱动电路可以用集成电路电路芯片来进行驱动在初步方案中我们考虑要用集成电路来完成但是由于客观方面的原因将要参加工作离开学校没有制作实物的环境条件因此这部分改进只作了一个设想并没有时间去付诸实施但基本问题和解决问题的原理我们还是有一定的了解11第5章总结在本次毕业设计作品交通灯控制电路的设计和制作中我对电子设计方面有了很大的提高同时也更加的了解十字路口交通灯的工作原理和实际应用过程也对前一阶段的单片机课程学习和各种EDA设计软件的学习有了进一步的巩固和提高对一些单片机的应用延迟电路的设计应用和数码管的电路程序的应用有了更多的理解在设计的过程先是设计好电路图后开始到实验室进行电路焊接最后到作品的调试其中在整个过程中遇到了很大的挑战和困难不过最后在同学们的帮助下都得以一一解决从开始数码管的选择错误到最后的电路调试从开始的程序编写到最后的软件测试大家互相帮助共同进步同时对相关设计软件应用也有了进一步的了解和熟悉也对电子设计的整体流程有了更多的理解经过这次毕业设计我学到了很多书本上没有的比较实际实用的东西学会了怎样将理论知识运用到实际设计当中对实验设备和设计软件的使用和分析问题解决问题的能力也有了很大的提高同时也明白了电路焊接和作品调试时需要更多的耐心通过这次实训课程设计不仅可以在专业上可以学到更多的知识同时也对平时的学习和工作中产生了影响那就是认认真真的去完成每一件事12第6章谢辞本次毕业设计已经接近尾声作为一个本人第一个的毕业设计由于经验的匮乏难免有许多考虑不周全的地方如果没有导师的督促指导以及一起工作的同学们的支持想要完成这个设计是难以想象的在这里首先要感谢我的导师叶香美老师老师平日里工作繁忙但在我做毕业设计的每个阶段从外出实习到查阅资料设计草案的确定和修改中期检查等整个过程中都给予了我悉心的指导除了敬佩叶老师的专业水平外她的治学严谨和科学研究的精神也是我永远学习的榜样并将积极影响我今后的学习和工作其次要感谢大学一年多年来所有的老师为我打下扎实的专业知识基础最后还要感谢所有的同学们正是因为有了他们的支持和鼓励此次毕业设计才会顺利完成13第7章参考文献1蒋运茂电工仪表与测量M北京中国劳动出版社19942谢自美阎树兰赵去娣朱如琪罗杰电子线路设计实验测试J武汉化中科技大学出版社2000第8章附录附录A原理图1415附录BPCB版图附录C元件清单序号元件名称型号规格个数个161单片机AT89C5112集成块MAX23213按键SPPB14发光二极管LED135三极管PNP46电源MC78L05CP17数码管DPY7SEGDP48电解电容1000uF19电解电容10uF110电容01uF111电解电容1uF412电解电容22uF113电容30pF214晶振12M115电感100uH116二极管1N4007418电阻10K119电阻3001220电阻1k1328接口DB9129插座8PIN130插座4PIN2插座2PIN1插座6PIN1附录D单片机程序includebitTFlagbitTFlag1sbitP20P2017sbitP21P21sbitP22P22sbitP23P23sbitP24P24sbitP25P25sbitP26P26sbitP27P27sbitS3P16sbitS4P17bitZflag1bitS3flag0bitS4flag0sbitEWredP10东西红灯sbitEWgreenP12东西绿灯sbitEWyellowP11东西黄灯sbitNSredP13南北红灯sbitNSgreenP15南北绿灯sbitNSyellowP14南北黄灯unsignedcharkeykeybufcodeunsignedchardispcode0x110xD70x320x920xD40x980x180xD30x100x90unsignedintdispbuf8disppvoidtime0initvoidIT01EX01EA1voidTimer0interrupt1TH00xf2TL00xf9TFlag1mainunsignedchariintsecintjintmsec20j0TMOD0x01TH00x0218TL00x02ET01EA1TR01time0initwhile1whileZflagifsec5ampampm0EWyellow1NSyellow1EWred0EWgreen1NSred1NSgreen0ifsecEWyellowTFlag1NSyellowTFlag1EWred1EWgreen1NSred1NSgreen1ifsec0jmj2sec20ifsec5ampampm1EWyellow1NSyellow1EWred1EWgreen0NSred0NSgreen1ifsec19EWyellowTFlag1NSyellowTFlag1EWred1EWgreen1NSred1NSgreen1ifsec0jmj2sec20ifTFlag1TFlag0ii18disppifdispp302dispp0sec45TFlag1sec2dispbuf7sec10dispbuf6sec10dispbuf5sec10dispbuf4sec10dispbuf3sec10dispbuf2sec10dispbuf1sec10dispbuf0sec10P201P211P221P231P241P251P0dispcodedispbufiifi0P200P211P221P231P241P251P261P271ifi1P201P210P221P231P241P251P261P271ifi2P201P211P220P231P241P251P261P271ifi3P201P211P221P230P241P251P261P271ifi4P201P211P221P231P240P251P261P271ifi5P201P211P221P231P241P250P261P271ifi6P201P211P221P231P241P251P260P271ifi7P201P211P221P231P241P251P261P270ifwhileZflag20ifS30S3flag1S4flag0sec20EWyellow1NSyellow1EWred1EWgreen1NSred1NSgreen1whileS3flagEWgreen0NSred0ifTFlag1TFlag0ii18disppifdispp302dispp0sec45TFlag1sec2dispbuf7sec10dispbuf6sec10dispbuf5sec10dispbuf4sec10dispbuf3sec10dispbuf2sec10dispbuf1sec10dispbuf0sec10P201P211P221P231P241P251P0dispcodedispbufiifi0P200P211P221P231P241P251P261P271ifi1P201P210P221P231P241P251P261P271ifi2P201P211P220P231P241P251P261P271ifi3P201P211P221P230P241P251P261P271ifi4P201P211P221P231P240P251P261P271ifi5P201P211P221P231P241P250P261P271ifi6P201P211P221P231P241P251P260P27121ifi7P201P211P221P231P241P251P261P270ifsec0sec20ififS40S3flag0S4flag1whileS3flagifS40S4flag1sec20EWyellow1NSyellow1EWred1EWgreen1NSred1NSgreen1whileS4flagNSgreen0EWred0ifTFlag1TFlag0ii18disppifdispp302dispp0sec45TFlag1sec2dispbuf7sec10dispbuf6sec10dispbuf5sec10dispbuf4sec10dispbuf3sec10dispbuf2sec10dispbuf1sec10dispbuf0sec10P201P211P221P231P241P25122P0dispcodedispbufiifi0P200P211P221P231P241P251P261P271ifi1P201P210P221P231P241P251P261P271ifi2P201P211P220P231P241P251P261P271ifi3P201P211P221P230P241P251P261P271ifi4P201P211P221P231P240P251P261P271ifi5P201P211P221P231P241P250P261P271ifi6P201P211P221P231P241P251P260P271ifi7P201P211P221P231P241P251P261P270ifsec0sec20ififS30S4flag0S3flag1whileS4flagwhilemainvoidint1interrupt0Zflag0P00P20xffEWyellow1NSyellow1EWred1EWgreen1NSred1NSgreen1