基于单片机的交通灯设计与实现.docx
摘 要如今随着人们生活水平的提高,车辆越来越多,交通事故频繁发生。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量,提高道路通行能力,减少交通事故有明显效果。因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。本系统由单片机系统、按键、数码管显示、交通灯演示系统组成。设计一个用于东西、南北走向的交通管理。南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,通行时间均为25秒。本设计选用AT89C51主要也就是基于上述的两个原因。本交通灯系统选用了LED灯和一位数码管来模拟显示的交通灯切换状态。LED灯选用红绿黄三种颜色,模拟现实生活中的交通信号灯运行情况;倒计时灯由四个一位数码管组成,两个为一组,分别代表东西路口和南北路口的通行时间。电源方面本系统采用USB电脑供电方式。关键词: 单片机;AT89C51;交通灯;LED;USB电脑供电AbstractToday, as people's living standards improve, more and more vehicles, traffic accidents are frequent. Traffic lights have enabled the efficient traffic control, for ease traffic flow and improve road capacity and reduce traffic accidents have a significant effect. Thus providing a reliable, safe and convenient multifunction traffic light control system has practical necessity.The system consists of single-chip systems, keys, digital display, traffic lights demo system. Design one for the east and west bound traffic management. North-south and east-west direction lane road crossing two lanes of vehicles run alternately, travel time is 25 seconds. This design is the selection of AT89C51 mainly based on the above two reasons. The traffic light system has selected LED lights and a digital to analog display traffic light switching state. LED lights use three colors red, green and yellow to simulate real-life traffic signal operation; countdown lamp consists of four one digital tubes, two as a group, represent something intersections and junctions north and south travel time. The system uses USB power in the computer power supply.Keywords: MCU;AT89C51;Traffic lights;LED;USB computer power supply目 录1 绪论11.1 交通灯的发展史11.2 课题的背景21.3 研究的意义31.4 研究的主要内容31.5 国内外研究现状32 总体设计52.1 设计要求52.2 方案介绍62.2.1 供电方案62.2.2 显示界面方案73 硬件设计83.1 控制模块83.1.1 单片机的选择83.1.2 单片机最小系统113.1.3 移位寄存器74LS164133.2 显示模块153.2.1 反向器74LS04153.2.2 数码管163.2.3 发光二极管183.3 电源模块194 软件设计及仿真204.1 交通灯的设计程序流程图204.2 寄存器及变量的设定程序214.3 初始化程序214.4 各状态相关程序214.4.1 S1状态程序224.4.2 S2状态程序224.4.3 S3状态程序234.4.4 S4状态程序234.4.5 S5状态程序244.4.6 S6状态程序244.5 Keil及Proteus简介254.6 仿真与调试264.6.1 仿真操作过程264.6.2 Proteus仿真图264.6.3 Proteus仿真流程274.6.4 实物调试结果33结 论34致 谢35参考文献37附 录38附录A 英文附录38附录B 中文附录41附录C 相关程序441 绪论1.1 交通灯的发展史19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大厦前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯这是城市街道的第一盏信号灯。在灯的脚下,一位手持长杆的警察随心所欲地牵动皮带转换提灯的颜色。后来在信号灯的中心装上煤气灯罩 ,它的前面有两块红、绿玻璃交替遮挡。不幸的是只面世23天的煤气灯突然爆炸自灭,使一位正在值勤的警察也因此断送了性命。从此,城市的交通信号灯被取缔了。直到1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥信号家族,遍及全世界陆、海、空交通领域了。从最早的手牵皮带到20世纪50年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。交通指挥灯是非裔美国人加莱特摩根在1923年发明的。此前,铁路交通已经使用自动转换的灯光信号有一段时间了。但是由于火车是按固定的时刻表以单列方式运行的,而且火车要停下来不是很容易,因此铁路上使用的信号只有一种命令:通行。公路交通的红绿灯则不一样,它的职责在很大程度上是要告诉汽车司机把车辆停下来。开车的人谁也不愿意看到停车信号。美国夏威夷大学心理学家詹姆斯指出,人有一种将刹车和油门与自尊相互联系的倾向。他说:驾车者看到黄灯亮时,心里便暗暗作好加速的准备。如果此时红灯亮了,马上就会产生一种失望的感觉。他把交叉路口称作“心理动力区”。如果他的理论成立的话,这个区域在佛罗伊德心理学理论中应该是属于超我(supere go)而非本能(id)的范畴。新式的红绿灯能将闯红灯的人拍照下来。犯事的司机不久就会收到罚款单。有的红绿灯还具备监测车辆行驶速度的功能。1.2 课题的背景如今随着人们生活水平的提高,车辆越来越多,交通事故频繁发生。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量,提高道路通行能力,减少交通事故有明显效果。因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本系统设计一个基于单片机的交通灯控制系统。能方便的对交通灯进行控制,使交通更和谐。使用单片机作为本设计的控制方案主要是考虑到其低廉的成本和易学易用的特性,相较于类似ARM这类性能更为强大的控制方案,单片机的性能并非其优势所在。但是如何充分利用单片机已有的功能进行最大化的开发才是本设计的重点。1.3 研究的意义对单片机这一成熟的解决方案在交通灯领域的应用进行研究和开发,在研究和开发过程中重新认识了解单片机。同时,对所学的汇编语言进行重新学习,巩固所学知识。在制作实物的过程中,提高自身的动手能力和耐心,查找错误更是其中最重要的环节,会使我们更加了解我们所学知识在现实生活中的应用。通过以上这些方面,为我们以后的工作打下更坚实的基础。1.4 研究的主要内容本课题是以单片机的汇编语言来进行软件编程。硬件是以51系列单片机及其外部电路为主的系统。基于AT89C51单片机,设计一个基于单片机的交通灯系统。本课题的主要内容包括设计交通灯状态的管理方案;设计单片机最小系统和周边电路;设计交通灯系统、供电系统的电路结构;设计整个系统的电路分布和接线;使用汇编语言编写整个系统运行所需要的程序。1.5 国内外研究现状我国应用和研究城市交通控制系统的工作起步较晚,国家一方面进行以改善城市中心交通为核心的技术研究;另一方面采取引进与开发相结合的方针,建立了一些城市道路交通控制系统。虽然取得了较好的效果,但我国实际情况决定了需要对这些系统进行改进,比如:需要完善信号控制,现有的信号控制系统还存在一定的局限性。需要合理解决混合交通流问题。现有信号控制系统对自行车流大多是与机动车同时开始,容易造成交通流冲突。国外一些国家在这一领域的技术相对我国而言比较成熟,例如:澳大利亚的SCAT系统,采取分层递阶式控制结构。其控制中心备有一台监控计算机和一台管理计算机,通过串行数据通讯线路相连。地区级的计算机自动把各种数据送到管理计算机。监控计算机连续地监视所有路El的信号运行、检测器的工作状况。地区主控制器用于分析路段控制器送来的车流数据,确定控制策略,并对本区域各路口进行实时控制。SCATS系统体现了计算机网络技术结构控制易更改的优点。2 总体设计本系统设计分为硬件设计、软件设计、仿真以及实物焊接和调试。具体的设计要求及内容将在各章节中详细表述。2.1 设计要求首先,南北路口红灯亮,东西路口绿灯亮,同时开始25秒倒计时,以7段数码管显示时间。25秒倒计时至5秒时,东西路口的绿灯闪烁,计时到最后2秒时,东西路口黄灯亮。完成一次这样的循环需要25秒。25秒结束后,东西路口红灯亮,南北路口绿灯亮,并重新25秒倒计时,依次循环。如图2.1所示,这便是十字路口交通信号灯模拟图。图2.1 十字路口交通信号灯模拟图2.2 方案介绍把设计任务细化为六个状态,其对应状态S1-S6如图2.2所示。S1:南北路口红灯、东西路口绿灯亮20秒S2:南北路口红灯亮3秒,东西路口绿灯闪烁3秒S3:南北路口红灯亮2秒,东西路口黄灯亮2秒S4:南北路口绿灯、东西路口红灯亮20秒S5:东西路口红灯亮3秒,南北路口绿灯闪烁3秒S6:东西路口红灯亮2秒,南北路口黄灯亮2秒图2.2 交通灯状态转换图2.2.1 供电方案为使模块稳定工作,须有可靠电源。本设计考虑了两种电源方案:方案一:电池盒供电。此方案优点是方便携带,缺点是成本较高,电池跟电池盒都需要格外购买。方案二:电脑USB接口供电。本系统采用的是方案二电脑USB接口供电的方式,主要优点有三个。第一,USB供电稳定输出5伏,如果用干电池或者其他供电方式很难保证电源的稳定性;第二,成本低,供电线路由废旧的鼠标线改成,几乎没用一分钱,做到了节约;第三,方便,即插即用,不用为电池没电而烦恼。2.2.2 显示界面方案本设计涉及到倒计时、状态灯等功能。基于功能需求,本设计考虑如下三个方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任功能需求。方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。本系统采用的是方案三红绿黄三色LED灯和四个一位数码管,LED灯显示路口的通断情况,数码管显示倒计时,经济实惠,节约成本,但是实物焊接较为复杂。3 硬件设计硬件设计部分主要包含控制模块、显示模块以及电源模块。电源模块供电,控制模块控制显示模块按照设定程序显示信息,从而实现设计要求。3.1 控制模块3.1.1 单片机的选择本设计选用单片机为AT89C51,因为其有指令简单,易学易懂,外围电路简单,硬件设计方便,IO口操作简单,无方向寄存器,资源丰富,价格便宜、容易购买,资料丰富容易查找,程序烧写简单等一系列的有点。AT89C51简介是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,AT89C51简介是一种高效微控制器,AT89C51简介单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。图3.1为单片机AT89C51引脚排列图。40:VCC39:P0.0/(AD0)38:P0.1/(AD1)37:P0.2/(AD2)36:P0.3/(AD3)35:P0.4/(AD4)34:P0.5/(AD5)33:P0.6/(AD6)32:P0.7/(AD7)31:EA/VPP30:ALE/PROG29:PSEN28:P2.7/(A15)27:P2.6/(A14)26:P2.5/(A13)25:P2.4/(A12)24:P2.3/(A11)23:P2.2/(A10)22:P2.1/(A9)21:P2.0/(A8)AT89C511:P1.02:P1.13:P1.24:P1.35:P1.46:P1.57:P1.68:P1.79:RST10:P3.0(RXD)11:P3.1(TXD)12:P3.2(INT0)13:P3.3(INT1)14:P3.4(T0)15:P3.5(T1)16:P3.6(WR)17:P3.7(RD)18:XTAL2 19:XTAL120:GND图3.1 AT89C51引脚排列AT89C51单片机共包含40个引脚,每个引脚的功能如下:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.1.2 单片机最小系统本设计单片机主要是用于控制交通灯的演示系统,故只需要单片机最小系统即可完成。复位电路:单片机的最小系统是指能够驱动单片机工作的最小电路。此电路由单片机、时钟电路、电源、复位电路4个组成部分组成。其中,复位电路如图3.2。单片机复位电路原理是在单片机的复位引脚rst 上外接电阻和电容,实现上电复位,而复位时间是(时钟周期=12×振荡周期,振荡周期=1/f),这个时间只能大不能小,具体数值可以由rc电路计算出时间常数。图3.2 复位电路单片机复位后各寄存器的状态:A00H,表明累加器已被清零; PSW00H,表明选寄存器0组为工作寄存器组;SP07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP×××00000B,表明各个中断源处于低优先级;IE0××00000B,表明各个中断均被关断。时钟电路:时钟电路中最为重要的就是晶振,晶振的作用是为系统提供基本的时钟信号。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。通常一个系统共用一个晶振,便于各部分保持同步。晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。如图3.3所示,采用内部时钟产生方式,在XTAL1和XTAL2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击荡器。其发出的时钟脉冲直接送入片内定时控制部件。图3.3 时钟电路3.1.3 移位寄存器74LS16474LS164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。74LS164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。74LS164特性如下:门控串行数据输入;异步中央复位符合 JEDEC 标准 no. 7A;静电放电 (ESD) 保护;HBM EIA/JESD22-A114-B 超过 2000 V;MM EIA/JESD22-A115-A 超过 200 V;多种封装形式;额定从 -40 °C 至 +85 °C 和 -40 °C 至 +125 °C 。本设计通过移位寄存器74LS164来驱动显示模块的数码管,74LS164的RXD、TXD都是当作IO口使用的,每个74LS164在收到一个时钟后,D0(A/B)、Q0Q6顺次移到Q0Q7 中,而前一个芯片的Q7分别接到后一个的A/B端,由于它们的时钟都是共用的,所以在时钟输入时,前一个芯片的Q7就通过后一芯片的A/B端锁存到其Q0了,而各芯片原来的Q0Q6移到Q1Q7。这样只要连续发送32个时钟就可以把32位数据分别移到4个芯片的32个输出脚上。74LS164的引脚排列如图3.4所示。 74LS1641411321231141059687图3.4 74LS164引脚排列图74LS164共14个引脚,每个引脚功能如下:引脚1:符号DSA,数据输入引脚2:符号DSB,数据输入引脚3-6:符号Q0-Q3,输出引脚7:符号GND,地(0 V)引脚8:符号CP,时钟输入(低电平到高电平边沿触发)引脚9:符号/M/R,中央复位输入(低电平有效)引脚10-13:符号Q4-Q7,输出引脚14:符号VCC,正电源3.2 显示模块本系统显示模块由反向器、数码管、发光二极管组成,各部分的介绍及功能如下。3.2.1 反向器74LS047404为六组反向器,共有7404、74H04、74S04、74LS04四种线路结构形式。要使行人能看见信号灯的情况,必须把P1口输出的信号进行放大,这里我们用74LS04反向器,当极性为高电平时晶闸管导通,该支路指示灯亮;当极性为低电平时关断,该支路指示灯灭。74LS04(6反向器)主要对信号起了反向作用。反向器74LS04逻辑图如图3.5所示。14:VCC98101211131234567:GND74LS04图3.5 74LS04逻辑图3.2.2 数码管数码管也称LED数码管,晶美、光电、不同行业人士对数码管的称呼不一样,其实都是同样的产品。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。一位数码管引脚图如图3.6所示。comdp g ecbfaddpcdebafgcom图3.6 一位数码管引脚图本系统采用4个移位寄存器74LS164对4个一位共阴数码管进行静态驱动,数码管与移位寄存器一一对应,一位数码管两个为一组,分别代表东西路口和南北路口的倒计时时间。控制信号通过单片机的端口P3.1口进行信号的传输。显示模块中的数码管负责的是显示红绿灯持续显示的时间。当绿灯或者红灯持续显示时,数码管显示该状态的持续时间,在黄灯闪烁显示时,起到倒计时秒数的作用。数码管数字0-9与16进制的转换驱动代码如表3.1所示。表3.1 数码管驱动代码表显示数值 a b c d e f g dop 驱动代码(16进制)0 1 1 1 1 1 1 0 01 0 1 1 0 0 0 0 02 1 1 0 1 1 0 1 03 1 1 1 1 0 0 1 04 0 1 1 0 0 1 1 05 1 0 1 1 0 1 1 06 1 0 1 1 1 1 1 07 1 1 1 0 0 0 0 08 1 1 1 1 1 1 1 09 1 1 1 1 0 1 1 00FCH60H0DAH0F2H66H0B6H0BEH0E0H0FEH0F6H3.2.3 发光二极管发光二极管是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。本系统采用红绿黄三种颜色发光二极管,每个路口个三个,模拟现实生活中的交通灯。控制信号通过P2.1-P2.6口进行传输,每个发光二极管由一个反向器驱动,反向器能够放大信号,并且当高电平“1”输入到反向器时,反向器输出“0”,由于反向器输出端与发光二极管负极相连且发光二极管正极连接+5V电源,此时反向器驱动发光二极管。3.3 电源模块本系统电源模块设计较为简单,采用的是电脑USB接口的+5V稳压电源。实物焊接的时候在电路板上选择两条导通的连接线,把所有器件的VCC端和GND端分别接到这两条连接线上。然后,把从USB线上引出的两股导线一红一黑分别接到这两条连接线上,红色接VCC那条线,黑色接GND那条线,这样就可以实现用电脑USB接口电源对整个系统进行供电。4 软件设计及仿真软件设计及仿真部分主要包含程序流程图的确定、编写相关程序以及使用Keil和Proteus软件进行仿真,仿真结束后还要进行实物焊接和调试。4.1 交通灯的设计程序流程图开始设置定时,显示初始化否否是所有状态都已处理完?LED显示时间显示处理下一状态时间到?LED显示时间显示处理初始状态是图4.1 交通灯的设计程序流程图4.2 寄存器及变量的设定程序SECOND1 EQU 30H ;东西路口计时寄存器SECOND2 EQU 31H ;南北路口计时寄存器DBUF EQU 40H ;显示码缓冲1TEMP EQU 44H ;显示码缓冲2LED_G1 BIT P2.1 ;东西路口绿灯LED_Y1 BIT P2.2 ;东西路口黄灯LED_R1 BIT P2.3 ;东西路口红灯LED_G2 BIT P2.4 ;南北路口绿灯LED_Y2 BIT P2.5 ;南北路口黄灯LED_R2 BIT P2.6 ;南北路口红灯4.3 初始化程序ORG 0000HLJMP STARTORG 0100HSTART:MOV TMOD,#01H ;置T0工作方式1MOV TH0,#3CH ;置T0定时初值50msMOV TL0,#0B0HCLR TF0SETB TR0 ;启动T0CLR AMOV P1,A ;关闭不相关LED4.4 各状态相关程序4.4.1 S1状态程序LOOP:MOV R2,#20 ;置1s计数初值,50ms*20=1sMOV R3,#20 ;红灯亮20sMOV SECOND1,#25 ;东西路口计时显示初值2