1基于单片机的交通灯控制系统的设计专业XXXXXX(导师:XXX)摘要:随着我国交通车辆的快速发展,交通事故也急剧增加。为了改善交通秩序减少交通事故,交通信号灯起着越来越重要的作用。交通灯安装在各个路口上,而控制交通灯的工作可以由单片机来实现。本文所设计的基于单片机控制的交通灯控制系统主要由STC89C52单片机、LED倒计时显示、按键电路等组成,具有通行时间手动设置、可倒计时显示、急车强行通过、夜间模式等处理功能。本文重点介绍了交通灯控制系统的方案选择、软硬件设计、电路仿真、实物制作与装调等。实践证明该系统能够简单、经济、有效地引导交通,提高交通路口的通行能力。关键词:交通灯单片机C语言控制系统引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!21设计要求及方案选择1.1设计要求(1)基于单片机的交通灯控制系统,可实现东西、南北两个方向的红、黄、绿灯按设定的时间亮灭,用以指引交通通行。控制系统分为自动模式、紧急情况模式(特种车辆119、120、110等自动放行,双向红灯常亮)、夜间模式(双向黄灯闪烁)等三种运行模式。(2)四方向各有红绿黄三颗灯,四个两位一体数码管显示东、西、南、北方向时间。(3)设置一个起停开关和工作方式选择按钮。在停机状态下,按压一次工作方式选择按钮,按“自动模式→紧急情况模式→夜间模式→自动模式”循环。(4)在自动模式下,初始时东西、南北方向都亮红灯。然后东西向路口绿灯亮40s后转黄灯亮5s,再转红灯亮40s。相应地南北向红绿灯工作顺序为红灯亮40s后转黄灯亮5s,再转绿灯亮40s,以此进行循环。(5)如果发生紧急事件,则按下工作方式按钮并转换成紧急情况模式,此时东西、南北向都亮红灯,延时10s,随后恢复自动工作模式。(6)在夜间工作模式,双向黄灯均以1Hz频率闪烁,直至工作方式改变为止。(7)时钟采用倒计时方式显示,即各灯亮时,时钟为点亮的最大时间,以后每1s显示数据减1,直到减为0以后指示灯再进行变换。1.2设计要点根据控制系统的工作原理和执行装置,可以将系统设计分为硬件和软件两大部分。硬件设计部分:包括编写电路原理图、合理选择元器件、焊接各个元器件,然后对硬件性能进行调试、测试,以达到设计要求。软件设计部分:选择合适的编程语言和软件应用程序,进行编程设计等;最后是通过软件对程序进行调试、测试,以及仿真,以达到性能的最优化。1.3方案论证与选择方案一:由普通的数字电路集成芯片组成硬件设计思路简单,避免了编程的麻烦,但使用元器件较多,电路比较复杂,焊接调试容易出错,而且不利于智能控制,调时电路复杂。方案二:可编程逻辑控制器(PLC)应用广泛,它能够非常方便地集成到工业控制系统中。其速度快,体积小,可靠性3和精度都较好,在设计中可采用PLC对硬件进行控制,但是用PLC实现价格相对昂贵,因而成本过高。方案三:单片机控制采用单片机控制,可提高电路的可靠性与稳定性,硬件电路比较简单,主要用软件来控制,控制方式灵活多样,能满足不同情况的控制,通过程序可利用中断等方式来方便的实现调时。综合以上三种方案的特点,结合我自身的知识结构,我采用方案三,选择使用52系列单片机来完成。2系统硬件设计2.1系统框图考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,如图2-1所示采用52系列的单片机为核心来实现交通灯的控制。系统分为三大部分:主控模块、按键扫描模块和显示模块。图2-1系统框图2.2主控模块主控模块在整个系统中起着至关重要的作用,它就好比一个人的大脑,统筹着身体的各个部位。主控模块需要检测其他子模块的各种参数和驱动数码管显示的相关参数,同时主控模块还需要分析其他子模块采集的各类数据。而本次主控电路设计,我们选择了52系列单片机中的STC89C52作为主控芯片。2.2.189C52单片机概述STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器。电源电路时钟电路复位电路单片机52系类显示电路按键扫描电路4使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在线可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。这一模块以单片机为中心把程序代码烧进去然后外围接上其他子模块。图2-2STC89C52单片机引脚图STC89C52引脚排列如图2-2所示。下面对STC89C52引脚功能进行详细介绍。(1)电源引脚Vcc和VssVcc(40脚):电源端为+5V;Vss(20脚):接地端。5(2)时钟电路引脚XTAL1和XTAL2XTAL2(18脚):接外部晶体和微调电容的一端。在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时针电路时,该引脚输入外时钟脉冲。要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。XTAL1(19脚):接外部晶体和微调电容的另一端。在片内,它是振荡电路反向放大器的输入端。在采用外部时钟时,该引脚必须接地。(3)控制信号脚RSTALEPSEN和EA。RST(9脚):RST是复位信号输入端,高电平有效。在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。ALE/PROG(30引脚):地址锁存允许信号端。当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。如果你想看一下STC89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则STC89C52基本上是好的。ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接ERROM的OE端。PSEN端有效,即允许读出ERROM/ROM中的指令码。CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。要检查一个STC89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。如有,说明基本上工作正常。EA/VPP(31脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。如果使用有片内ROM的AT89C52,外扩ERROM6也是可以的,但也要使EA接地。(4)I/O(输入/输出端口,P0,P1,P2,P3)P0口:P0口是一个漏极开路的8位准双向I/O端口。P1口:8位准双向I/O端口。P2口:即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。P3口:双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。P3口定义第二功能,见表2-1。表2-1P3口的第二功能表引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部中断)P3.5T1(定时器1外部中断)P3.6WR(外部存储器写选通)P3.7RD(外部存储器读写通)2.2.2时钟电路设计单片机运行需要时钟支持—就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。时钟电路是微型计算机的心脏,它控制着计算机的工作节奏。时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。如图2-3所示,本电路使用单片机内部振荡器,12MHz的晶体谐振器直接接在单片机的时钟端口X1和X2,电路中C1、C3为振荡器的匹配电容,整个电路用于产生整个单片机运行的脉冲时序。7图2-3时钟电路2.2.3复位电路设计复位电路作用就是复位,让系统恢复到初始状态,防止程序进入死循环或防干扰,重启后才芯片才能又正常工作。简单的上电电阻式自动复位电路,比较简单的上电自动复位且带手动复位的阻容复位电路,还有看门狗复位电路,还有专业芯片级的复位电路。本系统的容阻上电复位,就是利用RC电路的充电过程来给单片机复位,如图2-4所示。RC电路的时间常数计算公式:T=RC即:T=RC=10u*10k=100ms。当需要复位时,也可以按下复位按键,进行复位。图2-4复位电路2.3按键扫描模块在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。它们各有自己的特点,其中独立键盘硬件电路简单,程序设计上也不复杂,但是需要占用比较多的I/O口线,一般在对硬件电路要求不高的简单电路中,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的键盘;矩阵键盘与独立键盘有很大区别,矩阵键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个交叉点上。这种形式的键盘结构,能够有效的提高单片机系统中I/O的利用率(行线接P1.0……P1.3,列线接P1.4……P1.7),行列适用于按键输入多的情况。8如图2-5所示,P1端口能控制八个按键/开关。如图2-6所示,在我的设计中P1端口不但控制了S1起停开关,还控制了功能切换按键、南北方向通行时间增加、减少键和东西方向通行时间增加、减少键,共一个按键五个开关,所以相对比