交通灯设计.doc

上传人:文库蛋蛋多 文档编号:3934375 上传时间:2023-03-28 格式:DOC 页数:33 大小:5.90MB
返回 下载 相关 举报
交通灯设计.doc_第1页
第1页 / 共33页
交通灯设计.doc_第2页
第2页 / 共33页
交通灯设计.doc_第3页
第3页 / 共33页
交通灯设计.doc_第4页
第4页 / 共33页
交通灯设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《交通灯设计.doc》由会员分享,可在线阅读,更多相关《交通灯设计.doc(33页珍藏版)》请在三一办公上搜索。

1、摘 要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC52和可编程并行I/O接口芯片80C52为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩秒时黄灯闪烁

2、警示。本系统实用性强、操作简单、扩展功能强。关键词:交通灯;单片机;LED;数码显示目 录摘 要01 单片机控制交通灯设计的意义、背景及目的41.1 设计的背景41.2 设计的目的41.3 设计意义52 单片机控制交通系统总体设计52.1单片机交通控制系通行方案52.2 单片机交通控制系统的功能要求62.2.1 倒计时显示72.2.2 时间手动设置72.2.3 紧急处理72.3 单片机交通控制系统的基本构成及原理73 智能交通灯控制系统的硬件设计83.1 AT89C52单片机简介83.1.1 AT89C51单片机的主要特性83.1.2 主要引脚功能93.2 系统硬件总电路构成及原理103.2.

3、1 系统硬件电路构成103.2.2 系统工作原理113.3 其它硬件介绍及连接123.3.1 八段LED数码管123.3.2 发光二极管133.3.3 按键控制144 系统软件程序的设计144.1 程序主体设计流程144.2 子程序模块设计154.2.1 按键扫描程序154.2.2 状态灯显示及判断154.2.3 LED倒计时显示164.2.4 红绿灯时间调整程序165 总 结166 主要参考文献177 附 录187.1 程序187.2实物图321 单片机控制交通灯设计的意义、背景及目的1.1 设计的背景 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指

4、挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两个旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 设计的背景 1914年, 电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯

5、时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。 1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车

6、线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。1.2 设计的目的 通过课程设计培养同学们的系统设计能力,提高以下能力的训练:(1)调查研究,分析问题的能力。(2)使用设计手册,技术规范的能力(3)制定设计方案的能力。(4)计算机应用的能力。(5)使用绘图软件绘图的能力。(6)技术经济指标的分析能力。(7)掌握单片机系统中扩展简单基本I/O接口的方法。(8)掌握简单程序的设计方法。(9)掌握模拟交通灯控制的实现方法。(10)掌握外部中断的基本使用方法。(11)掌握中断处理程序的编程方法。(12)掌握键盘的接口方法。(13)了解LED的接法。1.3 设计意义交通灯是城市交通的重要指挥

7、系统,与人们的日常生活密切相关。随着经济的快速发展,城市中的车辆逐渐增多,交通拥堵和堵塞现象日趋严重,引起交通事故频发,环境污染加剧等一系列问题,因此设计一个灵活、稳定、便捷的多功能交通灯控制系统具有必要性和现实性。本次设计的意义在于通过对具体的控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。在实践设计过程中,积累设计经验,开拓思维空间,全面提高个人的综合能力2 单片机控制交通系统总体设计2.1单片机交通控制系通行方案 设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具

8、体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状1,周而复始,即如图(图2-1)所示:直至状态6然后循环至状态1,通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:图2-1交通状态东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时2秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同

9、时黄灯亮,东西方向红灯亮,倒计时2秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。2.2 单片机交通控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,车流量检测及调整,交通违规处理和紧急处理等功能。2.2.1 倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员

10、在“停止”和“通过”两者间作出合适的选择 。2.2.2 时间手动设置 除系统根据车流量自动控制调整,也可以通过键盘进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且I0口足够,可直接采用独立式。2.2.3 紧急处理交通路口出现紧急状况在所难免,如特大事件发生,救护车等急

11、行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通控制中增设禁停按键,就可达到想此目的。2.3 单片机交通控制系统的基本构成及原理单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了违规检测电路和车流量检测电路为单片机采集数据,单片机对此进行具体处理,及时调整控制指挥,为了超越视觉指挥的局限性,同时接上蜂鸣器,在听觉上加强了指挥提醒作用。如图(图2-2)所示:单片机最小系统外围接口电路LED数

