基于单片机的智能交通信号灯控制设计_第1页
基于单片机的智能交通信号灯控制设计_第2页
基于单片机的智能交通信号灯控制设计_第3页
基于单片机的智能交通信号灯控制设计_第4页
基于单片机的智能交通信号灯控制设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的智能交通信号灯控制设计【摘要】:本次毕业设计主要就是设计一个十字路口的智能交通信号灯系统。设计采用单片机作为主控芯片,发光二极管作为交通灯指示信号,数码管作为计时显示模块以及采用按键开关作为车流量异常时的手动控制功能模块。其中单片机采用STC89C51芯片,数码管采用2位7段数码管。本次设计采用DXP画出原理图,并使用C语言作为编程语言对单片机各个口进行编程控制,主要对主干道和支干道车辆的左转、直行、警示和禁止通行进行编程控制。另外本设计还考虑到发生车流量异常情况时的行车方案,采用手动控制对车流量异常时的行车时间进行人工控制。此次设计按照流程,完成了程序的编写、电路的连接以及电路的仿真,实现了设计所预期的功能,能够实现主干道和支干道车辆的左转、直行、警示与禁止通行的显示功能和计时功能。【关键词】:智能交通控制;单片机;数码管Abstract:Thisgraduationdesignismainlytodesignacrossroadsofintelligenttrafficlightsystem.Thisdesignusessinglechipmicrocomputerasthecontrolchip,light-emittingdiodes(leds)asthetrafficlightsignal,digitaltubeastimingdisplaymoduleandthekeyswitchesasmanualcontrolfunctionmodule.Single-chipmicrocomputeradoptsSTC89C51chip,andusing7segmentdigitaltube.ThisdesignusesDXPfortheschematicdiagramdrawingandusestheClanguageastheprogramminglanguagetoprogrameveryportofthesinglechipmicrocomputer.Thisdesignmainlytoprogramthemainroadandthebranchroadonwhichthevehicleturningleft,goingstraight,warning,andstoping.Thisdesignalsoconsidersthetrafficanomalyhappeningandusingthemanualcontroltocontrolthetrafficsysteminemergency.Accordingtotheprocess,thisdesigncompletedthewritingoftheprogramandthecircuitconnectionandsimulation.Thisdesignhasachievedthedesiredfunctionofthetrafficsystem.Ithasachievedthefunctionofthevechiclesturningleft,goingstraight,warmingsandstoping.Keywords:Intelligenttrafficcontrol;SCM;Digital0目录第一章绪论.1第1.1节交通灯的发展历史与现状.1第1.2节交通灯发展的意义.2第1.3节智能交通信号灯概述.2第1.4节课题研究的主要内容.3第1.5节本章小结.4第二章总体设计方案.5第2.1节课题要求.5第2.2节各模块设计方案.6第2.3节本章小结.8第三章硬件电路设计.9第3.1节单片机引脚及其介绍.9第3.2节单片机最小系统.10第3.3节整体电路设计.12第3.4节各功能模块电路设计.13第3.5节电路部分元件介绍.15第3.6节总电路设计.16第3.7节本章小结.18第四章系统软件程序的设计.19第4.1节程序主体设计流程.19第4.2节子程序模块设计.20第4.3节本章小结.21第五章仿真与调试.22第5.1节程序的仿真.22第5.2节电路仿真与调试.22第5.3节实物调试与问题分析.25第5.4节本章小结.26结束语.27致谢.28参考文献.29附录A硬件电路图.301附录B实物图.31附录C元器件清单.32附录D程序清单.332第一章绪论第1.1节交通灯的发展历史与现状在当今社会,红绿灯已经安装在各个道路口上,成为指挥交通车辆安全通行最常见并且相当有效的手段。这一技术早在19世纪的时候就已经出现了。1858年,英国伦敦就已经在街头安装了使用燃煤气作为为光源的红、蓝双色的机械扳手式信号灯,用来指挥马车的通行,这就是世界上最早出现的交通信号灯。1868年,英国的机械工程师纳伊特在伦敦的威斯敏斯特区议会大厦前的广场上,安装了世界上最早的煤气红绿灯,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气大爆炸炸伤了警察,所以这种红绿灯后来就被就被取消不继续使用了。电气红绿灯系统最早出现在美国,这种红绿灯由红、绿、黄三种颜色共同组成,1914年电气红绿灯开始安装在美国纽约市5号大街的一座高塔上面。其中红灯亮表示“禁止通行”,黄灯亮表示“准备通行”,绿灯亮表示“可以通行”。1918年,又出现了红外线红绿灯和带控制的红绿灯。红外线红绿灯是当行人踩上对压力敏感的路面时,红外光束把信号灯的红灯延长一段时间,推迟汽车通行,让行人先行。带控制的红绿灯分为两种,一种是把压力探测器安装在地下,当车辆一靠近时红灯就变成绿灯;另一种则是用扩音器来启动的,司机遇红灯时按一下嗽叭,红灯就转变为绿灯。交通灯的出现使得交通得以控制,对于指导交通、减少交通事故的发生、提高道路的通行能力很有成效。1968年,联合国发布的道路交通和道路标志信号协定中指出了对各种信号灯点亮与熄灭的含义作了规定。绿灯表示通行,面对绿灯的车辆可以自由通行。左右转弯的车辆都必须让正在路口内行驶的车辆和正在穿过过人行横道的行人优先通行。红灯亮是禁止通行信号,面对红灯的车辆必须在十字路口的停车线后停车等待绿灯。黄灯是警告信号,面对黄灯的车辆不能越过停车线,必须等到绿灯亮起时才能通行,但是如果车辆已十分接近停车线而不能安全停车时可以进入十字路口停车,如果超过停车线比较长的距离时,车辆必须先穿过路口,防止造成车辆堵塞。现今,由于科学技术的不断发展,人类各项工艺的不断进步,各种芯片的出现使得道路交通灯系统又有了更进一步的发展。现今的道路交通灯系统多采用集成电路与编程控制相结合的方式,更加智能化,能够灵活改变行车的时间与方案。另外,现在的交通灯系统还配备一些其他设备共同使用,例如视频监控设备、测速设备等,这些设备共同使用,使得道路交通系统更加完备,有效的降低了交通事故的发生。此外,道路交通标志的发明同样也为交通安全系统带来了很大的帮助,交通灯以及配备系统、安全标志系统共同为当今交通安全奉献着一份力量。3随着科技的发展,交通灯的发展也日益完善。经过几十年的探索与创新,交通灯发展至今越来越完善和成熟加完善,交通系统越来越智能化机器化,便于人们识别、更改和控制,给当今的道路交通系统带来了很大的方便与可行性。但是,社会在不断的发展,道路交通安全问题依然值得重视,现在的发展虽然已经比较完善,但是还远远不够,我们要在现在的基础上,进一步加强对交通系统的研究。第1.2节交通灯发展的意义在当今社会,道路安全问题已经成为人们日益关注的问题。在中国每年都会发生很多的意外交通事故,这给我们的生命、财产、亲情等方面带来了极大的影响。尤其是道路交汇处,交通事故的发生频率更是占绝大多数,为了减少十字路口的交通事故,我们就引进了十字路口交通灯系统来规范人们的行车时间。交通灯,采用三色显示与时间显示相结合的方式,来规定了道路口通车行车时间,这不仅很好地使十字路口行车更加规范化,而且大大减少了交通事故的发生。在未来的发展趋势里,交通信号灯将会发挥更大的作用。随着城市化的进程日益深入,中国人民越来越富裕,城镇车辆也在与日俱增,这就给道路交通带来了很大压力,由于土地有限,仅仅靠加宽道路宽度来缓解交通压力是远远不够的,因此,交通信号灯便在控制道路交通方面起着必不可少的作用。在未来的发展趋势里,交通灯将会向着更加智能化和简明化的方向发展,这样讲会更好更有效的控制道路交通,减少交通事故的发生。当然,仅仅靠这一点远远是不够的,我们还要完善我们的法律法规,做好交通安全法的宣传,更好地规范行人与车辆司机的安全意识,只有这样我们才能最大限度的减少交通事故,为我们的人身财产安全作出保障。因此,交通信号灯是我们减少交通事故的有效手段,它在一定程度上降低了交通事故的发生,它的发展为舒缓道路拥挤提供了可行手段,但要从根本上根除交通事故,还得靠我们大家的努力来实现。第1.3节智能交通信号灯概述智能交通信号灯主要由单片机控制模块、红绿信号灯显示模块、计时显示模块、电源供电模块以及手动控制模块组成。采用单片机(STC89C51)作为控制核心,对单片机各个端口进行编程输出,控制主干道与支干道红绿灯的点亮与熄灭,同时控制数码管进行倒计时显示。本次设计使用+5V稳压电源作为供电电源,但是要从220V交流电源得到+5V稳压电源还需要进行电源的变压等转换,本次设计设计了一个电源模块可以将220V交流电转换成+5V直流电源。由于涉4及到车流量异常情况时候的处理控制,只能交通信号灯的设计还必须添加一个应急处理模块,本次设计采用简单的手动控制来完成应急处理的功能,即当遇到车流量异常情况时,将计时显示模块的显示器全部清零,通过按键来控制各个路口信号灯的亮灭。当车流量又回归正常情况是,断开扫描开关,计时显示与信号灯将会回到原有的计时过程中继续计时与控制路口车辆。第1.4节课题研究的主要内容调查研究基于单片机的智能交通信号灯的发展历史、现状与前景,了解发光二极管、数码管以及单片机芯片的工作原理与编程控制,选择合适的控制芯片与电子元件。通过对高性能单片机(STC89C51)的研究,了解其各个端口的功能,以及利用单片机控制交通信号灯的工作原理,选择合适的供电方式、亮灯顺序、显示方案以及应急处理方案。在设计过程中,先进行方案的选择以及总体模块及其功能实现的设计,然后进行硬件设计,再进行软件设计,最后进行电路的调试与仿真。其中硬件设计包括单片机控制设计、复位电路设计、显示电路设计、电源电路设计和应急处理电路设计。软件设计包括主程序设计、扫描程序设计和定时程序设计。本次设计使用ProtelDXP绘制出相关电路原理图,用DXP2004绘制相关程序流程图、原理框图等,用Proteus绘制出仿真电路图,利用编程软件Keil进行程序的编写与调试。在不断调试的过程中,对硬件进行检查与修改,优化软件控制程序。完成整个设计主要研究以下内容:1)行车顺序研究:对比论证确定一个方便可行性高的行车顺序方案。2)电源供电方案:一般生活中大都使用220V交流电,本次设计主要使用USB电源来给单片机进行供电。3)信号灯的显示:将单片机设定的引脚高低电平信号传送到外接信号灯电路,控制信号灯的点亮与熄灭,从而给出行车信号。4)亮灯计时显示:设置相应的计时时间,通过给定的计时数据来显示亮灯的时间,主干道与支干道采用不同的端口进行计时显示,从而合理安排计时时间的显示。5)异常情况的控制:利用P3.0口作为异常检测端口,检测P3.0口的电平高低从而给出指令,调整行车时间。6)电路的仿真:按照原理图连接电路元器件,连接仿真图。7)电路的检测与调试:在仿真软件中,将已经写好的单片机程序烧写到单片机中,烧写完成后进行调试检测,找出仿真中的问题并进行修改。8)论文的撰写与小结:绘制相关结构框图、电路硬件原理图、程序流程图、模块电路5图等,编写设计论文并总结工作,提出可行性改进方案。第1.5节本章小结本章清晰的介绍了交通灯发展历史与现状,以及本次设计的模块组成和简单介绍,明确的论述了本次设计的意义和设计的主要思路,明确了本次设计的主要工作,阐述了本次设计的主要流程与功能,为接下来的查找资料、选择元器件、连接电路图做铺垫。6第2章总体设计方案第2.1节课题要求智能交通控制系统,采用单片机作为主要控制芯片,用于十字路口车辆的通行与停止,每个方向具有左转和直行的功能。在十字交叉路口设计一个红绿灯系统,主干道左转绿灯亮20S,直行绿灯亮40S,黄灯闪烁3S后跳转到红灯。与此同时,支干道在主干道显示绿灯和黄灯时显示的是红灯,总时间为60S,主干道跳转到红灯时,支干道左转绿灯亮20S,然后支干道直行绿灯亮40S,黄灯闪烁3S后跳转到红灯,此时主干道左转又开始执行,如此循环往复。但是,如果遇到车流量异常的情况下,主控室能够接收模块向系统发出指令,从而调整行车时间。状态转换图如图2-1所示。扫描P3.0口,支干道红灯60秒,主干道左转20秒扫描P3.0口,支干道黄灯闪烁3秒扫描P3.0口,主干道直行40秒扫描P3.0口,支干道直行40秒扫描P3.0口,主干道红灯60秒,支干道左转20秒扫描P3.0口,主干道黄灯闪烁3秒开始图2-1亮灯状态转换图7第2.2节各模块设计方案一、电源方案选择。为了使模块稳定工作,须有可靠电源。此次设计考虑了两种电源方案,如下:方案一:使用独立稳压电源作为供电电源。这种方案的优点是电压可靠稳定,并而现在已经有各种成熟的电路可以进行选择;缺点是各个模块都需要采用独立的电源,这样会使系统变得复杂,而且由于电源过多很有可能会影响电路的电平,导致电路电压不稳定。方案二:使用单片机控制模块来提供电源。这种方案的优点是使系统简洁明了,节约了成本;缺点是使用单片机提供电源会使输出的功率不是很高,可能会影响电路效率。考虑到实际情况和电路的简洁,本设计采用方案二,不仅节约了成本,而且使电路尽可能简明扼要。同时考虑到实际情况中我们大多使用220V交流电源,而本次设计需要采用+5V直流电源来为单片机工作提供电压,故本次设计将直接使用USB供电。二、显示方案选择。由于设计涉及到倒计时的显示,需要设计一个显示模块,如此可以考虑以下两种显示方案:方案一:采用发光二极管与数码管相结合的方式来显示,发光二极管显示状态转换,数码管显示状态剩余时间。此方案简洁明了,应用简单,但无法适用于复杂的显示要求。方案二:采用发光二极管与点正式LCD相结合的显示方案。二极管同样用来显示状态转换,点阵式LCD显示状态剩余时间。此方案适用于复杂显示要求,但编程和初始化相对复杂。由于本次设计无需使用复杂的显示,故选用方案一来作为显示方案。三、行车书序设计。在一个十字路口,涉及到车辆的直行、左转和右转。根据我国的交通规则,一般情况下右转是不需要特别定义的,但左转和直行不可同时进行。涉及到一个十字路口的行车方案,我们首先必须把左转和直行的顺序时间规定好,这样才能有效的保证行车安全。同时,从直行跳转到停止也要有一个缓冲时间,这样可以方便已经过了停车线的车辆穿过路口,而不必停在路口,可能会引发事故。本次设计我们规定,在南北车辆通行时,东西车辆禁止行驶;同样,在东西车辆通行时,南北车辆禁止通行。行车时间按照设计要求规定来设计,先后顺序依次是南北左转南北直行南北黄灯南北禁行(东西左转)东西直行东西黄灯东西禁行,然后在循环显示。8具体行车状态如表2-1所示。表2-1行车状态表状态1状态2状态3状态4状态5状态6南北左转100000南北直行010000南北黄灯001000南北红灯000111东西左转000100东西直行000010东西黄灯000001东西红灯111000表中共6个状态转换过程,0表示对应灯灭,1表示对应灯亮。我们分别用红黄绿三种颜色的灯来表示车辆的通行与禁止。具体行车状态如图2-2所示。左转左转红灯红灯1234红灯红灯左转左转红灯红灯红灯红灯直行直行直行直行图2-2行车状态图由图可知,当主干道左转和直行时,支干道处于红灯禁止通行状态,主干道先左转然后直行;同样,当支干道左转和直行的时候,主干道也处于红灯禁止通行状态,支干道同样先左转后直行。行车次序按照图中1、2、3、4的先后顺序进行,当主干道直行完成时需9要经过3秒的黄灯闪烁警告才能进入支干道左转与主干道红灯禁行状态。此种行车方案可以有效的避免行车冲突,使得行车顺序紧然有序,主次分明,易于控制和调整。四、异常情况控制设计。对于一个十字路口交通系统,不仅要考虑到行车的顺序和时间的设定,而且需要考虑到发生异常情况时可以对原有的行车时间和顺序进行调整。对于异常情况,本次设计采用手动控制的方案进行调整行车时间,这样不仅大大降低了成本,而且操作简单,易于控制。主要设计方案如图2-3所示。检测异常按键开关信号灯计时显示控制关闭图2-3异常控制方案图如图所示,当检测到异常情况时,运用按键开关来控制各个路口的信号灯,同时将计时显示器清零,手动调整行车的时间和顺序。第2.3节本章小结本章主要阐述了设计的总体思路以及各个模块的实现设计方案,对本次设计的模块功能做了一个大致的介绍。通过确定的总体方案和各个功能模块的方案,为接下来的设计提供了思路。接下来,将围绕整体设计思路展开对设计的硬件设计以及软件设计和仿真调试的研究。本章为接下来的资料查找,软硬件设计提供了更加明确的方向,通过对比与选择,确立了总体设计的一个大致方向。10第三章硬件电路设计第3.1节单片机引脚及其介绍单片机种类繁多,在本次设计中采用AT89C51作为主控芯片,其结构简单易懂,易于操作。AT89C51引脚图如图3-1所示。EA/VP31X119X218RESET9P37/RD17P36WR16P32/INT012P33/INT113P34/T014P35/T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30P31/TXD11P30/RXD10GND20VCC40U1STC89C52图3-1单片机引脚图引脚介绍:1.电源引脚(2根)(1)VCC:电源端,接5V电源;(2)GND:接地引脚,有时标记为Vss;2.控制引脚(6根)(1)RST/Vpd:复位信号输入引脚/备用电源输入引脚;(2)XTAL1:晶体振荡器接入的一个引脚。若采用外部输入时钟信号,对CHMOS型51系列单片机,次引脚作为外部时钟的输入端;对HMOS型51系列单片机,此引脚接地;(3)XTAL2:晶体振荡器接入的另一个引脚。若采用外部输入时钟信号,对CHMOS型51系列单片机,此引脚悬空;对HMOS型51系列单片机,此引脚作为外部时钟的输入端;(4)ALE/Error!:地址锁存允许信号输出引脚/编程脉冲输入引脚;(5)Error!/VPP:片外ROM访问允许/编程电压输入引脚;(6)Error!:片外ROM读选通信号输出引脚3.输入/输出(32根,由4个8位端口组成)11(1)P0口(P0.0P0.7):P0口是漏极开路的8位并行端口,作双向I/O端口使用或者作为地址总线低8位数据总线使用;(2)P1口(P1.0P1.7):P1口的第一功能是作为准双向I/O端口使用,其功能完全由用户自定义。这里称准双向口是由于接口内部有拉高电路;(3)P2口(P2.0P2.7):P2口作为一般准双向I/O口使用或高8位地址总线输出引脚。(4)P3口(P3.0P3.7):P3口一般作为准双向I/O端口使用或者第二功能引脚;第3.2节单片机最小系统单片机最小系统又称为单片机最小应用系统,是指使用最少、最简单的元件所组成的能够使单片机稳定工作的系统。对于51单片机而言,其最小系统一般由单片机控制芯片、晶振电路和复位电路组成。其中晶振电路是由一个晶振芯片,两个电容组成;复位电路是由两个电阻、一个可变电容和一个按键开关组成,当按键开关按下断开时,单片机将进行复位操作。其电路图如图3-2所示。图3-2单片机最小系统复位电路是使单片机RST引脚接收到高电平信号并维持至少两个机器时钟,从而引导单片机复位,之后RST引脚将处于低电平状态。单片机复位通常有三种方式:上电复位、芯片复位和手动复位。复位之后,单片机累加器A清零,同时选用寄存器0作为工作寄存器组。堆栈指针指向片内RAM地址07H,第一个被压栈的内容将写入08H单元中,此时各端口既可以用作输入也可以用作输出,中断源处于低优先级,各个中断都将被关闭。P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL218XTAL119GND20(A8)P2.021(A9)P2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PSEN29ALE/PROG30EA/VPP31(AD7)P0.732(AD6)P0.633(AD5)P0.534(AD4)P0.435(AD3)P0.336(AD2)P0.237(AD1)P0.138(AD0)P0.039VCC4089C52Y111.0592MHzC230C330R710KVCC+C110uF1234K0RESETVCC12复位电路如图3-3所示。图3-3复位电路时钟电路最重要的就是晶振,晶振为系统提供最基本的时钟信号。一般情况下,同一个系统采用同一个晶振电路有利于各个部分协调运行,晶振能够产生单片机所需要的时钟频率,晶振的频率越高则单片机的运行速率就越快。单片机晶振电路如图3-4所示。13图3-4晶振电路第3.3节整体电路设计十字路口智能交通信号灯的设计,主要考虑到主干道和支干道的左转、直行与禁行时间,包含控制输出显示两大模块,其中显示又分为计时显示和发光二极管显示。计时显示采用两位7段数码管来显示各个灯亮的剩余时间,发光二极管主要是用来表示各个路口通行与否,主要采用红、黄、绿三种颜色来表示。红色表示禁止通行,绿色表示允许通行,黄色表示警示作用。整体电路框图如图3-5所示。主干道数码管计时显示支干道数码管计时显示P0.0/0.1P0.2/0.3P3.0P2口低电平扫描数码管计时显示电源晶振复位外接手控电路发光二极管P1口图3-5整体模块框图根据框图可知,单片机作为主控芯片,对各个输出口控制,其中P1口主要是用来控制发光二极管的点亮与熄灭;P2口主要用来控制数码管的计时显示,当每次灯亮计时时间结束后,跳转到第二个灯亮的计时时间继续倒计时;由于主干道和支干道的红绿灯倒计时时间不同,故需要使用不同的计时程序来实现,因此需要使用不同的输出口来选择主、支干道的计时显示,图中使用P0.0口和P0.1口用作选择主干道的计时显示,P0.2口和P0.3口用作选择支干道的计时显示。以上模块均是在车流量正常时单片机所执行的功能模块。但是,当车流量出现异常情况时,我们就需要及时调整行车时间,来改变行车方案,从而在车流量高峰期解决拥挤问题。本次设计我们采用手动控制的方案来改变车流量异常时的各个方向的行车时间,这种手动方案在操作时可能比较复杂,但是更加灵活,可以灵活改变14行车时间,从而达到解决车流高峰的行车问题。根据框图可知,当车流量异常时,我们采用P3.0口作为一个检测口,如果车流量异常,P3.0将接收到一个低电平,当P3.0接收到低电平,则对所有的数码管计时显示清零,且对P1口进行置1操作,而对应的各个方向的行车灯我们将采用手动控制来给定行车时间,解决行车冲突问题。当车流量又回到正常的时候,各个手动控制键将全部断开,单片机又重新回到正常状态进行工作。另外单片机外接晶振电路来产生时钟脉冲,外接复位电路可以对单片机进行复位。第3.4节各功能模块电路设计一、信号灯显示电路的设计设计使用单片机的P1口作为信号灯的控制端口,两组信号灯中主干道的信号灯相互连接,支干道的信号灯相互连接,通过P1口的不同编程来控制各个灯亮的书序与组合。具体电路图如图3-6所示。图3-6信号灯显示电路二、计时显示电路的设计计时显示电路用于显示各个信号灯亮的时间,主要由2位7段数码管用来作为显示模15块,由主干道和支干道的计时时间不同,故需要使用单片机的P0口作为片选信号输出口,使用不同的端口来控制主干道和支干道的计时显示,另外使用P2口作为计时显示的各个发光二极管的点亮顺序的控制,使得数码管能够显示从“00”到“99”之间打任何数字。显示电路如图3-7所示。图3-7显示电路图图中两个数码管显示器分别表示主干道和支干道的信号灯倒计时显示。运用P0.0口和P0.1口来选择主干道的计时显示,运用P0.2口和P0.3口来选择支干道的计时显示。三、按键电路的设计按键电路用来检测是否发生异常情况以及发生异常情况时对信号灯的控制,主要由按键开关组成,通过按键开关的控制来改变行车时间和顺序,并且将数码管计时显示器清零。按键电路如图3-8所示。16图3-8按键电路第3.5节电路部分元件介绍数码管可以用于显示数字、温度、时间等,只需要通过改变其不同管脚的电平高低就可以实现它的点亮与熄灭,从而显示出所需要的信息。由于数码管价格便宜,应用简单,易于控制,所以数码管在我们日常生活中得到广泛的应用。我们一般所常用的七段数码管由8个发光二极管组成,其中有7个发光二极管表示“8”字型,还有一个表示小数点。我们通常将表示“8”字形的七个发光二极管用a,b,c,d,e,f,g来表示,而小数点用dp表示。7段数码管引脚图如图3-9所示。图3-9数码管引脚图根据显示位数可以将数码管分为1位、2位或3位等,根据连接方法不同,可分为共阳极和共阴极数码管。共阴极数码管是将发光二极管的阴极一起接地,当某一二极管的阳极呈高电平时,二极管江北点亮;共阳极数码管是将发光二极管的阳极一起接高电平,当某一二极管的阴极呈现低电平时,二极管将被点亮。发光二极管共阳极和共阴极接法如图3-10所示。图3-10数码管共阴极和共阳极接法由图3.11和图3.12可以看出,发光二极管通过亮灭的不同组合可以显示0到9这1017个数字,这些数字对应的各个引脚的高低电平如表3-1所示。表3-1引脚高低电平表显示字型abcdefg01111110101100002110101131111001401101015101110161011111711100008111111191111101在本次设计中,由于倒计时显示显示到十位,顾需要两个数码管共同连接使用来分别显示十位和个位,所以此次设计中我们采用2位7段数码管来显示亮灯倒计时时间。2位7段数码管如图3-11所示。图3-112位7段数码管第3.6节总电路设计一个十字路口的交通系统,需要我们考虑到在每个路口设计一个左转灯,一个直行绿灯,一个黄灯和一个红灯。同样,考虑到要显示每个灯的亮灯时间,我们就需要在各个路口设计一个2位数码管来显示倒计时时间。在本次设计中,采用单片机作为主控设计,初步设计单片机的P1口作为红绿灯的控制口,P2口作为2位7段数码管计时显示控制口。由于主干道与支干道的计时显示不是同步进行的,我们分别采用P0口的P0.0和P0.1来作为主干道的数码管计时显示控制口,使用P0.2和P0.3来作为支干道的数码管的计时显示控制口。当然,作为同一方向道路上的红绿灯和数码管的显示是同步进行的,不需要将他们分开来进行设定和控制。采用P3.0口作为车流量异常情况的检测按钮,当检测到P3.0口接收到低电平时,将数码管计时显示全部清零,另外通过按键控制来控制各个路口的信18号灯的点亮与熄灭。总电路图如图3-12所示。19P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL218XTAL119GND20(A8)P2.021(A9)P2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PSEN29ALE/PROG30EA/VPP31(AD7)P0.732(AD6)P0.633(AD5)P0.534(AD4)P0.435(AD3)P0.336(AD2)P0.237(AD1)P0.138(AD0)P0.039VCC40U1AT89C51Y112MHzC230C330COM1R12R23R34R45R56R67R78R89RP110K1234K21234K3VCCR210KA0F0E0D0C0G0VCCVCC+C410uFG1dp2A3F4S15D6E7C8B9S210LEDBG1dp2A3F4S15D6E7C8B9S210LEDDD1YD2GD3RD4RD5GD6YD7RD8GD9YD10YD11GD12R1234K1DECBGAFS1S2GA1234ResetFBCEDB0G1dp2A3F4S15D6E7C8B9S210LEDBS3S4GAFBCEDS3S4G1dp2A3F4S15D6E7C8B9S210LEDDDECBGAFS1S2321P1POWERVCC112233445566S1OE1D02D13D24D35D46D57D68D79LE11Q712Q613Q514Q415Q316Q217Q118Q019GND10VCC20U274HC573OE1D02D13D24D35D46D57D68D79LE11Q712Q613Q514Q415Q316Q217Q118Q019GND10VCC20U374HC573.A0F0E0D0C0G0B0CDEFGABVCCD13GD14GD15GD16G.G1dp2A3F4S15D6E7C8B9S210LEDSGAFBCEDS5S6.VCCP10P11P12P13P14P15P16P17NSEWS3S4S1S2S5S6R34.7KR44.7KR54.7KR64.7KR74.7KR84.7KQ19013Q29013Q39013Q49013Q59013Q69013P20P21P22P23P24P25P20P21P22P23P24P25P10P11P12P13P14P15P16P17P10P11P12P13P14P15P16P17D334148D344148D354148ResResP33P34P36P33P34P36图3-12总电路图如图所示,对于十字路口交通灯控制,我们分别使用四个2位数码管来作为计时显示,204组发光二极管作为信号灯显示。以单片机作为主控芯片控制各个端口的输出,外接晶振电路产生震荡频率以供单片机工作使用。图3-12中,P3.0作为中断输入口使用,接收外部低电平信号,当P3.0接收低电平时,计数显示清零,P1口各个端口均置1,当P1口置1后,通过外部按钮控制来控制各个灯的点亮与熄灭,人为操控行车时间,解决车流量异常时的冲突问题。等到车流量回归正常之后,断开各个外部按钮,启动复位电路,单片机便可以回到正常工作状态,从而进入自动控制状态。第3.7节本章小结本章重点介绍了各个模块的功能以及每个模块的具体硬件电路设计。首先以模块为单位,研究各个模块的功能和设计方法,通过器件的选择、元件的比较、不同方案的比较与论证,最后选择合适的方法与元器件搭建电路,利用ProtelDXP连接电路图,给出各个模块的电路连接,最后通过将各个模块功能组建起来,连接总电路图,实现系统的总体功能。通过本章对硬件电路的设计研究,给出总体电路方案,为接下来的软件设计做铺垫,为之后的工作带来了方便。本章利用各种作图软件给出电路图,将系统电路机构展现出来,让我们对系统设计可以从各个模块入手,对每个模块进行设计和研究,最后给出总体方案。21第四章系统软件程序的设计第4.1节程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序,消抖动延时程序,次状态判断及处理程序,紧停或违规判断程序,中断服务子程序,车流量计数程序,红绿灯时间调整程序等。整个软件程序方面主要分两大部分:按键处理程序和50ms扫描程序。流程图如图4-1所示。I/O初始化定义共阴极字型编码表、函数变量并初始化、状态数据、字位码函数定义字位码函数啊进入主函数main()结束开始进入主函数main()定时器0初始化初始化外部中断进入while(1)循环调用显示控制函数voiddisplay()、Buzzer()函数设置字型码和字位码,完成显示返回while(1)函数开始结束图4-1系统总的流程图22第4.2节子程序模块设计按键模块的控制是调用中断来实现控制的,独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。中断子程序如图4-2所示。东西通行东西绿灯亮南北红灯亮保持中断南北通行东西红灯亮南北绿灯亮保持中断中断返回中断返回INT1INT0图4-2中断子程序定时中断子程序是本设计的重点,定时器一但启动,它便在原来的数值上开始加1计数,若在程序开始时,我们没有设置TH0和TL0,它们的默认值都是0,假设时钟频率为12MHz,12个时钟周期为一个机器周期,那么此时机器周期为1us,记满TH0和TL0就需要216-1个数,再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需65536us,约等于65.6ms,如果我们要定时50ms的话,那么就需要先给TH0和TL0装一个初值,在这个初值的基础上记50000个数后,定时器溢出,此时刚好就是50ms中断一次,当需要定时1s时,我们写程序时当产生20次50ms的定时器中断后便认为是1s,这样便可精确控制定时时间啦负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。23中断程序的流程图如图4-3所示。启动定时器中断初始化定时器0技术变量自加1定义1S设置字型码和字位码,完成数码管倒计时显示定义中断入口关闭定时器结束开始图4-3定时中断流程图第4.3节本章小结本章主要介绍了单片机的控制方法,详细阐述了各个功能模块的程序设计流程以及程序设计。合理分配单片机各个端口资源为各个模块的编程做了充分的准备,为整体程序编写打下基础,同时利用单片机的特点,以C语言为编程语言,加强了程序的可执行性。具体程序清单详见附录。24第五章仿真与调试第5.1节程序的仿真Keil作为一款编程软件,集编程、编译、仿真于一体,支持C语言编程、汇编语言编程和PLM语言的变成呢个,界面清晰,易于学习和应用。本次设计利用Keil作为编程环境,对编写好的程序进行调试和仿真,如果程序出现错误,Keil软件将会在输出对话框中发出警告,从而可以很快定位

温馨提示

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

评论

0/150

提交评论