版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.2研究意义由于人口迅速增长,交通爆炸性发展和道路资源有限,交通管制已经出现。交通在人类的生活和工作环境中起着非常重要的作用,在人们的旅行生活中不可能有交通。自18世纪工业革命以来,工业发展促进了整个交通运输业的发展,形成了独立的交通管理学习管理机构。交通管制系统是由现代社会和交通运输发展形成的独立的公共管理体系。除了制定一系列交通规则以确保交通规则的效率和安全外,还必须通过一定的技术手段来实现。现代人类科学技术,特别是电子科学技术的发展和成熟,可以更好地解决建立硬件和软件系统所需的技术问题。目前,交通管制的研究是完全实现自动化和智能化,并集成到已经统一了整个地区的系统,也可以按照特定的爆发周期进行科学的自动调节与正常循环。交通对社会经济和人民生活生产具有非常重要的意义。随着微控制器和传感技术的快速发展,自动检测领域发生了重大变化。自动交通监控研究取得了显着进展。它具有优异的性价比,取代了传统的交通管制措施。城市交通控制系统的发展是基于城市交通信号控制技术和汽车产业的并行发展。在各个发展阶段,人们不断推动自动交通管制技术的不断发展,自动将过去各个时期的最新科技成果自动用于交通管制。自20世纪50年代初以来,随着城市交通的不断发展,人们对安全和交通拥堵的关注,世界第一个交通灯诞生,城市交通法规开始启动。红色和伦敦的威斯敏斯特街1868年英国工程师Neyt气灯绿色运输交通枢纽安装的控制,但交通已经消失了,瓦斯爆炸近半个世纪的风险。1914年后,该信号在芝加哥的纽约克利夫兰市复制。它们由电力驱动,与今天大致相同。1926年,英国首次安装自动控制装置并首次控制红绿灯后使用该装置。这是城市交通自动控制的起点。初始交通信号采用“固定时间”方式自动控制,在中等流量的早期阶段发挥作用。然而,随着汽车工业的发展,交通流量的增加和随机波动的增加,单一型号无法显示,多级更换,控制器在过去只取代了一个控制系统“一定时间“的方法被使用。计算机技术的出现彻底改变了交通管制技术的发展,实现了以城市和大区域为代表的整个交通管理系统,而不仅仅是简单的交叉口。1952年,在科罗拉多州丹佛市,我们首先使用模拟计算机和交通检测器实现了交通信号网络时序规划的自动信号选择。1964年加拿大多伦多,完成实际使用计算机控制的光,建立了交通信号调节控制系统,集IBM650计算机控制的城市,使其成为第一台电子数字计算机城市交通控制系统我会的。这是道路交通控制技术发展的一个里程碑事件。此外,上述说明中,可以从网络区域主控制单点道路交通信号控制系统表示,并且流向控制和从非感知控制的控制传感器。交通控制研究的发展是为了解决交通量增加的问题,由于需求增加。这个问题,临时道路仅限于缺乏快速增长和建设的运输,使用的不可控和不可控的道路,有效有限的资源和其他不必要的拥堵和延误为了避免不使用。此外,为了实时调整的总体流量,则必须发送多个线转换。交通网络是城市的动脉,象征着城市的工业文明的水平。人员和财产,受利益和便利的交通控制技术和安全,顺畅出行,物流,保证时间,交通,物流,确保资源相关的交通方式,拓展人生轨迹。HYPERLINK1.3研究内容本课题的主要内容包括如下几个方面:(a)设计交通灯状态的管理方案;(b)设计单片机最小系统和周边电路;(c)设计交通灯系统、不间断供电系统以及中断系统的电路结构;(d)设计整个系统的电路分布和接线;(d)使用C语言编写整个系统运行所需要的程序,重点是分时管理系统和紧急中断系统的程序。HYPERLINK2系统总体设计2.1供电方案设计为使模块稳定工作,须有可靠电源。本设计考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。本方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。考虑到实际情况和电路的简洁,本设计采用了第二套方案,同时在考虑到突发断电的情况,还增加了一个后备电源,在打开后备电源的时候,如果主电源断电,后备电源瞬间接通继续供电,这里会利用到二极管的单向导电性。HYPERLINK2.2显示界面方案设计本设计涉及到倒计时、状态灯等功能。基于功能需求,本设计考虑如下三个方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任功能需求。方案二:完全采用点阵式LED显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。2.3输入方案设计考虑到紧急情况和具体现场的情况,本设计考虑两种方案:方案一:采用8155扩展I/O口及键盘,显示等。该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O口,但操作起来稍显复杂。方案二:直接在I/O口线上接上按键开关。该方案优点是:编程更加简洁,使用更加简单,且成本更低。缺点就是功能有限综合考虑本设计的实际需要,在使用输入的时候不需要过于复杂的功能,故采用方案二。HYPERLINK2.4交通灯规则方案设计本设计的交通灯以十字路口为模型,在实现基本的功能前提下增加了高低峰分时管理机制和人工干预机制。HYPERLINK2.4.1相位的概念为保证交通系统的严谨性和公平性,本设计规定“相位”概念。相位的定义如下:在单个十字路口,整个状态周期每个绿灯亮起的时间为固定值。相位的意义在于在一个循环状态周期内,根据每个路口车流量大小可以分配适时适当的绿灯时间以保证时间的充分利用,保证车流大的干道可以通过足够多的车辆,车流小的干道不用浪费时间。从总体上提升系统的效率。HYPERLINK2.4.2交通灯状态 为方便说明交通灯状态,交通灯系统的示意图如图2所示。如图2,交通道路系统是由常见的双车道加人行道组成,由南向北行驶的车辆所看的交通灯是北路口的车行道交通灯,由北向南的车辆所看的交通灯是南路口的车行道交通灯,由西向东行驶的车辆所看的交通灯是东路口的车行道交通灯,由东向西行驶的车辆所看的交通灯是西路口的车行道交通灯。现规定如下状态:S1:南北方向车辆通行,东西方向、南左转到西、北左转到东、西左转北、东左转南禁行,东西方向人行道通行、南北方向人行道禁行。S1状态如图3所示。图2交通灯示意图图3S1状态示意图S2:东西方向车辆通行,南北方向、南左转到西、北左转到东、西左转北、东左转南禁行,南北方向人行道通行、东西方向人行道禁行。S2状态如图4所示。S3:南左转西、北左转东车辆通行,南北方向、东西方向、西左转北、东左转南车辆禁行,南北方向、东西方向人行道禁行。S3状态如图5所示。S4:西左转北、东左转南车辆通行,南北方向、东西方向、南左转西、北左转东车辆禁行,南北方向、东西方向人行道禁行。S4状态如图6所示。图4S2状态示意图图5S3状态示意图S5:全红灯,紧急事件状态。S5状态如图7所示。HYPERLINK2.4.3高低峰分时管理机制本设计为提升交通灯系统效率,设置了高低峰分时管理机制。高低峰分时定义如下:高峰时段:8点到10点,一般为上班上学出行的高峰期,18点到20点,一般为下班放学出行高峰期,此时主干道车流量高于次干道的车流量;图6S4状态示意图图7S5状态示意图低峰时段:除高峰时段的其他时段。在高峰时段,采取增加主干道绿灯通行时间,减少次干道绿灯通行时间以最大限度的通过车辆。在低峰时段,采取减少主干道绿灯通行时间,增加次干道绿灯通行时间以平衡通过车辆。高低峰时段状态如表1所示。表1高低峰时段状态表S1S2S3S4低峰时段高峰时段南北向车行道绿灯时长20s南北向车行道绿灯时长25s东西向车行道绿灯时长15s东西向车行道绿灯时长10s南左转西,北转东绿灯时长10s南左转西,北转东绿灯时长10s东左转南,西左转北绿灯时长10s东左转南,西左转北绿灯时长10s在高低峰两个时段中,全部车行道绿灯的总和都为55秒,即相位都为55s。在发生突发事件的时候启动紧急状态S5,全部红灯亮。这种状态主要适用于例如救护车,军车执行任务时候使用。状态转换图如图8所示。图8状态转化图HYPERLINK3硬件设计根据本设计交通灯的模型和实现的功能,硬件部分可以分为以下两个大的系统:单片机系统、交通灯演示系统、双电源供电系统、中断系统。整个系统的硬件架构图如图11。HYPERLINK3.1单片机电路设计本设计单片机主要是用于控制交通灯的演示系统,故只需要单片机最小系统即可完成。单片机的最小系统是指能够驱动单片机工作的最小电路。此电路由单片机、时钟电路、电源、复位电路4个组成部分组成。图12为单片机最小电路的电路图。其中,复位电路如图13。单片机复位电路原理是在单片机的复位引脚rst上外接电阻和电容,实现上电复位,而复位时间是(时钟周期=12×振荡周期,振荡周期=1/f),这个时间只能大不能小,具体数值可以由rc电路计算出时间常数。图10主程序流程图图11系统总架构图图12STC89C52最小系统图图13复位电路图单片机复位后各寄存器的状态:A=00H,表明累加器已被清零;PSW=00H,表明选寄存器0组为工作寄存器组;SP=07H,表明堆栈指针指向片内RAM07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP=×××00000B,表明各个中断源处于低优先级;IE=0××00000B,表明各个中断均被关断;时钟电路如图14所示。时钟电路中最为重要的就是晶振,晶振的作用是为系统提供基本的时钟信号。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。图14时钟电路图通常一个系统共用一个晶振,便于各部分保持同步。晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。HYPERLINK3.2交通灯演示电路设计根据功能,交通灯的演示系统从功能上则分为:倒计时电路、红绿灯功能电路。交通灯演示系统电路图如图15所示。图15交通灯演示系统电路图倒计时电路主要是由双位共阴数码管和74HC573N驱动模块组成,控制信号通过单片机的端口P1口进行信号的传输。倒计时电路负责的是显示红绿灯持续显示的时间。当绿灯或者红灯持续显示时,数码管显示该状态的持续时间,在黄灯闪烁显示时,起到倒计时秒数的作用。红绿灯功能电路主要是由各色的发光二极管和74HC573N驱动模块组成,控制信号跟数码管一样都是通过P1口进行传输。红绿灯电路负责的是各个车行道和人行道通行状态的显示。HYPERLINK3.3电源电路设计供电电路由主电源和备用电源组成。主电源主要是由变压器、6A整流桥、2颗1000μF电容以及7805三端稳压管组成。这个部分为系统提供主要的供电,输出电压为5V直流。备用电源主要是由4位的5号电池盒组成。这个部分在主电源断电时能够几乎瞬时的为系统提供电源,输出电压也是6V直流。该电源直接接到单片机的电源端。备用电源存在的意义就在于,如果主电源一旦断电的话能够及时的提供系统所需要的电力,以保证整个系统在主电源断电的时间内依然能够正常的工作。在实际的应用过程中,备用电源可以根据需要设置一个合适的容量,本设计出于演示的需要就只提供了4颗5号电池为载体的备用电源。主电源和备用电源的切换功能电路如图16所示。该切换电路的原理是根据二极管的单向导电性。单向导电性是指二极管的PN结加正向电压时,电阻值很小,PN结导通;加反向电压时,电阻值很大,PN结截止。当主电源正常工作时,由于二极管处于截止状态,由主电源供电,当主电源突然断开时,二极管导通,由电池组供电。此处选用双二极管串联工作原因是:当选用一个时,图16主电源和备用电源切换功能电路假设二极管处于截止状态,此时二极管阴极电位为5V,阳极电位为6V,所以电压差为1V,此时二极管一定处于导通状态,所以假设不成立。当主电源工作时电池组也提供电源,这会造成两个不同电压的电源并联,造成干电池组给主电源充电。而当选用两个二极管串联时,假设二极管处于截止状态,此时电压差为0.5V,0.5V<0.7V二极截止,假设成立。而当主电源断开时,能提供电压为6V减去2个二极管的压降为4.6V,此电压能保证单片机正常工作。HYPERLINK3.4中断系统中断系统主要是负责高低峰方案和紧急方案的切换。电路图如图17所示。图17中断系统HYPERLINK4软件设计4.1程序主体设计流程在本次设计中,采用了C语言作为程序编程的语言。相较于C语言,汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。综合以上C语言的优点,本设计在编程的时候选择了C语言。本设计在编程环境上也选择了KeilμVision2.0。这款软件支持众多不同公司的MCS51架构芯片,它集编辑、编译、仿真为一体,同时还支持PLM、汇编和C语言的程序设计,界面友好、简单易学,在调试程序。软件仿真方面都有很强大的功能。在初期的软件调试阶段,KeilμVision会提供非常便利的环境。在没有突发事件按钮和高低峰切换按钮都没有按下时交通灯的执行预定方案。预定程序执行方案流程图如图9。根据本设计交通灯的模型和实现的功能,程序流程图如图10所示。图9预定程序执行方案流程图4.2中断子程序按键模块的控制是调用中断来实现控制的,独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。INT1INT0INT1INT0南北通行南北通行东西通行东西通行东西绿灯亮南北红灯亮东西绿灯亮南北红灯亮东西绿灯亮南北红灯亮保持中断保持中断保持中断保持中断中断返回中断返回中断返回中断返回 图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,这样便可精确控制定时时间啦负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。中断程序的流程图如图所示。定义1s定时中断入口定义1s定时中断入口设置字型码和字位码,完成数码管倒计时显示启动定时器中断设置字型码和字位码,完成数码管倒计时显示启动定时器中断关闭定时器0初始化定时器0 关闭定时器0初始化定时器0计数变量自加1计数变量自加1图4-3定时中断流程图HYPERLINK5系统测试5.1断电调试过程为安全起见,防止硬件烧坏,首先进行断电调试,用万用表检测系统是否有短路现象,再检查严原理是否正确,各个线路的电平是否正常。经检测,未出现短路现象以及各个电平都正常。HYPERLINK5.2通电调试过程(a)关掉交流电源开关,用万用表直流电压档测量稳压输出电压,测量结果只有4.2V,用12V电源直接接入7805输入端,测量输出电压达到4.99V。经检查分析为稳压芯片7805输入端电容没有接入,输入电压变化太大,造成7805无法稳压。经处理问题解决。(b)检查系统时钟是否正常工作,用万用表直流电压档测量XTAL1与AXTAL2两端间的电压,检测到电压若为2.5V左右,则视为正常工作。(c)检查复位电路是否正常工作。(d)检查数码管显示和LED灯是否正常。HYPERLINK5.3基本要求部分的测试与分析(a)系统上电后,显示交通灯基本状态,按中断按键,中断正常,直接进入S5状态,按复位按键,整个系统复位成功。(b)按高低峰切换按键,系统即时切换到高峰时段方案,再按下高低峰切换按键,系统即时切换到低峰时段方案,最后按下高低峰按键,系统重新进入预定流程。(c)在未进行任何的中断和复位操作时,交通灯按照预定流程进行,在高低峰两个设定时段内变化。结论结论相对于其他解决方案来说,单片机具有成本低廉,通用性高,维护简单,软件灵活,成熟度高等优势。但是,单片机发展到现在也有存储空间较小、下游方案较少等局限性。本设计在实现相应功能的时候主要是考虑到现有的条件,采用成熟度高的STC89C52作为CPU的解决方案,同时用LED灯和双位数码管作为显示模块,软件则使用了移植性好的C语言。从功能需求上来看,已经能够满足实际需要。供电方案也采用了现在热门的双电源供电,电路结构简单,可靠性高,从一定程度上解决了实际中可能出现的由于电源引发的问题。高低峰分时管理方案作为灵活的交通灯状态方案,对提高交通运输系统的运行效率也有很大的帮助。单片机作为已经发展了30年的成熟产品,很多优势正在逐渐失去,让位于更加先进的芯片解决方案。参考文献[1]郭占苗.基于STC89C52单片机的交通灯设计[J].工业控制计算机,2017,30(06):138-139.[2]王麒贵.基于单片机的LED模拟交通灯设计[J].电子制作,2016(21):8-9.[3]蔡姗姗.基于AT89C51单片机的交通灯设计与仿真[J].天津科技,2016,43(09):42-43+45.[4]王学亮.基于单片机的多功能交通灯控制器的设计[A].天津市电视技术研究会.天津市电视技术研究会2016年年会论文集[C].天津市电视技术研究会:,2016:4.[5]张维.基于单片机的可编程智能交通灯控制系统[J].电子设计工程,2016,24(04):171-174.[6]陈君.基于AT89S51单片机的智能交通灯设计[J].电子技术与软件工程,2016(01):260-261.[7]马云鹏.基于单片机的交通灯设计[J].企业导报,2015(06):180-181.[8]王贯安.基于AT89C51单片机的交通灯控制系统设计与仿真[J].硅谷,2014,7(07):24+37.[9]刘新英,高玉雪.基于单片机的交通灯控制系统设计[J].电子设计工程,2014,22(03):174-177.[10]赵明,杜坚,秦连升.一种基于单片机的交通灯控制系统[J].信息通信,2014(01):82+85.[11]姚龙水,王永飞.基于AT89C51单片机的交通灯控制系统设计[J].电子世界,2013(23):17-18.[12]郭海丽.基于Proteus与单片机的交通灯控制系统的设计[J].衡水学院学报,2012,14(04):126-128.[13]吴国文.基于AT89C51单片机的交通灯控制系统设计与仿真[J].现代电子技术,2012,35(05):144-146.[14]苏玉萍.基于单片机的交通灯控制系统的设计与仿真[J].甘肃科技,2011,27(19):32-34+5.[15]曹纯子,李业德.基于单片机的智能交通灯控制器设计[J].山东理工大学学报(自然科学版),2011,25(03):105-107.[16]郭循钊,邝帆,邵平,许宏科.基于单片机的多功能交通灯控制系统设计与仿真实现[J].公路交通技术,2010(01):128-131.[17]庞前娟,李精华,李兴富.基于AT89S51单片机的交通灯控制器仿真及实现[J].信息技术,2009,33(10):33-35.[18]王冬梅,张建秋,路敬祎.基于单片机的交通灯控制系统设计与实现[J].佳木斯大学学报(自然科学版),2009,27(01):94-96.[19]郑建光,李永.基于AT89C51单片机的交通灯系统设计[J].自动化与仪器仪表,2008(06):30-33.[20]陈延奎.基于单片机的交通灯控制系统[J].重庆科技学院学报(自然科学版),2007(04):59-60+77.HYPERLINK附录2:程序清单/******************************************************本交通灯实现的功能:1、正常时可以分时段车流高峰与低峰进行控制2、可以紧急控制,让某些车通过3、可以人为设置为车流高峰区状态******************************************************/#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuchart,b,s,s1,s2,s3,s4,yellowtime,yellowflag,half_sec,sec,a;uinttime;sbitdula=P2^7;sbitwela=P2^6;bitg; //中断标志位ucharcodetable[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};voiddelay(uintz) //延时函数{ ucharx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidinit() //初始化函数{half_sec=0;s=1;sec=20;t=0;g=0;time=5;yellowtime=5;yellowflag=0;s1=15; s2=10;s3=10;s4=20; IT1=0; //设置外部中断1为低电平触发IT0=0; //设置外部中断0为低电平触发EX0=1; //允许外部中断0EX1=1;TMOD=0x01; //设置定时器为十六位工作方式TH0=(65536-50000)/256;TL0=(65536-50000)%256;//设置定时时间为50MSEA=1;//总中断使能ET0=1;//定时器0中断开TR0=1;//定时器0}voidmain(){init();/****************状态S1,绿灯亮********************/while(1){ if((s==1)&&(yellowflag==0)) { P1=0xd7;//设置车道灯 P3=0xed;//设置人行道灯 dula=1; //打开段锁存器 P0=table[(sec-yellowtime)/10];//存入段码,显示绿灯十位 dula=0; //锁住段码 P0=0xff;//消影 wela=1; //打开位锁存器 P0=0xfe;//存入位选,设置某位数码管显示 wela=0; P0=0; //消影 delay(3); dula=1; P0=table[(sec-yellowtime)%10]; //显示绿灯的个位 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; P0=0; delay(3); dula=1; P0=table[sec/10]; //显示红灯的十位 dula=0; P0=0xff; wela=1; P0=0xef; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; //显示红灯的个位 dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; P0=0; delay(3); }/****************状态S1,黄灯亮********************/ if((s==1)&&(yellowflag==1)) { if(half_sec%2) { P1=0xb7;//车道黄灯关 P3=0xfd;//人行道绿灯关 } else { P1=0xf7;//车道黄灯开 P3=0xed;//人行道绿灯开 } //前面十行实现黄灯闪烁 dula=1; P0=table[sec/10]; dula=0; P0=0xff; wela=1; P0=0xee; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; dula=0; P0=0xff; wela=1; P0=0xdd; wela=0; P0=0; delay(3); }/****************状态S2,绿灯亮********************/ if((s==2)&&(yellowflag==0)) { P1=0x7d;//设 P3=0xbe; dula=1; P0=table[(sec/10)]; //显示绿灯的十位 dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; P0=0; delay(3); dula=1; P0=table[(sec%10)]; //显示绿灯的个位 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; P0=0; delay(3); dula=1; P0=table[(sec-yellowtime)/10]; //显示红灯的十位 dula=0; P0=0xff; wela=1; P0=0xef; wela=0; P0=0; delay(3); dula=1; P0=table[(sec-yellowtime)%10]; //显示红灯的个位 dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; P0=0; delay(3); }/****************状态S2,黄灯亮********************/ if((s==2)&&(yellowflag==1)) { if(half_sec%2) { P1=0x7b; P3=0xbf; } else { P1=0x7f;//前面四行实现黄灯闪烁 P3=0xbe; } dula=1; P0=table[sec/10]; dula=0; P0=0xff; wela=1; P0=0xee; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; dula=0; P0=0xff; wela=1; P0=0xdd; wela=0; P0=0; delay(3); }/****************状态S3,绿灯亮********************/if((s==3)&&(yellowflag==0)) { P1=0xe7;//设置灯 P3=0xbd; dula=1; P0=table[(sec-yellowtime)/10]; //显示绿灯的十位 dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; P0=0; delay(3); dula=1; P0=table[(sec-yellowtime)%10]; //显示绿灯的个位 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; P0=0; delay(3); dula=1; P0=table[sec/10]; //显示红灯的十位 dula=0; P0=0xff; wela=1; P0=0xef; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; //显示红灯的个位 dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; P0=0; delay(3); }/****************状态S3,黄灯亮********************/ if((s==3)&&(yellowflag==1)) { if(half_sec%2) P1=0xb7; else P1=0xf7;//前面四行实现黄灯闪烁 dula=1; P0=table[sec/10]; dula=0; P0=0xff; wela=1; P0=0xee; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; dula=0; P0=0xff; wela=1; P0=0xdd; wela=0; P0=0; delay(3); }/****************状态S4,绿灯亮********************/if((s==4)&&(yellowflag==0)) { P1=0x7e;//设置灯 dula=1; P0=table[(sec/10)]; //显示绿灯的十位 dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; P0=0; delay(3); dula=1; P0=table[(sec%10)]; //显示绿灯的个位 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; P0=0; delay(3); dula=1; P0=table[(sec-yellowtime)/10]; //显示红灯的十位 dula=0; P0=0xff; wela=1; P0=0xef; wela=0; P0=0; delay(3); dula=1; P0=table[(sec-yellowtime)%10]; //显示红灯的个位 dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; P0=0; delay(3); }/****************状态S4,黄灯亮********************/ if((s==4)&&(yellowflag==1)) { if(half_sec%2) P1=0x7b; else P1=0x7f;//前面四行实现黄灯闪烁 dula=1; P0=table[sec/10]; dula=0; P0=0xff; wela=1; P0=0xee; wela=0; P0=0; delay(3); dula=1; P0=table[sec%10]; dula=0; P0=0xff; wela=1; P0=0xdd; wela=0; P0=0; delay(3); } } }voidTime0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;//设置定时时间为50MSt++;if(t==10)//0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人教版初一英语第二学期期末考试试卷及答案(十一)
- 骨折症状及护理措施指导
- 曼月乐作用与宣教
- 滨州市护士招聘笔试题及答案
- 溃疡性口腔炎常见症状解析及护理策略
- 阑尾炎急性发作特征梳理及护理建议
- 慢性阻塞性肺疾病症状及护理技巧
- 健康评估 水肿
- 尿失禁症状与护理要点
- 胆囊炎常见症状及护理技巧详解
- 赤子城科技-市场前景及投资研究报告-全球化社交娱乐公司灌木丛矩阵出海壁垒
- 2026上海市众仁慈善服务中心招聘20人备考题库含答案详解(夺分金卷)
- 中国红斑狼疮诊疗指南(2026版)
- 2026年北京西城区高三一模化学试卷及答案
- 内蒙古包头市2026届中考生物四模试卷含解析
- 雨课堂学堂在线学堂云《人工智能安全与伦理(北京航空航天)》单元测试考核答案
- 2026年安庆岳西县县级公立医院公开招聘专业技术人员12名考试备考题库及答案解析
- 常见急症的急救护理措施
- 2026年山东德州市高三一模高考英语试卷试题(答案详解)
- 中职《劳动教育》课程标准
- 综合实践活动课程实施方案与实施指南
评论
0/150
提交评论