《交通信号灯系统的设计与制作.doc》由会员分享,可在线阅读,更多相关《交通信号灯系统的设计与制作.doc(29页珍藏版)》请在三一办公上搜索。
1、摘 要道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制技术日益更新。本文将介绍一种基于单片机控制的交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机80C51和芯片74LS245为中心器件来设计交通灯控制系统。本系统性能稳定,功能完善,实用性强。关键词: 单片机 多路交通灯 紧急情况处理目 录引 言1第1部分 方案选择及总体设计1
2、11方案选择112 总体设计1121 系统构成1121功能概述2硬件总体框图3第2部分 系统硬件设计421交通灯四种通行模式及行车方向指示422各功能模块硬件设计及实现6221行人通行指示及其实现6222 各路口交通状态显示及其实现7223主次干道独立控制功能7224紧急情况处理功能及其实现8225倒计时计数功能及其实现8第3部分 系统软件设计831 软件总体流程图832 软件主要子程序流程9321 紧急状态子程序9322 显示状态子程序10第4部分 系统调试分析及结果1141 电路板实物的制作11411 印刷电路板PCB图的绘制11412 实物的制作1142 系统硬件调试1343 系统软件调
3、试1344 系统总体调试13参考文献15附录:16附录一:元件清单16附录二:系统硬件电路图17附录三:程序清单18致谢24 引 言当今世界,红绿灯已经被安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一现象在19世纪就已出现了,19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大厦前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交
4、通信号灯,这是城市街道的第一盏信号灯。在灯的脚下,一名手持长杆的警察随心所欲地牵动皮带转换提灯的颜色。第1部分 方案选择及总体设计11方案选择能实现此电路的方法很多,我们根据实际将范围定在以下几个比较切合我们的方案中。第一种方案:采用数字电子技术实现。用基本的555芯片(利用单稳态实现定时),计数芯片(如74LS163,74LS160等)完成计时功能,控制电路芯片,译码芯片(如74LS138)等基本芯片,结合电阻,电容等基本元件,通过逻辑电路实现交通灯的功能。 第二种方案:使用单片可编程来实现交通灯的功能。利用单片机的外围扩展,显示电路构成基本硬件。然后编程实现对定时,控制,显示电路的控制,然
5、后调试,完成设计。 结合实际情况,根据毕业设计任务书的要求,我们经过讨论和论证,最终一致选用第二种方案的设计思路对交通灯控制系统进行设计。12 总体设计121 系统构成整个系统的构成以80C51单片机为核心,由I/O口扩展,LED数码管显示,紧急情况中断电路还有复位电路等组成。单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。行车方向指示采用LED发光二极管,可有红、绿两种颜色指示放行与禁止,黄灯作为红绿转换的提示,形象直观。行人通行指示也同样采用LED发光二极管,用红、绿两种颜色指示放行与禁止,黄灯作为红绿转换的提示,形象直观,简
6、洁明了,更方便控制。按键控制台,可供警察在室内实时监视交通状况。通过按键可设置紧急情况发生时的交通灯状态控制人机界面非常友好。系统采用双数码管倒计时计数功能,最大显示数字99。友好的人机界面、灵活的控制方式、优化的物理结构以及丰富的功能是本设计的亮点。整个硬件电路组成模块如图1;80C51单片机I/0口扩展LED数码管显示中断系统复位电路图1-1.系统硬件构成模块121功能概述本设计由中断系统、单片机、LED数码显示模块和按键等构成。单片机是集成的IC芯片AT89C51单片机,只需根据实际选型。其他部分都需要根据应用要求和性能指标自行设计。LED数码显示电路复 位 电 路80C51单 片 机键
7、盘控制电路中断系统电路交通灯控制电路电源稳压控制电路紧急情况处理电路程序运行指示电路硬件总体框图注:以上电路图为我们所设计的交通灯控制系统的具体电路图,在东南西北四个方向的LED指示灯,代表四个方位的交通信号灯,电路图的下方是单片机控制系统。复位,中断等子电路。1、本系统交通灯控制规则如下:(1)每个街口有左拐、右拐、直行及行人四种指示灯。每个灯有红、绿、黄三种颜色。自行车与汽车共用左拐、右拐和直行灯。(2)共有四种通行方式: 车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。 南北向左拐、各路右拐,行人禁行。通行时间为1分钟。 东西向直行、各路右
8、拐,东西向行人通行。东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。 东西向左拐、各路右拐。行人禁行。通行时间为1分钟。(3)在通行结束前10秒钟,绿灯闪烁直至结束。2、有倒计时时间显示时间,红绿灯切换提前5秒亮黄灯提示。3、若交道口出现紧急情况,交警可手动控制:全路口车辆禁行、行人通行。紧急情况结束后再转成自动状态。第2部分 系统硬件设计21交通灯四种通行模式及行车方向指示按交通灯控制规则,每个街口有左拐、右拐、直行及行人四种指示灯。每个灯有红、绿两种颜色灯。4组LED数码管按照设置的通行时间(各路口默认的通行时间均为1分钟)进行倒计时,并各自进行红、绿灯显示,共有四种通行方式,分别
9、为: 图2-2 通行方式一示意图 图2-3 通行方式二示意图图2-4 通行方式三示意图 图2-5 通行方式四示意图通行方式一:倒计时时间为50s(通行时间),红绿灯状态为:南北直行:绿;东西直行:红;各路右拐:绿;左拐:红;人行道:南北绿,东西红;各路右拐比直行滞后5秒钟开放。如图2-2所示。通行方式二:倒计时时间为45s(通行时间),红绿灯状态为:南北左拐:绿,各路右拐:绿,所有人行道:红。如图2-3所示。通行方式三:倒计时时间为50s(通行时间),红绿灯状态为:东西直行:绿,南北直行:红,各路右拐:绿,左拐:红,人行道:东西绿,南北红,各路右拐比直行滞后5秒钟开放。如图2-4所示。通行方式
10、四:倒计时时间为60s(通行时间),红绿灯状态为:东西左拐:绿,各路右拐:绿,所有人行道:红。如图2-5所示。通行默认时间为1分钟,系统设置了任意更改功能,一般主干道通行时间要比次干道要长一些,可以根据实际情况进行调整,以提高车辆通过率,缓减交通压力。在通行结束前5秒钟,绿灯闪烁直至结束。本设计选用LED发光二极管的红绿灯状态用来指示左右拐、直行等交通指示信息。绿色表示通行,红色则表示禁止通行。中间绿色灯亮,表示直行,两边红色灯亮,表示禁止通行;左边绿色灯亮,表示左拐弯;其他红色灯亮则表示禁止通行和右拐弯。所有指示信息一目了然。22各功能模块硬件设计及实现221行人通行指示及其实现人行道的通行
11、采用红绿两种颜色的发光二极管来指示,其中多加了一个黄灯作为提示红绿转换的提示标志。按规则,南北车辆直行的时间也就是东西路口行人通行的时间。所以,在该时刻南北直行的指示灯和东西路口人行道上的指示灯的点亮情况应该是一致的。在现实中,人行道的状态切换是用该信号指示灯闪烁来提示红绿状态的切换的。但是在我们这个设计中,我们认为直接再加一个黄色信号灯来提示红绿状态的转换效果会更加明了。当然,相应地要考虑到单片机的带载能力了。黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时
12、,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥信号家族,遍及全世界陆、海、空交通领域了。我们的视网膜含有杆状和三种锥状感光细胞,。杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。由于这种视觉结构,人最容易分辨红色与绿色。虽然黄色与蓝色也容易分辨,但因为眼球,对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。所以,交通灯用什么颜色也是有大学问的。222 各路口交通状态显示及其实现在完成倒计时、状态信息等
13、的显示功能上,我们考虑了以下三种方案:方案一:完全采用数码管显示。这种方案只能显示有限的符号和数码字苻,无法胜任题目要求。方案二:完全采用点阵式LED 显示。此显示方案功能强大,可方便地显示各种英文字符,汉字,图形等,而且美观,但这种方案实现复杂,且须完成大量的软件工作,因此我们不予采用。方案三:采用发光二极管、数码管相结合的方法。考虑设计需要,我们用三个一组的发光二极管在显示不同的状态,在各个方向分别构成交通提示信息,形象逼真;用二位数码管用来显示倒计时时间。综上所述,方案三既满足了系统功能要求,又符合人性化设计标准。权衡利弊,我们决定采用方案三来实现系统的显示功能。 223主次干道独立控制
14、功能当主干道方向的车辆过多发生堵塞, 而次干道方向车辆却很稀少时,正常的信号灯时序将会使交通状况更加恶化。本设计添加了主次干道独立控制功能,交警可按需求控制任意路口的通行,该措施可在一定程度缓减短暂的交通压力。224紧急情况处理功能及其实现在十字交通路口常出现的紧急情况,若不及时处理将形成不良隐患。比如,交道口的行人有紧急情况发生,那么交警可以对信号灯进行手动控制,按下紧急情况处理键,通过软件使所有红灯亮,路口车辆禁行,行人通行,直至紧急情况结束后再转成常规的自动状态。225倒计时计数功能及其实现本系统使用数码管完成倒计时显示功能。以南北方向为例,数码管显示的数值从绿灯的设置时间最大值往下减,
15、每秒钟减1,一直减到0。然后又从红灯的设置时间最大值往下减,一直减到0。接下来又显示绿灯时间,如此循环。系统共有4 个二位的LED 数码管,分别放置在模拟交通灯控制板上的四个路口。因为相同直线方向上的数码管应该显示同样的内容,所以我们可以把它们同样对待。也就是说各个方向的数码管个位(把数码管第二位定义为个位,第一位定义为十位)用一根信号线控制,十位用另一根信号线控制。这里采用动态显示。考虑到单片机的P1口驱动数码管七位段码的能力,我们利用一片74LS245芯片来作为数码管的位驱动芯片。经实验证明,该8路同相三态双向总线收发器芯片的驱动能力完全可以满足本设计的显示要求。第3部分 系统软件设计硬件
16、平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。31 软件总体流程图软件总体设计及流程图见图3-1,主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对按键进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。其流程图如图3-1所示。开始初始化扫描外
17、部按键状态判断当前状态紧急状态时间显示图3-1 软件总体流程图主程序比较简单,初始化完成后,调用按键扫描程序,取得按键状态,并根据当前系统状态调用相应的子程序。32 软件主要子程序流程321 紧急状态子程序现今社会经济发展状况下,我们身边的交通状况显得越来越拥挤。在道路交通突然状况也越来越多,特别是在车流辆比较集中的十字路口。本设计在紧急状态下,可以通过紧急状态手动控制按键使所有的LED 都被置为红灯,车辆禁行、行人通行。紧急情况结束后再转成自动状态。状态转为正常运行开始按键是否按下返回所有LED置为红色是否图3-2 紧急状态子程序322 显示状态子程序AT89C51初始化四个路口的灯全部点亮
18、按设定的交通方案显示各路口LED灯的状态开始倒计时显示延时返回是否出现紧急状况所有路口LED置红色图3-2 显示状态子程序本设计各路口灯比较多,各通行状态前文已有描述在此不一一赘述。虽然整个系统LED灯的数量比较多,但各个方向的灯各司其职使交通指挥更加显而明了。在人为手动复位和初始化的情况下,各路口所有交通灯均点亮。此时若有LED灯出现故障,一目了然,可以及时检修。若有紧急中断信号出现,显示子程序优先处理中断程序,将所有路口的信号灯置为红色禁止通行。紧急状态解除各信号灯再进入正常状态显示。第4部分 系统调试分析及结果因本设计本身要求有稳定性高、免维护、抗干扰能力强等功能,系统调试除了验证数据处
19、理的精度,确保判断的准确性外,同时必须确认各项功能的正常运行。41 电路板实物的制作411 印刷电路板PCB图的绘制由于本电路硬件设计中,用单片机的两个IO口控制各路交通灯的循环点亮。用同一芯片单片机的P1口和P3口的高四位,来控制数码管的显示点亮。因此,在同一芯片中,所要接的线路比较多。在硬件的布局中,各位LED灯和数码管的布局比较固定化,集中分布在所控制的四个路口。因此,若采用双面PCB板的话,这个电路的布线比较容易实现。但是,现实水平中做双面板会出现一些焊点接触不良而导致电路调试过程不易实现。因此,我们决定使用单面板布线。单片面板的布线需要牺牲本设计电路板一部分实际电路的美观。印制电路板
20、的设计是以电路原理图为根据,实现电路设计者所需要的功能。印刷电路板的设计主要指版图设计,需要考虑外部连接的布局、内部电子元件的优化布局、金属连线和通孔的优化布局、电磁保护、热耗散等各种因素。优秀的版图设计可以节约生产成本,达到良好的电路性能和散热性能。简单的版图设计可以用手工实现,复杂的版图设计需要借助计算机辅助设计(CAD)实现。412 实物的制作准备工作:打印一份印刷电路PCB;事先购买好实物电路所需的各种元器件;一块铜板;FeCl3一包;还有其他的基本电子器件和制板工具。制作过程:我们的印刷电路板制作过程总制板工艺程序:修整板周边尺寸-复制-钻孔定位-贴胶-腐蚀-清洗-去-细砂纸擦光亮-
21、涂松香水。 1.先将符合尺寸要求的复铜板表面用细砂纸擦光亮,再把打印出来的印刷电PCB复写纸将布线图复制到复铜板上。 2.用直径1.0mm钻头钻孔、定位口,再进行贴胶(或上油漆)。 3.贴完胶后,应在板上垫放一张厚张,用手掌在上面压一压,其目的是使全部贴胶与复铜板粘贴得更加牢靠。必要时还可用吹风筒加热,可使用权贴胶粘度加强,由于所用的贴胶具很好的粘性,而且胶纸又薄,故采用这种贴胶进行制板,效果较好,一般是不须再作加热处理。 4.腐蚀一般采用三氯化铁作腐蚀液,腐蚀速度与腐蚀液的浓度,温度及腐蚀过程中采取抖动有关,为保证制板质量及提高腐蚀速度,我们采用了抖动和加热的方法。 5.腐蚀完成后,应用自来
22、水冲洗干净,并将胶纸去掉,把印刷板抹干。 6.用细砂布将印刷板复铜面擦至光亮为止,然后立即涂上松香溶液。(涂松香水时应将印刷电路板倾斜放轩再涂以松香水,以免松香水经钻孔流至背面)。 附注: (1)松香水的作用是防氧化,助焊及增加焊点的光亮度等;松香溶液是用松香粉末与酒精或天寻水按一定比例配制面成,其浓度应适中,以用感有一定粘性即可。 (2)三氯化铁溶液对人体皮肤不会有不良影响,但三氯化若搞到衣服上或地面上,寻是难以洗掉的,所以使用时我们是特别小心的。 制板心得:我们在制板过程中,1.首先是PROTEL设计的时候出现的错误导致印制电路板制作错误。2.其次是由于设计的理论和实际有误差导致无法实现目
23、标。3.焊接过程中出现了一些问题,比如焊跳线的时候,由于接线太多,而且是手工焊接,并且焊接设备不好,烙铁头高温下容易老化氧化和温度不可控制。因此导致焊盘脱落,原件烫伤等原因导致报废了好几块板子。此外,有些焊盘太小并且有损坏迹象,所以焊接很不方便。但为了不出现虚焊,却花了很长时间去焊,有些焊点并不是很美观。4.焊接过程中,有时候焊锡会不小心将相邻的两根引线短路。所以,此次做板积累了一些经验,主要是,再次做板的时候一定要注意PCB的引线之间的距离不能设置太近。因为我们是手工制作,精度和密度都必须有一个自由度和能力所及的范围,并且考虑到手工制板的局限性和线路过细密导致的氧化和短路故障。我们拥有了这些
24、宝贵的经验,相信今后制板,一定会完美保证电路的实现!42 系统硬件调试在设计过程中,我们使用了proteus硬件仿真软件对该设计的硬件电路进行了实物功能仿真,仿真效果良好。实物交通灯控制系统的PCB电路板焊接工作量非常大,电路安装完成后,首先进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分级调试,根据电路功能逐级进行:通行方式功能调试:包括对四种通行方式控制调试,行人和行车方向指示灯亮度和驱动电路调试;倒计时功能调试:数码管亮度调试;复位和紧急情况手动控制功能调试。 43 系统软件调试本系统的软件系统很大,选用一般的伟福仿真器对程序进行编写和调试。除了
25、语法差错外,当确认程序没问题时,通过直接下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。44 系统总体调试系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正误差。测试一开始,我们就发现了系统出现了两个问题:一是有一部分交通灯亮度不够,所发出来的光非常的微弱以致于几乎感觉不到它的亮度;二是数码管不工作,没有时间显示。这与设计的要求完全不符。为了找出这个问题和解决方法,我们查找了电路的输出各部分的输出电平。发现了一个现象,我们采用的数码管是共阴极数码。而控制数码段显示的P1口输出的是高电平。经多方查
26、阅资料,解决第二个问题可以有两个解决方法。其一,将硬件电路作修改,将数码管换成共阳极的数码管。这样数码管就可以正常进行时间显示了。其二,修改程序,让控制数码管段码的P1输出的是低电平。若采用修改硬件电路的方法的话,硬件电路就得作变动。已经布好的线也必须有相应的变动,操作起来比较麻烦。所以,我们采用了第二种方法。修改了程序电路中的段码代码。再次调试,按照设计要求的指标,系统数码管电路部分基本能按照预先设定的要求来进行倒计时的显示。亮度要求也基本符合预先设想。接下来还有一个问题有待解决,交通灯亮度不足,以致于部分交通灯只能勉强看得出来它在亮而已。这明显不能满足设计要求。经多方检测,我们认为这是由于
27、LED灯驱动能力不足引起的亮度弱问题。若要修正这个问题,那就得为LED灯增加驱动电路以提高电路的驱动能力。要实现这一步骤必须对硬件电路进行一定的改动。LED灯的驱动电路可以用集成电路电路芯片来进行驱动。在初步方案中我们考虑要用集成电路来完成。但是由于客观方面的原因,将要参加工作离开学校没有制作实物的环境条件。因此,这部分改进只作了一个设想,并没有时间去付诸实施。但基本问题和解决问题的原理我们还是有一定的了解。参考文献1陈权昌、李兴富.单片机原理及应用.华南理工大学出版社.2004.2葛仁华、卢勇威.数字电子技术.华南理工大学出版社.2005.3沈鸿星.LED交通信号灯系统的硬件设计J.电子工程
28、师.2004. 4何立民.单片机应用技术大全M.北京:北京航空航天大学出版社.1994.5李广弟.单片机基础M.北京:北京航空航天大学出版社.1992.6胡汉才. 单片机原理及其接口技术M.清华大学出版社.2000年5月第一版.7何立民. 单片机高级教程M.北京航空航天大学出版社,2000年5月第一版.8骆新全. 吴小泉. 李行星. 电子电路与系统实验. 北京, 中国广播电视出版社, 2009.附录:附录一:元件清单元件类型元件参数元件数量(个)单片机80C511总线驱动器74LS2451电阻5k810k4排阻10k1晶振12M1电解电容20u1瓷片电容30p2NPN型三极管90138二位数码
29、管共阳极4开关按键开关4拔动开关1铜板1323cm1附录二:系统硬件电路图附录三:程序清单 ;工作寄存器及存储单元分配;1.工作寄存器;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器;2.片内存储单元;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元;3.标志位;00H:南北通行标志位 ; 01H:东西通行标志位;02H:紧急事件标志位 ;-SNF EQU 00H ;南北通行标志位EWF EQU 01H ;东西通行标志位URF EQU 02H ;紧急事件标志位ORG 0000HLJMP MAIN ;
30、上电转主程序ORG 000BH ;定时中断入口LJMP DSZD ORG 0003H ;紧急中断入口LJMP URZDORG 0030H MAIN: LCALL INIT ;调用初始化子程序LOOP: LCALL DIS ;循环执行显示子程序 AJMP LOOP;/初始化程序INIT: SETB SNF SETB EWF SETB URF MOV R2,#20 ;定时器中断20次为1s MOV TMOD,#01H ;初始化定时器 MOV TL0,#0B0H MOV TH0,#3CH SETB EA ;开定时中断与紧急中断 SETB ET0 SETB TR0 SETB EX0 SETB IT0
31、;设置中断程控方式 MOV DPTR,#TAB ;数值首地址放入DPTR中 MOV 40H,#40 ;东南西北通行时间设置 MOV 41H,#40 MOV 30H,#40 ;通行时间初始化 MOV 31H,#60 MOV P0,#4CH ;初始化时南北通行并把交通灯状态分别放在32H和33H中 MOV 32H,#4CH MOV P2,#15H MOV 33H,#15H RET;/显示子程序DIS: MOV P3,#0DFH ;选中南北方向的十位数码管 MOV A,30H ;把显示数据送人数码管显示 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A ; LCALL
32、D1MS MOV P3,#0EFH ;选中南北方向的个位数码管 MOV A,B ;送入数码管显示 MOVC A,A+DPTR MOV P1,A LCALL D1MS MOV P3,#7FH ;选中第东西方向的十位数码管 MOV A,31H ;送入数码管显示 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A LCALL D1MS MOV P3,#0BFH ;选中第东西方向的个位数码管 MOV A,B MOVC A,A+DPTR MOV P1,A LCALL D1MS SETB P3.0 SETB P3.1 JNB P3.0,DIS_S ;查询是否第一个按键按下 JN
33、B P3.1,DIS_E ;查询是否第二个按键按下 AJMP DIS_R ;没有键按下则返回DIS_S:LCALL D5MS ;按键去抖 JNB P3.0,DIS_SN AJMP DIS_R DIS_SN:MOV 40H,#50 ;对通行时间从新分配,南北通行时间加长 MOV 41H,#30 AJMP DIS_RDIS_E:LCALL D5MS ;按键去抖 JNB P3.1,DIS_EW AJMP DIS_RDIS_EW:MOV 40H,#30 ;东西通行时间加长 MOV 41H,#50DIS_R:RET ;/定时中断处理程序DS_C: LJMP DS_R ;接力跳转DSZD: PUSH AC
34、C ;保护现场 PUSH PSW CLR TR0 ;关定时器及中断标志位并重新赋值 CLR TF0 MOV TL0,#0B0H MOV TH0,#3CH DJNZ R2,DS_C ;判断1m时间是否到达 MOV R2,#20 ;到达重新赋值 DEC 30H ;南北方向通行时间减一 MOV A,30H ;把减一后的时间送入显示存储单元;南北通行到达最后4秒时黄灯闪烁DS_10:CJNE A,#4,DS_11 ;如果通行时间剩余4秒 JNB SNF,DS_11 ;判断是否是南北通行 MOV P0,#8AH MOV 32H, #8AH ;把交通灯状态存入存储单元(后面类似)DS_11:CJNE A,
35、#3,DS_12 ;不是剩余3秒,返回 JNB SNF,DS_12 ;不是南北通行时间,返回 MOV P0,#88H MOV 32H, #88HDS_12:CJNE A,#2,DS_13 JNB SNF,DS_13 MOV P0,#8AH MOV 32H, #8AH DS_13:CJNE A,#1,DS_14 JNB SNF,DS_14 MOV P0,#88H MOV 32H, #88H;-DS_14:JNZ DS_NE ;通行时间没有结束转向改变东西方向的数码管 CPL SNF ;如果通行时间结束则对标志位取反 JNB SNF,DS_1 ;判断是否南北通行 MOV 30H,40H ;是,点亮
36、相应的交通灯 MOV P0,#4CH MOV 32H,#4CH ;存储交通灯状态 MOV P2,#15H MOV 33H, #15H ;存储交通灯状态DS_NE:DEC 31H ;东西方向通行时间减一 MOV A,31H ;把通行剩余时间送入显示存储单元;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)DS_20:CJNE A,#4,DS_21 JB EWF,DS_21 MOV P0,#51H MOV 32H, #51HDS_21:CJNE A,#3,DS_22 JB EWF,DS_22 MOV P0,#41H MOV 32H, #41HDS_22:CJNE A,#2,DS_2
37、3 JB EWF,DS_23 MOV P0,#51H MOV 32H, #51HDS_23:CJNE A,#1,DS_24 JB EWF,DS_24 MOV P0,#41H MOV 32H, #41H;-DS_24:JNZ DS_R ;东西方向时间没有结束,返回 CPL EWF ;对通行状态取反 JNB EWF,DS_2 ;东西方向通行时间到来,跳转 MOV 31H,#80 ;东西方向通行结束,重新显示时间 MOV P0,#89H ;点亮相应的交通灯 MOV 32H, #89H MOV P2,#29H MOV 33H, #29H AJMP DS_R DS_1: MOV 30H,#80 ;南北通
38、行时间结束,重新对显示存储单元赋值 MOV P0,#89H ;执行转弯状态1 MOV 32H, #89H MOV P2,#26H MOV 33H, #26H AJMP DS_NE DS_2: MOV 31H,41H ;东西方向开始通行,赋值予显示存储单元 MOV P0,#61H ;点亮相应的交通灯 MOV 32H, #61H MOV P2,#15H MOV 33H, #15HDS_R: SETB TR0 POP PSW ;恢复现场 POP ACC RETI;/紧急中断处理程序URZD: PUSH ACC ;保护现场 PUSH PSW CLR IE0 ;清除中断标志位 CLR TR0 ;关定时器 CPL URF ;紧急事件标志位 JB URF,UR_CON ;紧急结束;跳转 MOV P0,#49H ;各路口灯全显