12、码管显示红黄绿信号灯按键控制电路图2-2系统的总体框图据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块,LED倒计时模块模块接受输出。系统的总体框图如上所示。单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中随时调用急停按键和时间调节中断。3 智能交通灯控制系统的硬件设计3.1 AT89C52单片机简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATME

13、L公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。3.1.1 AT89C51单片机的主要特性1、兼容MCS51指令系统2、8kB可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、

14、TQFP及PLCC等几种封装形式,以适应不同产品的需求。3.1.2 主要引脚功能VCC:电源电压GND:接地P0口:P0口是一组8位双向I0口。P0口即可作地址数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。P1口:Pl 是一个带内部上拉电阻的8准位双向IO口,P1作为通用的I/O口使用。P2 口:P2 是一个带有内部上拉电阻的8 位准双向IO 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地

15、址。P3 口:P3 口是一组带有内部上拉电阻的8 位准双向I0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,表3-1具有第二功能的P3口引脚端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISR

16、T0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE/PROG():当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此

17、外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效EA()VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。EA()VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会

18、锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。3.2 系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按钮。3.2.1 系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。其具体的硬件电路总图如图3.1所示。其中P0用于送显两片LE

19、D数码管,P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P2.6与P2.7对数码管进行片选,P3.2即INT0紧急情况处理按键,P3.3即INT1接时间调整中断按键。3.2.2 系统工作原理系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K

20、3键为低电平时进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下键,中断结束返回。其二为通行时间调整中断,若K4按键有效,进入相应的中断子程序,对时间进行调整,此后再按K4键则中断结束返回。图3-1 基于单片机的交通灯控制系统电路图3.3 其它硬件介绍及连接3.3.1 八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图3.6所示。这样,一个LED数码管

21、就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。图3-2LED数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 g,f,e,d,c,b,a全亮显示为,采用共阳极连接驱动代码,代码表如下表5所示。表3-2驱动代码表显示数值g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H71111100

22、0F8H81000000080H91001000090H相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用8个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图3.7所示,其中A,B分别是P0,P1的网络标号。图3-3LED连接图3.3.2 发光二极管根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦

23、然,所以在硬件上连接图上也是对称分布的,如下图3-4所示。 图3-4信号灯的连接图3.3.3 按键控制本设计设置了有5个键:K1键P3.0,K2键P3.1,K3键P3.2,K4键P3.3,K5键P3.4,每个按键一端接地,另一端接对应的P3端口。低电平有效,当按键按下端口接地,单捕获到低电平,从而知道相应的输入信息4 系统软件程序的设计4.1 程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。整个软件程序方面主要分两大部分:主程序部分和中断处理程序。流程图如图4-1所示。开始系统初始化东西亮绿灯,南北

24、亮红灯调显示子程序(动态显示)东西,南北方向换向东西黄灯闪烁,南北亮红灯灯中断处理子程序处理返回 图4-1系统总流程图设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。智能交通灯控制系统在正常工作的情况下,每20s循环变化一次。每个循环周期在还剩5s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。在此期间若中断按键按下则转入中断服务子程序进行相关操作。4.2 子程序模块设计4.2.1 按键扫描程序首先程序不断扫描模式设置键,分别记为:S键,J键,F键对应端口的3.6,P3.2,P3.7,低电平有效,按键顺序是指定的,若直接按F键,

25、则为自动调整模式,然后进入下一程序;若先按S键,再按J键,F键则为设置时间模式,然后进入下一程序。程序的开始要判断是否有键按下,可以不断将S键值和F键值相与,与值为1则表示没有键按下,为0则表示有键按下。接下来要判断具体是那个键,若为F键,则将自动标志位置1,进入下一程序,否则为S键,则表示设置南北绿灯时间,用R0存值,按1下加1,同时还需判断此时J键是否按下,若按下,则表示南北绿灯时间设置完毕,开始设置东西绿灯时间,用R1存值,同样按1下加1 ,同时判断此时F键是否按下,若按下,则表示时间设置完毕,进入下一程序。在这个过程中,S,J键的计数是循环的,从初值20开始,加到40则循环回到204.

