![红绿灯控制系统的设计与制作_第1页](http://file4.renrendoc.com/view/461c7337e9ddf93ab608fb227e435cd6/461c7337e9ddf93ab608fb227e435cd61.gif)
![红绿灯控制系统的设计与制作_第2页](http://file4.renrendoc.com/view/461c7337e9ddf93ab608fb227e435cd6/461c7337e9ddf93ab608fb227e435cd62.gif)
![红绿灯控制系统的设计与制作_第3页](http://file4.renrendoc.com/view/461c7337e9ddf93ab608fb227e435cd6/461c7337e9ddf93ab608fb227e435cd63.gif)
![红绿灯控制系统的设计与制作_第4页](http://file4.renrendoc.com/view/461c7337e9ddf93ab608fb227e435cd6/461c7337e9ddf93ab608fb227e435cd64.gif)
![红绿灯控制系统的设计与制作_第5页](http://file4.renrendoc.com/view/461c7337e9ddf93ab608fb227e435cd6/461c7337e9ddf93ab608fb227e435cd65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
红绿灯控制系统的设计与制作摘要摘要随着城市化的不断进步,交通问题逐渐成为人们日益关注的热点,因此如何制定一套完善的红绿灯控制系统,是实现交通顺畅的重要保障。本人设计主要采用AT89C51单片机作为核心器件,设计一套红绿灯控制系统,并通过系统调试,实现设计的运作。该系统具备轻便、安装简单、可操作性强、实用性高等优点,适合多种情况使用。本设计基于AT89C51单片机的红绿灯控制系统,其中有两个LED数码显示管,采用的是模块化的设计方法,主要的模块包括单片机模块,发光二极管模块,控制模块,以及显示模块等等。运用KEILuVision4编译系统进行软件编程,生成目标代码,并下载到单片机当中,实现软硬件相结合,最终实现了本系统所需要实现的功能。关键词:红绿灯;单片机;数码管;KEILuVision4目录目录TOC\o"1-3"\h\u摘要 第一章引言 1.1研究背景及意义 1.2研究内容 第二章系统设计方案 2.1总体方案 2.2总设计图 2.3设计方案分析 2.3.1倒计时显示界面 2.3.2红绿灯 第三章硬件系统设计 3.1单片机的选择 3.2最小系统设计 3.2.1复位电路 3.2.2振荡电路 3.3显示设计 3.4发光二极管模拟红绿灯 3.5按键模拟 第四章系统软件设计 4.1软件编译环境测试 4.1.1C语言介绍 4.1.2KeiluVision4介绍 4.2系统总体设计 第五章系统调试及实物制作 5.1系统调试 5.2实物制作流程 总结与展望 参考文献 致谢 附件:原理图和程序清单 第一章引言第一章引言1.1研究背景及意义随着时代不断的发展,人们逐渐意识到,要想提升城市化的管理水平,就必须要做好城市交通管理,而城市交通管理的关键在于红绿灯控制系统的应用方面。红绿灯控制系统的设计是一个十分复杂的过程,红绿灯系统之间的协调不仅仅局限于某一个路口之间,更重要的是整个区域之间每一个道路系统的整体性配合。从红绿灯开始出现到如今,经历多种发展阶段。目前为止,红绿灯控制系统已经形成了一个完善的机制,对交通起到了有效的维护作用。倘若在每一个交通路口都需要安排交警来进行交通的维护,那么不仅仅会浪费人力资源,同时还存在人工监管方面的缺陷,所以这种方法并不能减少交通事故的产生,因此有必要设计一个以单片机为核心的红绿灯控制系统,实现自动化控制,具备较强的社会意义和价值。1.2研究内容根据课题的要求进行红绿灯控制系统的硬件设计和软件编程,并完成实物的制作与调试。章节内容为:第一章:主要介绍了本文的研究背景和意义,以及研究内容。第二部:主要介绍了系统的设计方案,如何来完成红绿灯控制系统。第三章:主要介绍了系统的硬件设计,单片机的型号选择,各电路模块的硬件搭建,模块设计包含了单片机最小系统、显示模块、按键模块。第四章:主要介绍了编程系统的使用,采用了KEILuVision4软件作为编程软件完成系统程序的设计和编译。第五章:主要介绍了系统的调试过程,在实际制作遇到的一些问题和实物制作的流程,最后写了总结与展望,以及对老师的感谢。第二章系统设计方案第二章系统设计方案2.1总体方案本文的红绿灯控制系统主要有单片机,交通显示以及数码管显示等部分组成,除了基本的维护交通的作用之外,还拥有倒计时的功能。在一个十字路口,每一个干道都配备红绿灯,不仅如此,每个路口也有左转向灯,与执行分离。该系统设置的红绿灯间隔时间为60秒,分三种工作状态,分别是正常、繁忙以及特殊。在正常状态之下,首先是南北通行,时间为40秒,当时间到数到5秒时,南北直行灯转为黄灯,此后转变为左转向灯,时间为20秒,当倒数到第5秒时,左转灯转变为黄灯0秒后开始东西直行,时间为40秒,当时间到5秒,开始变为左转向灯,时间为20秒,倒数到5秒之后开始变成黄灯,然后又是南北通行。紧急模式之下,禁止直行和左转,四个方向全为红灯。特殊模式之下,四个方向全为黄灯,夜间通行。运用单片机的定时计数器中断系统实现倒计时,其中倒计时工作通过计时器进行控制,每过0.05秒中断一次,第20次恰好过了1秒,这个时候便实现了倒计时的目的。2.2总设计图图2.1总设计图2.3设计方案分析本文的设计系统主要分为倒计时,红绿灯以及控制模块,主要希望可以试想一下基本功能,首先是时间的显示,以及时间的倒数功能,其次是红绿灯之间的相互转换,然后是南北直行,东西直行,南北左转,东西左转四种模式的切换。系统硬件图如下所示。图2.2系统整体框架图2.3.1倒计时显示界面系统主要需要完成倒计时的功能以及状态灯的转化功能,所以我们主要有两种方案的选择。第一种是完全使用数码管,这种显示方法比较简单,并且程序设计起来比较简单,需要的端口较少。第二种方法采用点阵式的LED显示,这种方法比较复杂,并且需要设计复杂的软件设计,但是功能比较完善,可以显示各种图形和字符。经过方案的对比,在本次毕业设计当中,由于实验情况,实验素材以及成本的限制,我们决定采用第一种数码管方案以来进行倒计时的显示。2.3.2红绿灯在系统设计当中,拟采用LED灯来模拟红绿灯。LED具备体积小、电流小、安装方便、使用寿命长等特点,可以使用各种电源进行供电。在使用的过程当中需要串接适合的限流电阻,才能保障其正常使用。第三章硬件系统设计第三章硬件系统设计3.1单片机的选择AT89C51是一种带4k字节flash可编程、可擦除的低电压存储器,能与传统型的MCS-51指令集和输出管角相兼容。AT89C51是一种十分高级的微型控制器,在很多嵌入式控制系统当中利用AT89C51,会变得十分高效便捷。如图是其引脚图以及内部结构图。图3.1AT89C51引脚图及内部结构图3.2最小系统设计单片机的最小系统的组成有处理数据的单片机芯片,能够进行计时,提供晶振频率的震荡电路以及初始化系统的复位电路这三个模块组成,如图3.2所示图3.2单片机最小系统3.2.1复位电路复位单片机的原理是一个上电复位和单片机的复位引脚外部接连的电阻器、电容器,当开启复位电路,可以通过外部电容器充电,达成复位操作。当电源接通时,微控制器的引脚高电平降低,所述电容器在持续两个机器周期的基础上,可以实现微控制器的复位操作。为了实现手动复位,需要设置一个开关与所述电容器并联连接。通过推动微控制器的引脚得到一个高电平。同时鉴于对电容器需要进行充电,于是保留高电平以实现单片机的复位。如图是复位电路图。图3.3复位电路图3.2.2振荡电路在整个单片机系统当中,晶体振荡器的作用十分的中澳,它需要整合单片机里面电路,用来创造单片机内需的时钟频率。单片机运行的速度越快,则代表晶振创造的时钟频率越高。单片机的所有指令的执行都是在晶振提供的时钟频率基础之上进行的,而单片机晶振的主要功能就是给系统提供基本的时钟信号,在单片机的时钟电路设计过程当中,主要可以分为内部时钟方式,以及外部时钟方式。外部时钟方式的主要工作原理就是将外部原有的时钟信号导入到单片机工作系统当中,这种外部时钟方式更多的适用于多个单品及共同工作的状态,有利于同步每一个单片机。在这个系统中,使用内部时钟方式。单片机的内部放大器由一个外部晶体管振荡器和一个电容器,并联谐振电路产生平稳的自激振荡器,其供给了振荡时钟的内部时钟电路。下图为振荡电路图,它选择的晶振为11.0592MHz和两个22pF的电容器。图3.4振荡电路图3.3显示设计本设计采用的是将七个发光的二极管的阴极连在一起,组成一个公共阴极,在阳极端输入高电平,就会使得发光二极管点亮,不会影响输入低电平的发光二极管。如图所示。图3.5共阴极以及二位数码管LED显示包括静态以及动态显示、静态显示,指的是当LED显示器显示某一个字符的时候,其对应的发光二极管始终处于流通或者是停滞的状态,要想实现静态显示,必须要有一个八位的输出控口进行控制,这种显示方法需要占用较多的资源,所以一般适合使用在较少的显示位置,当静态显示的过程当中仅需要较小的电流,就可以使LED灯达到较高的亮度,因此可以通过芯片直接驱动。动态显示是依次点亮每一个数码管,对于显示器来说,他有多个接口电路,所以需要两个输出口,才能将数码管的段控线并联在一起。由一个八位的I/O口进行控制,不仅如此还要有一个输出口来实现信号的控制。所谓位控指的就是控制LED显示器的公共端,位控信号的数目应该与显示器的个数相等,这种动态显示的电路主要特点就是成本较低,并且电路组装起来比静态显示更加方便。动态显示和静态显示的主要区别在于:动态显示方式硬件电路比较单一,而静态显示方式的程序比较单一。在本系统的设计当中,使用的是两个二位一体的共阴数码管,无论链接几个共阴数码管,其都是一样的显示原理。动态显示方式使用的是动态扫描的手段来使数码管变亮,尽管只能依次点亮数码管,但是由于人员在观察的过程当中受到暂留效应的影响,只要间隔时间达到一定的要求,就可以在人眼中实现同时显示。图3.6二位数码管3.4发光二极管模拟红绿灯发光二极管属于半导体二极管,可以把电能转换为光能,缩写为LED。其和普通的二极管类似,又有单向的导电性。当给发光二极管施加正电压之后,从p区注入到N区的空穴以及从N区注入到P区的电子,在PN结附近数微米内分别与N区的电子以及P区的空穴复合,产生自发辐射的荧光。不同的半导体材料拥有不同状态,电池和空穴复活的过程当中,可以产生不同的能量,释放的能量越多表示,他们所散发的波长就越短。因此常常使用红黄绿三种颜色的二极管作为红绿灯的模拟。3.5按键模拟单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O口的值,这一次的值如果为1表示低电平的时间不到10~200毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。硬件电路如图3.7所示:本文设计的红绿灯系统在程序开始时先实行的是南北方向的直行,东西方向显示为60秒的红灯,此后改为东西段直行,南北方向显示的是60秒的红灯,以此作为一个循环。整个系统分为正常,繁忙,以及特殊三种工作状态,可以通过按钮来实现正常、繁忙和特殊三种状态的相互转换。在正常模式之下,东西方和南北方的直行时间都为40秒,左转时间为20秒。在繁忙模式之下,东西方以及南北方的直行时间改为20秒,左转时间为15秒,在特殊状态之下,东西方和南北方的四个灯全为红灯,四个路口禁止通行。如下图是按键模块的电路图。这里的开关使用的是二极管,主要是为了避免三个线同时被按下产生的系统中断。图3.7按键模块电路原理图第四章系统软件设计第四章系统软件设计4.1软件编译环境测试4.1.1C语言介绍C语言是计算机程序设计语言中一种常见的语言,它的主要功能是完成计算机的系统程序的编写工作,同时也可以用来一般应用程序的编写。在传统的计算机系统软件当中,主要是利用汇编语言进行程序的编写,在单片机系统当中也是这样。但是由于汇编语言的程序在各种性能方面都表现得较差,所以这个汇编语言编写出来的单片机应用程序存在周期长等缺点,并且在调试的过程当中也很难发现错误。所以为了更好地提高单片机系统的效率,减少整个程序的错误性和波动性,采用C语言是一种更好的方法。相对于其他的语言来说,C语言比较高级,同时也能对计算机的硬件进行直接的操作,无论是在计算能力还是表达能力方面都有着较高的优点。对于传统的应用软件当中不能用其他汇编语言解决的问题,都可以使用C语言来解决。因此不管是在功能、结构还是稳定性方面,C语言都是软件编译中的不二之选。4.1.2KeiluVision4介绍在本系统当中使用的调试软件是KeiluVision4开发系统,他是美国微软公司出行的,适用于51单片机的C语言开发环境。该系统有较强的适应性,不仅有源代码和功能导航器的功能之外,还有独特的配置向导功能,加快了代码和文件的生成。4.2系统总体设计如图4.1,是整个系统的流程图。图4.1主程序流程图如图4.2为定时中断流程图图4.2定时中断流程图图4.3外部中断流程图第五章系统调试及实物制作第五章系统调试及实物制作5.1系统调试仿真电路和程序的编写完成我们就可以开始对系统进行调试,在初步的调试过程中发现系统不能如期的运行。下图为初次运行失败情况显示。图5.1运行失败观察仿真运行效果,发现LED灯全部亮起,但是数码管不显示时间,第一步我们先排查软件问题,发现软件系统提示丢失模型。图5.2系统报警提示首先我们需要解决软件问题,根据系统报警提示,我们首先将软件模型补充完整,由于不是正版的软件所以元件仿真模型可能有数据的改变,不能有效的运行,将模型更新完成后发现问题并不能解决。接着排查后三条报警,报警显示为CPU运行速度慢而且在实际运行时,线路当中的电平变化非常的慢,通过百度查询,最终得出结论:是因为仿真里面用了大量的led灯,双击该器件可以看到ModelType选项里选择的是Analog(模拟),所以大大增加的软件的计算量,导致运行缓慢,而在我的仿真里只需要LED实现亮灭两种状态就可以了,所以将该选项改为Digital(数字)就可以了,实测有效。图5.3输数据改变图在将所有的LED灯的数据改变完成之后,初步的运行发现在东西与南北方向切换时系统会重新复位,并且显示异常。在编程中找出了时间设定的错误,红灯的时间应该大于绿灯与黄灯的总和,最好的情况就是绿灯加黄灯等于红灯的时间最后我们设定红灯35S、绿灯30S、黄灯5S。图5.4东西通行图5.5南北通行系统的主要功能运行完成后我们需要测试按键功能,根据设计需求我们设置了七个按键,从上到下依次是复位按键、特殊模式、紧急模式、调试确定、时间+、时间-、时间调试选择。1、特殊模式:按下特殊模式按键,四个路口的灯都为黄灯闪烁,计时器归零图5.6特殊模式紧急模式:按下紧急模式按键后,四个路口的灯都为红灯,计时器归零。图5.7紧急模式图5.8时间调整按键图5.9时间调试按键图5.10系统复位系统整体的调试结果还算乐观,但是还是有不足之处例如在时间调试时我们只能调试绿灯的时间,红灯的时间由于程序的编写,所以会在你调的绿灯时间上自动加上黄灯的时间进行自动的调整,紧急模式与特殊模式不能退出模式,只有复位系统才能正常运行。5.2实物制作流程表5.11元件清单名称规格数量主要功能或作用按钮6*6*59分别控制黄灯常亮(深夜模式)、禁行(紧急模式)、东西通行、南北通行、时间加、时间减、切换、确定。电容30P2单片机时钟振荡电容10UF1单片机复位电阻2203限流排阻10K2单片机单片机AT89C20521CPU晶体12M1单片机时钟振荡芯片74HC2451放大驱动数码管显示三极管90121驱动蜂鸣器两位一体共阴数码0.364倒计显示芯片底座40脚1保护引脚芯片底座20脚1保护引脚发光二极管(红)5MM4交通灯路口显示发光二极管(绿)5MM4交通灯路口显示发光二极管(黄)5MM4交通灯路口显示发光二极管3MM1电源显示自锁开关8*8MM1控制VCCUSB电源线60MM1连接USB口DC座3.5*1.3MM1直流电源插座插针2外接电源接线PCB板155MMX100MM11、元件的分布及安插2、焊接飞线连接上电测试总结与展望总结与展望一、总结本设计基于AT89C51单片机的红绿灯控制系统,其中有两个LED数码显示管,采用的是模块化的设计方法,主要的模块包括单片机模块,发光二极管模块,控制模块,以及显示模块等等。通过硬件和软件的相结合,完成了本次系统的设计。由于使用的单片机是整个系统的核心控件,同时单片机的性能较高,所以整个系统的功能比较强大,能够有效地达到预期的设计效果,实现了红绿灯之间的相互转化,以及特殊情况之下红绿灯的调整。在系统调试阶段,主要考查的是我们的逻辑思维能力和对软件的熟悉程度,所以在整个系统设计的过程当中,尽管也出现了一些问题,但是通过我不断地调试和努力,最终让我对汇编制定有了更加深刻的印象和自我理解。二、今后研究方向通过本次系统的设计,让我充分的认识到,自己在实践过程当中仍然存在诸多问题,因为实践不仅仅是书本上学到的东西还有更多经验需要自己去摸索。我的主要问题在于前期没有做好充足的准备,导致实际行动起来容易出现错误。所以,在未来的发展过程当中,希望能够提高自己的实际解决问题的能力以及综合素质,应该尽量先保障自己有充足的理论知识,同时要提高自身的实践能力。在实践的过程当中要不怕失败,只有经过反复的调试才能够优化整个系统的设计。参考文献参考文献[1]王子乐,黄志远.基于单机片的智能交通红绿灯控制系统设计[J].数字技术与应用,2018,v.36;No.332(02):13+16.[2]邓红.交通灯智能应用系统的设计与实现[J].大观周刊,2012(39):42-43.[3]卢易枫,郑丽敏.LED彩灯控制系统设计[J].学园,2015:200.[4]吴振英,庄林.汽车自动识别红绿灯系统设计[J].科技通报,2015(07):221-225.[5]芦军军.GIS红绿灯控制管理系统设计与实现[J].城市建设理论研究(电子版),2018,No.259(13):181.[6]何瑞,滕道祥,仲学,马晓杰.红绿色交通灯辅助系统的设计与实现[J].科技视界,2016:261[7]苏永斌.简析路灯与红绿灯智能化管理系统[J].《城市照明》,2016(2):15-15.[8]曹竞豪,徐天伟,郑鹏.基于单机片的智能交通红绿灯控制系统设计[J].科技创新与应用,2017(16):78-78.[9]吴家存.基于单机片的智能交通红绿灯控制系统设计[J].数字技术与应用,2012(06):183.致谢致谢一转眼就到了与大家分别的日子,回想老师和同学们亲切的眼神历历在目,感谢在我学习的这几年同学们的热情陪伴,是你们教会了我许多与人相处的道理。感谢我的老师们的悉心教导,是你们让我成为了一个更加完整的成年人。毕业之际,我要感谢每一个帮助过我的人,也感谢我的指导老师在我的毕业设计过程当中对我的悉心指导,您孜孜不倦的身影始终影响着我,未来我会以你为榜样,不忘初心,砥砺前行。附录附录原理图程序#include<reg51.h> //头文件#defineucharunsignedchar#defineuintunsignedint //宏定义uchardatabuf[4]; //秒显示的变量uchardatasec_dx=20; //东西数默认uchardatasec_nb=30; //南北默认值uchardataset_timedx=20; //设置东西方向的时间uchardataset_timenb=30; //设置南北方向的时间intn;uchardatacountt0,countt1;//定时器0中断次数//定义6组开关sbitk4=P3^7;//切换方向sbitk1=P3^5; //时间加sbitk2=P3^6; //时间减sbitk3=P3^4; //确认sbitk5=P3^1; //禁止sbitk6=P1^5; //夜间模式sbitRed_nb=P2^6; //南北红灯标志sbitYellow_nb=P2^5; //南北黄灯标志sbitGreen_nb=P2^4;//南北绿灯标志sbitRed_dx=P2^3; //东西红灯标志sbitYellow_dx=P2^2; //东西黄灯标志sbitGreen_dx=P2^1; //东西绿灯标志 bitset=0; //调时方向切换键标志=1时,南北,=0时,东西bitdx_nb=0; //东西南北控制位bitshanruo=0; //闪烁标志位bityejian=0; //夜间黄灯闪烁标志位ucharcodetable[11]={ //共阴极字型码 0x3f,//--0 0x06,//--1 0x5b,//--2 0x4f,//--3 0x66,//--4 0x6d,//--5 0x7d,//--6 0x07,//--7 0x7f,//--8 0x6f,//--9 0x00//--NULL};//函数的声明部分voiddelay(intms); //延时子程序voidkey(); //按键扫描子程序voidkey_to1(); //键处理子程序voidkey_to2();voidkey_to3();voiddisplay(); //显示子程序voidlogo(); //开机LOGOvoidBuzzer();//主程序voidmain(){ TMOD=0X11; //定时器设置 TH1=0X3C; TL1=0XB0; TH0=0X3C; //定时器0置初值0.05S TL0=0XB0; EA=1; //开总中断 ET0=1; //定时器0中断开启 ET1=1; //定时器1中断开启 TR0=1; //启动定时0 TR1=0; //关闭定时1 EX0=1; //开外部中断0 EX1=1; //开外部中断1logo(); //开机初始化 P2=0Xc3; //开始默认状态,东西绿灯,南北黄灯sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒 while(1) //主循环 { key(); //调用按键扫描程序 display(); //调用显示程序 } }//函数的定义部分voidkey(void) //按键扫描子程序{ if(k1!=1) //当K1(时间加)按下时 { display(); //调用显示,用于延时消抖 if(k1!=1) //如果确定按下 { TR0=0; //关定时器 shanruo=0; //闪烁标志位关 P2=0x00; //灭显示 TR1=0; //启动定时1 if(set==0) //设置键按下 set_timedx++; //南北加1S else set_timenb++; //东西加1S if(set_timenb==100) set_timenb=1; if( set_timedx==100) set_timedx=1; //加到100置1 sec_nb=set_timenb; //设置的数值赋给东西南北 sec_dx=set_timedx; do { display(); //调用显示,用于延时 } while(k1!=1); //等待按键释放 } } if(k2!=1) //当K2(时间减)按键按下时 { display(); //调用显示,用于延时消抖 if(k2!=1) //如果确定按下 { TR0=0; //关定时器0 shanruo=0; //闪烁标志位关 P2=0x00; //灭显示 TR1=0; //关定时器1 if(set==0) set_timedx--; //南北减1S else set_timenb--; //东西减1S if(set_timenb==0) set_timenb=99; if( set_timedx==0) set_timedx=99; //减到1重置99 sec_nb=set_timenb; //设置的数值赋给东西南北 sec_dx=set_timedx; do { display(); //调用显示,用于延时 } while(k2!=1); //等待按键释放 } } if(k3!=1) //当K3(确认)键按下时 { display(); //调用显示,用于延时消抖 if(k3!=1) //如果确定按下 { TR0=1; //启动定时器0 sec_nb=set_timenb; //从中断回复,仍显示设置过的数值 sec_dx=set_timedx; //显示设置过的时间 TR1=0; //关定时器1 if(set==0) //时间倒时到0时 { P2=0X00; //灭显示 Green_dx=1; //东西绿灯亮 Red_nb=1; //南北红灯亮 sec_nb=sec_dx+5; //回到初值 } else { P2=0x00; //南北绿灯,东西红灯 Green_nb=1; Red_dx=1; sec_dx=sec_nb+5; } } } if(k4!=1) //当K4(切换)键按下{ display(); //调用显示,用于延时消抖 if(k4!=1) //如果确定按下 { TR0=0; //关定时器0 set=!set; //取反set标志位,以切换调节方向 TR1=0; //关定时器1 dx_nb=set; do { display(); //调用显示,用于延时 } while(k4!=1); //等待按键释放 } } if(k5!=1) //当K5(禁止)键按下时 { display(); //调用显示,用于延时消抖 if(k5!=1) //如果确定按下 { TR0=0; //关定时器 P2=0x00; //灭显示 Red_dx=1; Red_nb=1; //全部置红灯 TR1=0; sec_dx=00; //四个方向的时间都为00 sec_nb=00; do { display(); //调用显示,用于延时 } while(k5!=1); //等待按键释放 } } if(k6!=1) //当K6(夜间模式)按下 { display(); //调用显示,用于延时消抖 if(k6!=1) //如果确定按下 { TR0=0; //关定时器 P2=0x00; TR1=1; sec_dx=00; //四个方向的时间都为00 sec_nb=00; do { display(); //调用显示,用于延时 } while(k6!=1); //等待按键释放 } }}voiddisplay(void)//显示子程序{ buf[1]=sec_nb/10; //第1位东西秒十位 buf[2]=sec_nb%10; //第2位东西秒个位 buf[3]=sec_dx/10; //第3位南北秒十位 buf[0]=sec_dx%10; //第4位南北秒个位 P1=0xff; //初始灯为灭的 P0=0x00; ////灭显示 P1=0xfe; //片选LED1 P0=table[buf[1]]; //送东西时间十位的数码管编码 delay(1); //延时 P1=0xff; //关显示 P0=0x00; //灭显示 P1=0xfd; //片选LED2 P0=table[buf[2]]; //送东西时间个位的数码管编码 delay(1); //延时 P1=0xff; //关显示 P0=0x00; //关显示 P1=0Xfb; //片选LED3 P0=table[buf[3]]; //送南北时间十位的数码管编码 delay(1); //延时 P1=0xff; //关显示 P0=0x00; //关显示 P1=0Xf7; //片选LED4 P0=table[buf[0]]; //送南北时间个位的数码管编码 delay(1); //延时}voidtime0(void)interrupt1using1 //定时中断子程序{ TH0=0X3C; //重赋初值 TL0=0XB0; //12m晶振50ms//重赋初值 TR0=1; //重新启动定时器 countt0++; //软件计数加1 if(countt0==10) //加到10也就是半秒 { if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 { Green_dx=0; Yellow_dx=0; } if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //南北黄灯闪 { Green_nb=0; Yellow_nb=0; } } if(countt0==20) //定时器中断次数=20时(即1秒时) { countt0=0; //清零计数器 sec_dx--; //东西时间减1 sec_nb--; //南北时间减1 if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 { Green_dx=0; Yellow_dx=1; } if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //南北黄灯闪 { Green_nb=0; Yellow_nb=1; } if(sec_dx==0&&sec_nb==5) //当东西倒计时到0时,重置5秒,用于黄灯闪烁时间 { sec_dx=5; shanruo=1; } if(sec_nb==0&&sec_dx==5) //当南北倒计时到0时,重置5秒,用于黄灯闪烁时间 { sec_nb=5; shanruo=1; } if(dx_nb==0&&sec_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保行业废弃物处理风险协议
- 高级化妆品行业售后免责协议
- 建设工程施工协议(32篇)
- 上海手房买卖协议
- 临时租车协议书
- 班班通设备管理和使用协议
- 物流配送中心建设委托代理合同
- 建筑工地安全施工责任与免责合同
- 房地产项目销售居间合同
- 教练与学员合同协议
- 光伏电站小EPC规定合同范本
- 2024年01月江苏2024年昆山鹿城村镇银行第三期校园招考笔试历年参考题库附带答案详解
- 中国人口研究专题报告-中国2025-2100年人口预测与政策建议-西南财经大学x清华大学-202501
- 建筑工程安全与管理
- 2025年内蒙古机电职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年05月齐鲁银行总行2024年社会招考笔试历年参考题库附带答案详解
- 浙江省绍兴市2024-2025学年高一上学期期末调测英语试题(无答案)
- 幼儿园开学教师安全知识培训
- 2024年医疗器械经营质量管理规范培训课件
- 中华人民共和国学前教育法-知识培训
- 2023年新高考(新课标)全国2卷数学试题真题(含答案解析)
评论
0/150
提交评论