1、课程设计(论文) 题 目 名 称 基于89C51的十字路口交通灯控制系统设计 课 程 名 称 C51应用技术 学 生 姓 名 帅哥 学 号 真的很帅 系 、专 业 的确很帅 指 导 教 师 丑的一比 2014年6月24日 邵阳学院课程设计(论文)评阅表学生姓名 帅哥 学 号 1真的很帅 系 专业班级 题目名称 基于89C51的十字路口交通灯控制系统设计 课程名称 一、学生自我总结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,这次课程设计虽然很累,但我学到了不少东西,对软件的设计过程和方法有了更深入的了解,培养了我们的团队精神,锻炼了我们的沟通和表达
2、能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 学生签名: 2014年6月 26 日二、指导教师评定评分项目平时成绩论文答辩综合成绩权 重304030单项成绩指导教师评语: 指导教师(签名): 年 月 日注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。 摘要 近年来,随着国民经济的快速发展,车辆的增多,交通拥挤和阻塞现象时常出现。交通拥塞已成
3、为城市交通中迫切需要解决的社会问题。而我国传统使用的定周期控制和各路口各自的独立控制方法,在解决这些问题时效果并不是很好。越来越多的证据表明,简单地扩大道路基础设施并不能解决交通拥堵问题。这要求在现有道路条件下,提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,更加灵活有效地提高道路的利用率。单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。单片机的特点控制功能强抗干扰性强,可靠性高,工作温度范围宽开发周期短,性价比高,易于产品化。交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导
4、交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间 本设计将运动检测技术与交通灯控制结合起来,除了具有正常的交通灯时序控制外,当发现有闯红灯的情况时还能发出报警,从而使交通灯控制系统具有初步的视觉感知功能。系统是由显示模块、控制模块、运动检测处理模块, 目录一、前言1二、课题设计2三、设计目的2四、设计任务2五、设计方案选择3六、设计思路3七、原理图和连接图12八、程序流程图14九、设计心得15十、参考文献15十一、附录163 一、
5、前言 今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了,1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”
6、,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某
7、一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。现在交通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在
8、一定程度上尽可能的降低 由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。二、 课题设计 基于89C51的十字路口交通灯控制系统设计。三、 设计目的系统功能要求:本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。此十字路口交通灯控制系统,分东西
9、道和南北道,设南北道为A道,东西道为B道。规定:首先,东西路口红灯亮,南北路口绿灯亮,同时开始30s倒计时,以7段数码管显示时间。25s倒计时结束后开始5s倒计时,南北路口的绿灯闪烁,计时到最后2s时,南北路口黄灯亮。完成1次这样的循环需要30s。30s结束后,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。若有紧急车辆要求通过时,此系统应能禁止普通车辆,而让紧急车辆通过。(1)倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是
10、用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。(2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且I0口足够,可直接采用独立式
11、。(3)紧急处理 交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通控制中增设禁停按键,就可达到想此目的。四、 设计任务本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:初始南北方向绿灯亮,东西方向红灯亮,东西方向通车。延时90s,南北路口绿灯熄灭,绿灯闪烁3秒后黄灯亮2秒。黄灯熄灭后,东西路口绿灯亮同时南北路口红灯亮,南北方向开始通车。延时90s,东西方向绿灯灭,绿灯闪烁3秒后黄灯亮2秒,然后又切换成东西方向通车,如
12、此重复。当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键),重新按上述方式工作。当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。五、 设计方案优选 方案一 PLC控制交通灯 PLC主要应用于强电方面的工业控制,或者整条流水线的控制。虽然比较稳定,但是功耗要大。 方案二 单片机控制交通灯 单片机具有结构简单、编程方便、经济、易于连接等优点, 特别是其内部定时器计数器、中断系统资源丰富, 可对交通灯进行精确的控制, 有应用价值。 经过我们的小组一致讨论得出,使用单片机控制的交通灯更
13、方便实用,所以我们选择了方案二作为我们的设计方案。六、 设计思路设计思路(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。 (3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部结
14、构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。 系统的总体框图 LED数码显示管单 片 机 按键控制电路 外接口电路 红黄绿信号灯 图1 图1系统的总体框图据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块,LED倒计时模块模块接受输出。系统的总体框图如上所示。单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中随时调用急停按键和时间调节中断。资源分配红色八段LED数码管(显示的是红灯的倒计时)和蓝色八段LED数码管(显示的是绿灯和黄灯的倒计时)a.L
15、ED简介LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图3.6所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。b.LED 灯的显示原理通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a全亮
16、显示为,采用共阳极连接驱动代码,代码表如下图2所示。图2 驱动代码表显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H 图2相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用8个LED接在单片机的IO口上。虽然路口不一样,但
17、是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图3.7所示,其中A,B分别是P0,P1的网络标号。 LED显示器图3 LED连接图 发光二极管图4根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每条道上设置红绿黄灯,如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如上图所示。 AT89C51芯片 图5 a.AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片
18、机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。b.AT89C51单片机的主要特性 与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序
19、存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。 中断系统:中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。 图6 AT89C51系列单片机的内部结构示意图 c.主要引脚功能VCC:电源电压GND:接地P0口:P0口是一组8位双向I0口。P0口即可作地址数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外
20、存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。P1口:Pl 是一个带内部上拉电阻的8准位双向IO口,P1作为通用的I/O口使用。P2 口:P2 是一个带有内部上拉电阻的8 位准双向IO 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的8 位准双向I0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,具体分配如图7 图7 具有第二功能的P3口引脚端口引脚第二功能:P3.0RXD(串行输入
21、口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通) 图7 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALEPROG():当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位
22、字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN()程序储存允许(PSEN())输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器
23、周期两次PSEN()有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN()信号。EA()VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 d.MCS51的中断源8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断T
24、F0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表4所示:图8中断源程序入口中断源的服务程序入口地址中断源入口地址外中断00003H定时/计数器0000BH外中断10013H定时/计数器0001BH串行口中断0023H 图8e.交通灯中的中断处理流程()现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。()中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。()中断服务程序
25、:有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。()中断返回:执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。 (5)上拉电阻 1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。 2、OC门电路必须加上拉电阻,才能使用。 3、为加大输出引脚的驱动能力,有的单片机管脚
26、上也常使用上拉电阻。 4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。 5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。 6、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。 7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。 (7)上拉电阻阻值的选择原则包括: 1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。 2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。 3、对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑
27、以上三点,通常在1k到10k之间选取。(8)显示原理:当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。 (9) 紧急通道控制开关 图9七、硬件原理图和连原理 图10 图11 图12 图13八、 程序流程图开始系统初始化东西亮红灯,南北亮绿灯调显示子程序(动态显示)东西,南北方向换向南北绿灯闪烁,南北亮黄灯灯中断处理子程序处理返回图14 系统总流程图九、 设计心得经过六十个课时的努力,终于完成了自己的单片
28、机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。通过这次交通灯的课程设计,让我提高了用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,并且对已有知识有了更深层次的理解和认识。可以说在整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解,为日后成为一名合格的应用型人才打下良
29、好的基础。在整个课程设计过程我还掌握了一下几点:(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。(2)理解了最单片机的各部分组成及特性。(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用。(4)进一步加深了对PROTEUS软件的学习。通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围
30、绕着这些主要问题而逐步得到解决。同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。最后,对在这个课程设计过程中帮助我的所有同学和各位指导老师再次表示衷心的感谢!十、 参考文献1. 江世明.单片机应用及原理(第2版).上海交通大学出版社,20052. 何立民.单片机高级教程. 北京:北京航空航天大学出版社,19993. 钱逸秋.单片机原理及应用.北京:电子工业出版社,20024. 周润景.基于proteus的电路及单片机系统设计与仿真.北京:北京航空航天大学出版社,2006.55. 潘永雄.电子线路CAD实用教程.西安:西安电
31、子科技大学出版社,2006.56. 周润景.Proteus在MCS-51&ARM7系统中的应用百例北京:电子工业出版社,2006十一、 附录程序源代码 ORG 0000H ;主程序的入口地址 LJMP MAIN ;跳转到主程序的开始处 ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址 LJMP T0_INT ;跳转到中断服务程序处 ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断 MOV TMOD,#51H ;设置T1为计数
32、方式,T0为定时方式,且都工作于模式1 MOV TH1,#00H ;T1计数器清零 MOV TL1,#00H SETB TR1 ;启动T1计时器 SETB EX1 ;允许INT1中断 SETB IT1 ;选择边沿触发方式 MOV DPTR ,#0003H MOV A, #80H ;给8255赋初值,8255工作于方式0 MOVX DPTR, AAGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转 MOV A,P1 JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间 MOV R0,#00H ;R0清零 MOV R
33、0,A ;存入东西方向绿灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAINRED: MOV A,P1 ANL A,#7FH ;P1.7置0 MOV R7,#00H ;R7清零 MOV R7,A ;存入东西方向红灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN;-N0: SETB TR0 ;启动T0计时器 MOV 76H,R7 ;红灯时间存入76HN00: MOV A,76H ;东西方向禁止,南北方向通行 MOV R3,A MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿
34、灯亮 MOV A,#0DDH MOVX DPTR, AN01: JB P2.0,B0N02: SETB P3.0 CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行;-黄灯闪烁5秒程序-N1: SETB P3.0 MOV R3,#05H MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0D4H MOVX DPTR,AN11: MOV R4,#00HN12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 MOV A,#0DDH MOVX DPT
35、R,AN14: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续灭0.5秒 CJNE R3,#00H,N1 ;闪烁时间达5秒则退出;-N2: MOV R7,#00H MOV A,R0 ;东西通行,南北禁止 MOV R3,A MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮 MOV A,#0EBH MOVX DPTR,AN21: JB P2.0,T03 N22: CJNE R3,#00H,N21;-黄灯闪烁5秒程序-N3: MOV R3,#05H MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0E2H MO
36、VX DPTR,AN31: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续亮0.5秒N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 MOV A,#0EBH MOVX DPTR,AN33: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续灭0.5秒 CJNE R3,#00H,N3 ;闪烁时间达5秒则退出 SJMP N00;-闯红灯报警程序-B0: MOV R2,#03H ;报警持续时间3秒B01: MOV A,R3 JZ N1 ;若倒计时完毕,不再报警 CLR P3.0 ;报警 CJNE R2,#00H,B01 ;判断3秒是否结束
37、SJMP N02;-1秒延时子程序-N7: RETIT0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值 MOV TH0,#0F1H INC R4 INC R5 CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序 MOV R5,#00H ;R5清零 DEC R3 ;倒计时初值减一 DEC R2 ;报警初值减一T01: ACALL DISP ;调用显示子程序 RETI ;中断返回;-显示子程序-DISP: JNB P2.4,T02DISP1: MOV B,#0AH MOV A,R3 ;R3中值二转十显示转换 DIV AB MOV 79H,A MO
38、V 7AH,BDIS: MOV A,79H ;显示十位 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#0002H MOVX DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX DPTR,A LCALL DELAYDS2: MOV A,7AH ;显示个位 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#0002H MOVX DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX DPTR,A RET;-东西方向车流量检测程序-T03: MOV A,R3 SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量 JZ N3 JB P2.0,T03 INC R7