26、2.2 状态灯显示及判断在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。共有4钟状态:东西红灯亮,南北绿灯亮(11011101/DDH);东西红灯亮,南北黄灯亮(10111101/BDH);东西绿灯亮,南北红灯亮(11101101/EDH);东西黄灯亮,南北红灯亮(11100111/E7H)。括号中是P2端口8个引脚值P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0以及对应的十六进制码。在用于显示发光二极管时,直接由MOV指令将十六进制码送入P2口。刚才的4个状态是依次变换的,

27、这就要涉及到状态的判断和衔接了。先把P2端口的值与所有的4个状态码比较,若相同则判断成功当前状态,再把下一状态的状态码送显P2即可。4.2.3 LED倒计时显示LED计时每1秒都要刷新1次,那么计时满1秒时就要将存储时间的工作寄存器R4减1,然后送入LED显示程序中显示。下面要将时间数据R4的十位,个位分开送显P1,P0端口,首先将R4除以10,整数即十位放在A中,余数即个位放在B中,设置7段LED显示数据的数据表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。4.2.4 红绿灯时间调整程序根据红绿灯时间调整原理,一个周期下来,

28、R5,R6中分别存储着南北,东西的车流量,接下来求单位时间车流量,此时南北向时间,东西向时间分别存储在R0,R1中,则两个方向的流量比例为(R5/R0)/(R6/R1)=(R5*R1)(R6*R0),显然该比例是1左右带小数的值,然而单片机程序中只取整数,重要的数据信息就会丢失,所以本设计中首先将(R5*R1)乘以10,比例就变为10左右的值。将该比例值放在A,然后进行时间调整。由于受到多方面的限制,时间调整在此只划定3个范围。比例0到0.7为一个范围,0.8到1.5为一个范围,1.5以上为一个范围。第一范围显然表明东西向交通严重,应将时间调长;第二范围表明两向相当,可设置一样的时间,第三范围

29、表明南北向交通严重,应将该向时间调长。具体设置如下表(表4-1)表4-1 比例及调整时间南北与东西向比例00.70.81.51.5及以上调整南北向时间203040调整东西向时间403020由表可知,对应的时间调整也只有三种,分别是20,40;30,30;405 总 结通过这次课程设计,使我们深刻而且真正的体会到了专业理论课程与专业综合实际运用之间存在的不小的距离。而这个距离很有可能就是限制我们今后进一步发展或是深造的瓶颈。那么,为了将来更加长远和宽广的发展,抑或进一步向着更高学历的深造,就必须突破这一瓶颈。这次综合实践的确对于帮助我们突破这一瓶颈大有裨益。同时,身为涉及自动化学科的学生,我必须

30、了解有利于实现自动化的一些得力工具。单片机体积小、价格低、应用方便、稳定可靠,因此单片机的发展和普及带来了自动控制领域的一场重大革命和技术进步。在这次实践中我发现,仅从体积小方面来说,由于单片机的体积要比一般计算机体积小很多,因此单片机几乎可以在任何设施装置上做成非常小的、功能比较完善的单片机嵌入式系统,以实现各种方式的功能,如显示、计算、检测和控制,在这一点上,一般计算机根本做不到。这样,单片机就更加贴近于一般的工业应用,就跟能帮助我们在未来的就业市场占据一席之地。总之,这次综合实践就是专业理论联系专业实践的历练,就是提升我们对专业理论向专业实践转换能力的好机会,就是我们电气工程及其自动化专

31、业生涯的必由之路。最重要的是,为我们的专业生涯奠定坚实的基础。6 主要参考文献l边海龙,孙永奎. 单片机开发与典型工程项目实例详解J.电子工业出版社,2008,(10):143-160.2王为青,邱文勋. 51单片机开发案例精选J.人民邮电出版社,2001,(5):45-47.3张鑫,华臻,陈书谦. 单片机原理及应用J.电子工业出版社,2008(5).4张洪润,张亚凡.单片机原理及应用J. 清华大学出版社,2005,(4).5黄智伟.凌阳单片机课程设计指导J. 北京航空航天大学出版社,2007,(6)6蒋辉平,周国雄. 基于Proteus的单片机系统设计与仿真实例M.机械工业出版社,2009.

