[工学]单片机的交通灯设计

上传人:仙*** 文档编号:33891338 上传时间:2021-10-19 格式:DOC 页数:44 大小:453.50KB
返回 下载 相关 举报
[工学]单片机的交通灯设计_第1页
第1页 / 共44页
[工学]单片机的交通灯设计_第2页
第2页 / 共44页
[工学]单片机的交通灯设计_第3页
第3页 / 共44页
点击查看更多>>
资源描述
1 引言1.1研究背景随着我国社会、经济的高速发展和城市话、自动化进程的加快,我国机动车数量增多及城市道路交通日渐拥挤,交通拥塞的加剧不仅造成巨额的经济损失,而且将会导致交通事故的增加和环境污染的加剧1。这已成为一个国际性的问题,无论是发达国家还是发展中国家,都毫无例外地受着不断恶化的交通困扰。城市交叉口是城市道路网的咽喉要道,其通行能力制约着城市道路的畅通与否2。提高交叉口的通行能力,不但能提高车辆通过交叉口的速度,减少延误并节约人们出行时间,同时能避免该交叉口发生堵塞而影响交叉口临近路段及更远路段的顺利通行,减轻尾气污染。因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必须要性2。通常情况下,交通信号灯控制主要有两个缺陷:1、车道放行车辆时,时间设定相同且固定,十字路口经常出现主车道车辆多,放行时间短,车流无法在再规定的时间内通过,而副车道车辆少,放行时间明显过长;2、未考虑急车强通(譬如,消防车执行紧急任务时,两车道都应等待消防车通过)。由于交通等信号灯控制系统缺乏有效的应急措施,导致十字路口交通受阻,造成不必要的经济损失5。1.2发展状况今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段,但这一技术在19世纪就已出现了4。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消2。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故3。黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥信号家族,遍及全世界陆、海、孔教通领域了4。中国最早的马路红绿灯,是于1928年出现在上海的英租界5。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口6。用这三色来作交通讯号和人的视觉机能结构和心理反应有关。我们的视网膜含有杆状和三种锥状感光细胞。杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。由于这种视觉结构,人最容易分辨红色与绿色。虽然黄色与蓝色也容易分辨,但因为眼球,对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。交通灯用什么颜色也是有大学问。颜色也有活动 (activity)的含意,要表达热或剧烈的话,最强是红色,其次是黄色。绿色则有较冷及平静的含意。因此,人们常以红色代表危险,黄色代表警觉,绿色代表安全。 而且,由于红光的穿透力最强,其他颜色的光很容易被散射,在雾天里就不容易看见,而红光最不容易被散射,即使空气能见度比较低,也容易被看见,不会发生事故。所以我们用红色表示禁止7。随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。现在交通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用7。1.3.设计实现的意义设计通过单片机进行交通信号灯的控制。采用单片机进行控制完全发挥了单片机体积小、重量轻、功耗低、功能强、造价低的优点,而且还可以简化电路结构、降低成本、减小体积。本设计是软硬件设计,经过调整后系统除实现了基本交通灯功能外,还具有了紧急情况处理的控制、时间的倒计时显示功能。实现后的系统可以应用于中小城市交通信号控制。2 交通灯的设计思路2.1 设计任务该系统能够实现:东西向与南北向交通灯定时60秒交换红绿灯1次;每次交换时要求用黄灯闪烁来提醒行人,闪烁4次,共3秒;紧急车辆通过时,四边路口均显红灯,让其它车辆暂停行驶;紧急车辆通过后,自动恢复原来灯色标志。2.2 总体结构依据给定的设计要求,通过编程实现:(1)硬件控制:向单片机发送数据与控制信号;(2)软件控制:在显示器上显示交通管制中显示的时间;使三色灯在同的交通状况下呈现不同的状态;(3)开关控制:提供启动、停止、应急等控制功能。2.3 交通灯的作用及工作原理作用:一般情况下,红绿灯设在十字路口,或在多干道的叉口上,目的是为了调整叉口的交通秩序使各干道来往车辆能够有条不紊地行驶,否则将造成意想不到的严重后果。当然在叉口设置合理的红绿灯后,也可大大减少交通管理部门的人力、物力。叉口交通信号等的基本作用:红灯亮表示车辆、行人禁止通行,绿灯亮表示车辆、行人可以通行,绿灯转换成红灯前几秒,可用绿灯闪烁和黄灯闪烁来暗示驾驶员或行人即将禁止通行。该系统的屏幕时间显示用倒计时方式表示红绿灯的切换时间,时间显示器的作用是协助红绿灯工作,跟随红、绿灯反复地进行切换。目的是为了使驾驶员和行人能够看见红绿等亮的时间还剩几秒以便停车线以内的驾驶员和行人能够更清楚地知道此时该继续通行或减速,才不会使驾驶员盲目地加速或减速停车而阻碍另一干道车辆或行人的通行,从而可以提高叉口车辆及行人的流通率,当然也可以减少事故的发生,为交通安全提供保障。当急救车通行时,交通警察通过开关键使得东西南北路口均显示红灯。工作原理:设计一个微型十字路口交通灯软件控制系统,所需控制的信号灯为红、黄、绿LED灯;当东西南北的灯显示黄灯时,只允许人通行,通行时间为3s,同时LED数码显示器显示人通行的倒计时时间;当东西南北的灯显示绿灯时,只允许车通行,通行时间为54s,同时LED数码显示器显示车通行的倒计时时间;当有急救车到来时,交通警察人工干预,通过拨动中断开关S2置1使东西南北道口全部为红灯闪烁,禁止通行,只有急救车通行,这时LED数码显示器显示“00”。急救车通过后交通警察再拨动中断开关DSW1置4,解除禁令,东西南北恢复原来的通行状态。2.4 控制要求(1)东西、南北道交替通行,每次放行54秒,红绿灯60s交替一次;(2)绿灯亮时表示可以通行,红灯亮时表示禁止通行;(3)每次绿灯变红灯时,绿灯先闪烁3s黄灯再闪3s秒(此时另一干道上的红灯不变);(4)十字路口要求有数字显示,作为时间提示,以便人们更直观地把握时间,具体要求主、支干道通行时间及黄灯亮的时间均以秒为单位做减数器;(5)当有急救车到达时,路口的信号灯全部变红,让急救车通过。急救车通过后,交通灯恢复先前状态。2.5 设计方案2.5.1系统框图由于AT89S51单片机自单带有2计数器,5个中断源,能满足系统的设计要求。用单片机设计不但设计简单,而且成本低,用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯,系统构图如(图2.1)所示:单片机主控电路数码管显示电路LED显示电路键盘控制开关控制图2.1 系统构图2.5.2 系统所需元器件电路板一个,AT89C51芯片一片,七段共阴数码管八个,发光二极管12个(4个绿色的,4个红色的,4个黄色的用于交通控制),1K欧电阻一个,74ls05芯片一个。2.5.3 交通管理的方案论证东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行,绿灯闪烁提醒行人快速通行,黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。表2.1 指示灯闪烁时间54S3S3S54S3S3S东西道绿灯亮绿灯闪黄灯闪红灯亮红灯亮红灯闪南北道红灯亮红灯亮红灯亮绿灯亮绿灯闪黄灯闪表2.1说明: (1)当南北方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。红绿灯交换一次时间为60秒。(2)绿灯闪烁3秒,警示车辆和行人即将进入黄色闪烁时间。(3)黄灯闪烁4次共3秒,警示车辆和行人红、绿灯的状态即将切换。 (4)当南北方向为绿灯,此道车辆通行;东西方向为红灯,东西道车辆禁止通过,行人通行。时间为红绿灯交换一次60秒。 (5)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。2.5.4 控制码用12只发光二极管模拟交通信号灯,以单片机的P0口控制东西南北灯的走向;口线输出高电平则“信号灯”亮,口线输出低电平则“信号灯”熄,各口线控制功能及相应的控制码如表2.2所示: 表2.2 控制码表P0口P0.0P0.1P0.2P0.5P0.6P0.7灯东西红灯东西绿 灯东西 黄 灯南北 红 灯南北 绿 灯南 北 黄 灯状态1010100状态2000100状态3001100状态4100010状态5100000状态6100001状态7100100表2.2说明(1)状态1东西方向绿灯亮,南北方向红灯亮。(2)状态2东西方向绿灯闪,南北方向红灯亮。(3)状态3东西方向黄灯闪,南北方向红灯亮。(4)状态4东西方向红灯亮,南北方向绿灯亮。(5)状态5东西方向红灯亮,南北方向绿灯闪。(6)状态6东西方向红灯亮,南北方向黄灯闪。(7)状态7东西南北两道全亮红灯。2.6 MCS-51芯片简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本13。外形及引脚排列如图2.2所示:图2.2 AT89C51管脚图 VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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脚两个机器周期的高电平时间。RET的复位电路: 简单地说,单片机的复位就和计算机的重起一样的概念。任何单片机在工作之前都要有个复位的过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。复位引脚RST/Vpd通过片内一个施密特触发器(抑制噪声作用)与片内复位电路相连,施密特触发器的输出,在每个机器周期的S5P2有复位电路采样依次。当振荡电路工作,并且在RST引脚加上一个至少保持2个机器周期的高电平时,就能使8051完成一次复位。按上面所说,时间不少于5ms。为了达到这个要求,需要在外部设计复位电路13。复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。复位电路如图2.3所示:图2.3 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应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。内振荡电路如图2.4所示:图2.4 AT89C51的片内振荡电路晶振的选择:晶振一般分为晶体振荡器和晶体谐振器。在单片机系统中,晶体振荡器将外围的电容集成到振荡器的内部,无需再设计晶振电路,只需要将电源加载到晶振上,晶振就可以起振,并通过两个引脚输出到单片机的晶振引脚上。一般的,由于晶体振荡器的体积较大,价格较贵,在实际使用中,还可以选择晶体谐振器,也就是常说的立式晶振。该晶振需要外部的晶振电路才可以起振,但是由于该电路非常简单,并且使用灵活,在单片机系统中也有广泛地应用15。2.6.1 MCS-51主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路2.6.2 MCS-51中断源引起终端的原因,或者能发出中断申请的来源,称为中断源。中断可以认为设定,也可以是为响应突发性随机事件而设置,通常有I/O设备,实时控制系统中的随机参数和信息故障源等,8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。其中5个中断源的程序入口地址如表2.3所示:表2.3 中断源程序入口地址中断源入口地址外中断00003H定时/计数器0000BH外中断10013H定时/计数器1001BH串行口中断0023H2.6.3 中断处理流程CPU响应中断请求后,就立即转入执行中断服务程序。它们的一般处理流程如图2.4所述: 图2.4 中断一般处理流程但对于不同的中断源、不同的中断要求可能有不同的中断处理方法,具体如图2.5所述: 图2.5 具体的中断处理流程 (1)现场保护和现场恢复:中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份即保护现场。计算机的中断处理方法也如此,中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。 (2)中断打开和中断关闭:在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。 (3)中断服务程序:中断服务程序从中断入口地址执行,到返回指令RETI为止,一般包括两部分内容:一是保护现场;二是完成中断源请求的任务。既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。 (4)中断返回: 中断返回通常是指中断服务完成后,计算机返回原来断开的位置(即断点),继续执行原来的程序,中断返回由中断返回指令RETI来实现,这条指令的功能是指端点地址从堆栈中弹出,送回到程序计时器PC,此外,还通知中断系统已完成中断处理,并同时消除优先级状态触发器16。2.6.4 交通灯系统中断处理流程 (1)现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。 (3)中断服务程序:如有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果有特殊车辆需要经过时,南北东西均亮红灯,让特殊车辆通过。 (4)中断返回:执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。2.7 数码管显示程序功能数码管显示程序主要完成以下的功能。定义共阴极字型编码表即确定发光数码管的字型对应在单片机中的变量和参数;Unsignedcharcodetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f。显示得到字型和字位口的地址后,向不同的字位送数据,进行数据的显示。显示的内容包括个位和十位两位,用取模和取余来确定17。结果分别用两个4位的数码管显示(即东南西北四个路口各两个,这里为了硬件电路设计方便、美观所以就采用了两个四位的数码管)。3 系统硬件设计3.1 系统概要该系统采用51单片机作为主控制芯片, P0口作为东西向和南北向的LED红灯、绿灯、黄灯的控制,P1、P2口作为数码管显示的控制,外部中断1作为紧急控制。驱动的15151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515153.2 控制要求3.2.1 信号灯控制东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。交通灯系统开始工作,按下停止按钮系统复位且重新工作。系统工作时,交通灯的亮灭规律为:初始信号灯为东西向绿灯亮(通行)南北向红灯亮(禁止通行),并计为S1状态,时间60秒;60秒后,红绿灯交换前的信号灯两处黄灯进入闪烁(注意),则有状态S2黄灯亮及状态S3的黄灯灭,等黄灯闪烁够四次后进入状态S4,即东西向红灯亮南北向绿灯亮,时间60秒。而后继续重复上述的过程。所以我用单片机的P0口的六位来控制LED灯,具体为P0.0口至P0.2口上的3个LED灯为一组,分别代表东西方向的红绿黄灯,而P0.5口至P0.7口上的3个LED灯则为一组,分别代表南北方向的红绿黄灯。3.2.2 数码管控制使用了共阳极的数码管,公共端接高电平。考虑到系统简化后I/O口完全够用,所以使两位数码管单独接P1口和P2口,并使用静态显示方案,使得数码管更稳定,且亮度更高。3.2.3 紧急优先控制功能该功能主要是便利交通管理紧急处理。因此,在交通信号灯正常控制的基础上,增加了允许紧急优先处理功能,诸如消防、急救、警车等情况出现时,东西、南北方向的红灯均变亮,以便紧急处理。在紧急情况处理完后,交通信号灯又能够恢复到先前的工作状态。这里把外部中断1设为中断,通过紧急按钮控制,这样使系统可靠地接收紧急信号,发出指令。3.3 硬件设计原理图图3.1 交通灯的硬件设计原理图3.4 系统的工作原理(1)由AT89C51单片机PO口向LED输送数据,并由P1、P2口控制数码管显示时间,P1口控制数码管十位数,P2口控制数码管个位数。(2)反相器74ls05的作用是保证输入信号能够通过二极管。(3)由12个发光二极管构成南北红、黄、绿灯,东西红、黄、绿灯的基本模型。(4)有8个数码管构成南北、东西共四组时间显示器,用来显示车辆通行时间。(5)当有紧急车辆通行时人为的按下开关可以使南北、东西个路口的数码管显示红灯,并且数码管显示的数字为00。(6)系统的循环模式为:开始东西道绿灯亮数码管倒计时从54s开始倒时,南北道红灯亮灯数码管倒计时时间从54s开始倒时。过程1东西道绿灯闪烁3s,南北道红灯亮3s。过程2东西道黄灯闪烁3s,南北道红灯亮。过程3-南北道绿灯亮数码管倒计时从54s开始倒时,东西道红灯亮灯数码管倒计时时间从54s开始倒时。过程4南北道绿灯闪烁3s,东西道红灯亮3s。过程5南北道黄灯闪烁3s,东西道红灯亮。系统始终按上面解释的过程循环。4 系统软件程序流程图4.1 主程序设计及功能主程序需满足的功能是:当东西南北的灯显示黄灯时,通行时间为3s,同时LED显示器显示人通行的倒计时间;当东西南北的灯显示绿灯时,只允许车通行,通行时间为54s,同时LED显示器显示车通行的倒计时间;当南北方向绿灯闪时,提示车辆和行人快速通行。当有急救车到来时,交通警察人工干预,通过拨动中断开关DSW1置1使东西南北道口全部为红灯闪烁,禁止通行,只有急救车通行,这时LED数码显示器显示“00”报警。急救车通过后交通警察再拨动中断开关DSW1置4,解除禁令,东西南北恢复原来的通行状态。4.2 程序流程图根据交通灯的设计要求与原理设计的交通灯的软件设计流程图如图4.1和图4. 2所示:中断入口状态7东西南北全红数码管显示数字为00拨动开关置OFF拨动开关置ON恢复到原来的状态图4.1 急救车通过时流程图N开始设定时间,显示初始化是否到1s?秒值减1,并显示时间,LED秒值是否为0显示下一个一个状态YNY图4.2 模拟交通灯程序流程图4.3 C语言程序设计c语言程序设计是单片机开发、应用的重要趋势之一。目前,支持硬断点的单片机仿真器已能很好地进行c语言程序调试,为单片机编程使用c语言提供了便利条件。编译型程序设计语言c的优点已为大家熟知:既有多种高级语言的特点,又具备汇编语言的功能:有丰富的库函数、运算速度快、编译效率高、可移植性好,而且可以实现对系统硬件的直接控制;具有完善的模块程序结构,支持广泛采用的由顶向下结构化程序设汁,为软件开发中采用模块化设计方法提供了有效支持;可以大大缩短目标系统软件的开发周期,软件的可读件明显增加,便于改进、扩充,研制规模更大、性能更完备的系统。具体的C语言程序见附录B。4.4 C语言与MCS514.4.1 MCS51编程语言支持MCS51单片机编程的语言。除了前面学过的汇编语言外,还有三种:BASIC、PL/M和C。BASIC语言简单易学,适用于对编程效率或运行速度要求不高的场合,8052单片机片内就固化了BASIC语言解释器。但是BASIC采用浮点运算,导致程序复杂且执行时间长,即使BASIC编译器也未能解决这个问题。PL/M可以说是“高级汇编语言”,详细控制着代码的生成。但对MCS-51系列,PL/M不支持复杂的算术运算和浮点变量,也没有丰富的库函数。用C语言进行单片机程序设计,编译器能自动完成变量的存储单元的分配,编程者可以专过于应用软件的设计。大大加快开发速度,可以对单片机常用的接口芯片编制通用的驱动函数,对常用的功能模块、算法等编制相应的函数,还可以很容易地进行信号处理算法和程序的移植,有利于产品中单片机的重新选型和软件设计水平的提高、与国外嵌入式系统的程序设计接轨。与汇编语言相比,C语言程序在开发速度、软件质量、结构严谨、程序可靠性等方面有明显优势。而代码效率相对较低的缺点,对于片内ROM空间16K/32K字节以上的单片机而言,已经不很重要。目前,单片机上C语言程序未经人工优化的代码长度,已缩短到用人工方便地对时间要求比较严格的汇编语言模块和关键代码进行优化。 5 基于PROTEUS的电路设计和仿真5.1 PROTEUS软件简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。5.2 PROTEUS软件功能Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对PCB设计系统的比较文章中评为最好产品“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计。PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED甚至LCD显示CPU模型。(1)支持许多通用的微控制器,如PIC,AVR,HC11以及8051。(2)交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘。(3)强大的调试工具,包括寄存器和存储器,断点和单步模式。(4)IAR C-SPY 和Keil uVision2等开发工具的源层调试。(5)应用特殊模型的DLL界面-提供有关元件库的全部文件。 Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。所以说PROTUES是一种十分优秀的软件。5.3 交通灯仿真图图3.1为交通信号灯正常状态的仿真图,东西方向绿灯亮,数码管显示为倒计时的时间。图3.1 交通灯东西方向绿灯亮图图3.2为交通信号灯显示为东西方向黄灯亮,南北方向红灯亮,数码管从3s倒计时。图3.2交通灯东西方向黄灯亮图图3.3为交通信号灯显示为南北方向绿灯亮,东西方向红灯亮,数码管显示为倒计时的时间。图3.3 交通灯南北方向绿灯亮图图3.4为交通信号灯显示为南北方向黄灯亮,东西方向红灯亮,数码管显示为倒计时的时间。图3.4 交通灯南北方向黄灯亮图图3.5为交通信号灯显示为东西南北方向均红灯灯亮,数码管显示为00。图3.5 紧急车辆通过时的状态6 调试结果及说明交通灯演示电路的调试:交通灯模块由12个发光二极管组成,接线繁琐,极易出错。检查二极管无故障、导线无断线、连线接头无互相搭联后可先写一个软件调试程序,依次检查指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错或是芯片的问题,根据灯的亮灭情况依次查找直到电路正常工作为止。最为重要的是在接线的时候先试导线是否通:通过输出口和等相接,灯亮则是导通。6.1 硬件调试(1) 倒计时电路调试:倒计时电路主要有数码管组成。当交通灯程序写好后,倒计时的显示可与最小系统板上两组数码管显示比较(系统板上的这两组数码管用以检查倒计时工作情况)。若倒计时电路中有数码管不亮,检查数码管是否良好、数码管连线是否良好。依次检查,直至倒计时电路正常工作。(2) 其它电路的调试主要看接口以及连线是否正确,依次检查。6.2 软件调试 本系统的软件全部采用C语言编写,除语法与逻辑差错外,最好的办法是采取自下而上的方法,单独调好每一个模块,单步运行,观察该地方的显示情况(明确调用显示程序)直到最后完成一个完整的系统调试。6.2.1 KEIL软件单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍15。6.2.2 KEIL基本知识Keil C51开发系统基本知识Keil C51开发系统基本知识 1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 使用独立的Keil仿真器时,注意事项 (1)仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 (2)仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 (3)仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。7 结论本系统就是利用了AT89C51芯片的I/O引脚。系统采用美国ATMEL公司生产的单片机AT89C51,以及其它芯片(如:74LS05六位反向器)来设计交通灯控制器,实现了东西向与南北向交通灯定时60秒交换红绿灯1次;每次交换时要求用黄灯闪烁来提醒行人,闪烁4次,共3秒;紧急车辆通过时,四边路口均显红灯,让其它车辆暂停行驶;紧急车辆通过后,自动恢复原来灯色标志,并通过AT89C51来控制74LS05芯片的输出口设置红、绿灯燃亮的功能和在七段数码管上的时间显示;系统设计简便、实用性强、操作简单、程序设计简便。 系统不足:该电路不能自动检测车流量来自动改变放行时间,同时不能实现远距离控制,此外,还没有充分考虑的把现代管理、人工智能运用到交通的控制中,来计算交通控制点之间的距离,来更合理的安排红、绿灯的持续时间,使城市的交通管理更加人性化。使人们远离目前的交通拥塞的现象。 附录A 硬件原理图附录B C语言程序#include#define uchar unsigned char#define uint unsigned intsbit h_red=P00; sbit h_green=P01;sbit h_yellow=P02;sbit l_red=P05;sbit l_green=P06;sbit l_yellow=P07;/sbit kong1=P03;/sbit kong2=P04;sbit jinji1=P32; /代表紧急状况uchar code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/代表共阴数码管的0-9uchar count,second,i,flag; /count代表20个50ms,count1代表/uint A1,B1;void delayms(uint);void main()/*初始化各变量*/P1=0x00; /P2=0x00; /flag=1; /flag是执行case的标志jinji1=1; /jinji1是执行紧急状态的标志second=54; / 倒计时从54开始/count=30;/i=0;/C1=P0;/*以下是中断入口程序初始化*/EA=1; / CPU所有中断开(IE最高位MSB)EX0=1; / 外部中断INT0中断开IT0=0; / 外部中断INT0(低电平触发)TMOD=0x01; /0000 0001,定时器0工作在方式1TH0=0x3C; /定时多长时间 50msTL0=0xb0; /计数器0 初值TR0=1; /启动定时器0IE=10000011; /0X8A=10000011,打开定时器0,和外部中断0/*主程序,当定时溢出时候进入定时中断程序,当有外部触发紧急状态时候自动进入 外部中断程序*/while(1); /*if(jinji1=0)/如果紧急状态被激活,则保存当前的状态,并切换到紧急的状态A1=P1;B1=P2; h_red=1; / P00=1,对应的东西向红灯会亮h_green=0;h_yellow=0; l_red=1; / P05=1,对应的南北向红灯会亮 l_green=0; l_yellow=0;/flag=7;/kong1=1;/kong2=1P1=0x3F; P2=0x3F; return;else if(h_red=1&h_green=0&h_yellow=0&l_red=1&l_green=0&l_yellow=0) /判断之前是紧急状态 P1=A1; /如果之前是紧急状态,则返回处理紧急状态之前的正常状态 P2=B1; return; /else/ */*状态1*/void state1(void) /东西方向绿灯亮,南北方向红灯亮 h_red=0; h_green=1; / P01=1,对应的东西方向绿红灯会亮h_yellow=0;l_red=1; / P05=1,对应的南北方向红灯会亮l_green=0;l_yellow=0;/*状态2*/void state2(void) / 东西方向绿灯闪,南北方向红灯亮 h_red=0; h_green=1; / 东西方向绿灯闪h_yellow=0;l_red=1; / P05=1,对应的红灯会亮l_green=0;l_yellow=0;/*状态3*/void state3(void) /东西方向黄灯亮,南北方向还是红灯亮。 h_red=0; h_green=0;h_yellow=1; / P02=1,对应的黄灯会亮l_red=1; / P05=1,对应的红灯会亮l_green=0;l_yellow=0; /*状态4*/void state4(void) /,东西方向红灯亮 h_red=1; / P00=1,对应的红灯会亮h_green=0; h_yellow=0;l_red=0;l_green=1; /P06=1南北方向绿灯亮l_yellow=0;/*状态5*/void state5(void) /南北方向绿灯闪烁3s,东西红灯依然会亮 h_red=1; / P00=1,对应的红灯会亮h_green=0;h_yellow=0;l_red=0;l_green=1;l_yellow=0;/*状态6*/void state6(void) /南北方向黄灯闪烁2s,东西红灯依然会亮 h_red=1; / P00=1,对应的红灯会亮h_green=0;h_yellow=0; l_red=0; l_green=0; l_yellow=1; / P07=1,对应的黄灯会亮 /*状态7,紧急车辆通过时候的状态,红灯全亮*/void state7(void) h_red=1; / P00=1,对应的东西向红灯会亮h_green=0;h_yellow=0; l_red=1; / P05=1,对应的南北向红灯会亮 l_green=0; l_yellow=0; /*定时器0工
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!