32、7 附 录7.1 程序#include#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/*digit display port*sbit led_w1=P11;sbit led_w2=P10;sbit led_w3=P13;sbit led_w4=P12;/*define led port *sbit R1=P24; /east and west red ledsbit Y1=P23; /east

33、 and west yellow ledsbit G1=P22; /east and west green ledsbit R2=P25; /south and north red ledsbit Y2=P26; /south and north yellow ledsbit G2=P27; /south and north green led/*define key*sbit k0=P30; /emergencysbit k1=P31; /east and west passsbit k2=P32; /south and north passsbit k3=P33; /start and s

34、ubtract 1sbit k4=P34; /pause and add 1sbit k5=P35; /set time/*define variable*bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;/*define key*void delay(uint i)uint x,y;for(x=i;x0;x-)for(y=110;y0;y-); void timer0_init()TMOD=0x11;TH0=(65536

35、-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;void led_display(uchar dx,nb)uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx99)led_w1=1;led_w2=1;elseled_w1=0;P0=tabledx1;delay(5);led_w1=1;if(dx0) led_w2=1;elseled_w2=0;P0=tabledx2;del

36、ay(5);led_w2=1;if(nb99)led_w3=1;led_w4=1;elseled_w3=0;P0=tablenb1;delay(5);led_w3=3;if(nb0) led_w4=1;elseled_w4=0;P0=tablenb2;delay(5);led_w4=4;/*light work*void circle_led()if(!flag)if(pass_time5)led_display(pass_time-5,pass_time);R1=1;Y1=1;G1=0;/east and west passR2=0;Y2=1;G2=1;/south and north st

37、opif(pass_time0)if(cnt=10) led_display(pass_time,pass_time);else led_display(100,pass_time);R1=1;G1=1; /east and west yellow led flashif(cnt=10)Y1=0;else Y1=1;R2=0;Y2=1;G2=1;if(pass_time=0)pass_time=nb_time;flag=1;elseif(pass_time5)led_display(pass_time,pass_time-5);R1=0;Y1=1;G1=1;/east and west sto

38、pR2=1;Y2=1;G2=0;/south and north passif(pass_time0)if(cnt=10) led_display(pass_time,pass_time);else led_display(pass_time,100);R1=0;Y1=1;G1=1;R2=1;G2=1; /south and north yellow led flashif(cnt=10)Y2=0;else Y2=1;if(pass_time=0)pass_time=dx_time;flag=0;void emergency() /east and west,south and north s

39、topled_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;void dx_pass() /east and west pass,south and north stopled_display(100,100);if(y_time0)TR1=1;R1=0;Y1=1;G1=1;R2=1;G2=1; /south and north yellow led flashif(cnt1=10)Y2=0;else Y2=1;if(y_time=0)TR1=0;R1=1;Y1=1;G1=0;R2=0;Y2=1;G2=1;void nb_pass() /south an

40、d north pass,east and west stopled_display(100,100);if(y_time0)TR1=1;R1=1;G1=1;if(cnt1=10)Y1=0;/east and west yellow led flashelse Y1=1;R2=0;Y2=1;G2=1;if(y_time=0)TR1=0;R1=0;Y1=1;G1=1;R2=1;Y2=1;G2=0;/*keyboard scan*void keyscan() if(!k5num) if(k0=0) /*emergency*delay(10);if(k0=0)while(!k0);TR0=0;k0n

41、um=1; if(!k1num&!k0num).if(k1=0)delay(10);if(k1=0)while(!k1);k1num=1;k2num=0;y_time=5; /单方向通行时,黄灯闪烁时间TR0=0;TR1=1;if(!k2num&!k0num)if(k2=0)delay(10);if(k2=0)while(!k2);k1num=0;k2num=1;y_time=5;/单方向通行时,黄灯闪烁时间TR0=0;TR1=1;if(k3=0)delay(10);if(k3=0)while(!k3);if(k1num|k2num)pass_time=dx_time; /由东西或南北通行返回时,重新开始执行。k0num=0;k1num=0;k2num=0;k4num=0;k5num=0;TR0=1;TR1=0;flag_t=0;if(!k4&!k0num)/pausedelay(10);if(k4=0)while(!k4);TR0=0;k4num=1; if(k4num=1) /暂停键按下时,才可以调整两个方向通行时间if(k5=0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号