资源描述
通信工程 专业
课程设计题单
班级 1182041 学生 甘飞炜
课程名称 专业课程设计
课 题 交通灯模拟控制系统
设计要求 用单片机扩展一片8255,用12个发光二极管模拟一个十字路口的红、绿、黄灯,并设置二个紧急放行按键;正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮12秒控制;当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。
课 题 发 给 日 期 2014.06.17
课程设计完成日期 2014.06.26
指 导 教 师
评语:
评分:
摘要
在现代城市中,红绿交通灯成为交管部门管理交通的重要手段。为了确保十字路口行人跟车辆顺利、畅通的通过,往往采用电子控制的交通信号来进行指挥。本课程设计用8051单片机扩展一片8255,用12个发光二极管模拟一个十字交叉路口的红、绿、黄灯,并设置二个紧急放行按键。绿灯是通行信号, 红灯是禁行信号,黄灯是警告信号,而当紧急信号灯被按下时,将改变通行的方向跟时间。
关键词:8051单片机 交通信号 紧急放行键
目录
摘要.......................................................5
第一章绪论................................................6
1.1 引言...................................................6
1.2 课题背景...............................................6
1.3 研究的意义及内容.......................................6
第二章系统总体设计方案....................................7
2.1 总体设计方案...........................................7
2.2 交通灯设计思想.........................................7
2.2.1 具体设计思想 ......................................7
2.2.2 交通灯控制系统状态 .................................8
第三章系统的硬件设计......................................9
3.1 8051 单片机简介........................................9
3.2 内部资源..............................................11
3.2.1 串行口 ...........................................11
3.2.2 定时器/计时器 .....................................11
3.2.3 中断系统 .........................................11
3.3 交通灯各部分功能分析及各逻辑器件描述 ................11
3.3.1 单片机输入输出引脚 .................................11
3.3.2 时钟定时控制部件 ..................................12
3.3.3 LED 数字显示电路 ...................................13
3.3.4 复位电路 ..........................................14
3.3.5 红黄绿灯显示电路 ..................................15
3.3.6 扩展并行I/O 口8255 ...............................16
3.3.7 74LS373 芯片简介 ...................................17
第四章软件设计...........................................18
4.1 设计要求..............................................18
4.2 主程序流程图..........................................19
4.3 子程序流程图..........................................19
4.4 源程序及代码注释......................................23
4.4 源程序及代码注释 .....................................26
第五章总结...............................................28
参考文献.................................................29
附录.....................................................30
附图1:80C51 与8255 电路连接部分...........................30
附图2:8255 通过74LS245 控制数码管显示部分................31
30
第一章 绪 论
1.1 引言
随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
1.2 课题背景
在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的助手,但这一技术在19世纪就已出现了。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
1.3 设计的意义及内容
随着我国社会经济的发展,城市化、城镇化进程的加快,道路交通堵塞问题日趋严重,如何对交通进行合理的管理和调度而尽可能减少堵车现象成为目前我国很多地方尤其是特大城市急需解决的问题,显然交通灯在其中起着不可缺少的作用。
该课题研究的内容主要是单片机,单片机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。随着单片机在各个领域的广泛应用,单片机以其自身的特点,已广泛的应用于智能仪器、工业控制、家用电器、电子玩具等各个领域。这种将单片机嵌入到对象体系中的嵌入式系统已渗透到每个单位、每个家庭和个人。随着社会需求的不断增长,单片机的应用有着广泛的和稳定增长的市场
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。由单片机和交通等模组即可构成交通灯,在单片机内运行适当的程序即构成了交通灯控制系统。
第二章 系统总体设计方案
2.1 总体设计方案
交通灯控制系统总体设计方案共有五个部分组成,分别是:单片机80C51、LED交通灯电路、8255控制数码管显示电路、晶振及复位控制电路。该设计的设计方框图如图2-1所示。
2-1 交通灯总体设计图
2.2 交通灯设计思想
2.2.1具体设计思想
利用80C51单片机控制交通灯系统工作。其中P1口接上上拉电阻用作输出口,控制东西方向,P3口接上上拉电阻也用作输出口,控制南北方向;8255的PB口连接一个74LS245芯片(双向总线驱动器),再与外部六个数码管连接,PB口连接一个74LS245芯片与6个数码管的公共COM端连接,用于选择数据输出的地址,这样就可以实现时间的动态显示,并且节省了端口数。同一方向的交通灯的状态是一致的,所以一个端口控制同方向的两盏灯,交通灯与P1口、P3口之间的关系如表2-1所示。
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
东向黄灯
东向绿灯
东向红灯
西向黄灯
西向绿灯
西向红灯
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
南向黄灯
南向绿灯
南向红灯
北向黄灯
北向绿灯
北向红灯
表2-1交通灯与P1口之间的关系
2.2.2交通灯控制系统状态
通过软件编程控制P1口、P3口的高低电平来实现交通灯的亮灭,通过调用延时程序来设定时间以确定各个路口红绿灯亮灭的时间,各个路口交通灯的状态如表2-2所示。
南北干道
东西干道
时间
绿灯亮,允许通行
红灯亮,禁止通行
9秒
黄灯闪烁,停车
红灯亮,禁止通行
3秒
红灯亮,禁止通行
绿灯亮,允许通行
9秒
红灯亮,禁止通行
黄灯闪烁,停车
3秒
表2-2 各个路口交通灯亮灭的状态
当东西方向或南北方向遇到紧急情况时,可按下相应的急性键作相应的处理:如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。
第三章 系统的硬件设计
3.1 80C51单片机简介
80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。其管脚封装如图3-1所示。
图3-1 80C51 管脚封装
80C51包含以下部分,其结构图如图3-2所示
(1)一个8位微处理器CPU
(2)片内数据存储器RAM和特殊功能寄存器SFR
(3)片内程序存储器ROM
(4)两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计数
(5)四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出
(6)一个串行端口,用于数据的串行通信
(7)中断控制系统
(8)内部时钟电路
图3-2 80C51内部结构图
功能特性概述:80C51 提供以下标准功能:8K字节 Flash 闪速存储器,256字节内部 RAM,32 个 I/O 口线,3 个 16 位定时/计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,80C51 可降至 0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
3.2 内部资源
3.2.1 串行口
8051单片机内部有一个可编程的、全双工的串行接口。串行收发贮存在特殊功能寄存器SFR中的串行数据缓冲器SBUF中的数据,SBUF占用内部RAM地址99H。但在机器内部,实际上有两个数据缓冲器:发送缓冲器和接收缓冲器,因此,可以同时保留收/发数据,进行收/发操作,但收/发操作都是对同一地址99H进行的。
3.2.2 定时器/计时器
8051内部有两个16位可编程计时器/计数器,记为T0和T1。16为是指他们都是由16个触发器构成,故最大计数模值为216-1,可编程是指他们的工作方式由指令来设定,或者当计数器用,或者当定时器用。并且计数(定时)的范围可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。
如果需要,定时器在记到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。在计数状态下同样可以申请中断。定时控制寄存器TCON用来负责定时器的启动、停止以及中断管理。
在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频作为定时器的时钟。计数工作时,时钟脉冲(计数脉冲)由T0和T1(即P3.4,P3.5)输入。
3.2.3 中断系统
8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INT0和INT1(即P3.2,P3.3)输入,输入方式可以是电平触发(低电平有效),也可以是边沿触发(下降沿有效)。两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态全1转为全0时发出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可以提出一次中断请求。8051单片机可以设置两个中断优先级,即高优先级和低优先级,由中断优先控制器IP来控制。
3.3 交通灯各部分功能分析及各逻辑器件描述
3.3.1单片机输入输出引脚
(1) P1端口[P0.0-P0.7] P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。
(3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4) P3端口[P3.0-P3.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请参看下表。
P3引脚
兼用功能
P3.0
串行通讯输入(RXD)
P3.1
串行通讯输出(TXD)
P3.2
外部中断0( INT0)
P3.3
外部中断1(INT1)
P3.4
定时器0输入(T0)
P3.5
定时器1输入(T1)
P3.6
外部数据存储器写选通WR
P3.7
外部数据存储器写选通RD
3.3.2 时钟定时控制部件
由于AT89C52单片机内部有一个用于构成振荡器的高增益反向放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,该电路采用的是内部方式,如图3-3所示。
图3-3 时钟定时电路
在XTAL1和XTAL2的两端接石英晶体振荡器,与内部反向器构成稳定的自激振荡器,发出的时钟脉冲直接进入片内定时定时控制部件。用以提供交通灯时钟信号。
在该电路的设计过程中,C1、C2的选取对频率有微调作用,选取值是22pF。为了减少寄生电容,保证振荡器稳定和可靠的工作,在接线时将晶振和电容的管脚接在单片机最近的地方。
3.3.3 LED数字显示电路
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如图3-4所示。
图3-4 LED显示器的符号图
发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图3-5是共阳式、共阴式LED数码管的原理图和符号。表3-1是两种数码管段码与显示字形的关系。
图3-5 数码管原理图和数码管符号图
显示字型
0
1
2
3
4
5
6
7
8
9
段码
共阳
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
90H
共阴
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
7FH
6FH
表3-1段码与显示字形的关系
3.3.4 复位电路
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在80C51的9(RST)引脚上时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0-P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用12MHz时,C取10μF,R约为10KΩ。复位操作不会对内部RAM有所影响。常用的复位电路如图3-6所示:
图3-6 单片机复位电路
3.3.5 红黄绿灯显示电路
红黄绿灯显示电路如图3-7所示。二极管的正极通过上拉电阻接+5v的电源VCC,负极分别接89C52单片机的外部接口P1.0、P1.1、P1.2、P1.3、P1.4、P1.5口,我们可以通过控制单片机P1口的数据输出来控制二极管的亮灭。例如为P1口送值为#0DEH,则南北红灯亮禁止通行,东西绿灯亮允许通行。交通灯电路如下图所示。
图3-7 交通灯及数码管倒计时显示电路
3.3.6 扩展并行I/O口8255
8255A芯片是一个采用NMOS工艺制造的、40引脚双列直插式封装组建的大规模集成电路,采用单一+5V电源供电。40个引脚中有24个为与外围设备的接口。8255管脚封装如图3-8所示。
图3-8 8255管脚封装图
(1)数据总线缓冲器
这是一个三态双向缓冲器,其宽度是8位,用做8255的内部数据总线与系统中的数据总线相连时的缓冲部件。缓冲器向数据总线送出数据,或从数据总线接收数据都是CPU指令控制下进行的。
(2)读写逻辑控制
这一部件用来管理所有的数据、控制字或状态资的传送。他接收来自CPU的各种控制信号,并以此为依据,控制数据总线缓冲器数据的传送方向。与CPU相连的个引脚说明如下:
1) CS:芯片选择信号。来自地址译码器,低电平有效。
2) RD:芯片读出信号。来自系统总线,低电平有效。
3) WR:芯片写入信号。来自系统总线,低电平有效。
4) RESET复位信号。当它为高电平时,清除所有内部寄存器的内容,并将3
个数据端口PA,PB,PC置为输入方式。
5) A1,A0:端口地址选择信号。用于选择8255A的3个数据端口和1个控
制口。当A1A0为00、01、10时,分别选择数据端口PA、PB、PC;当A1A0
为11时,选择控制口。
6) Vcc、GND:电源和地线。
(3) 端口PA、PB与PC
8255A有三个与外围设备相连的端口PA,PB,PC。各端口可以独立工作,由程序控制位将它设成各种不同的工作方式。端口A,B一般用做独立的输入或输出端口,每个端口包括一个四位琐存器,分别与A口,B口配合使用,作为与外设之间的联络信号
3.3.7 74LS373芯片简介
74LS373 是一种带三态门的8D锁存器,其管脚示意图3-9所示。
其中:D0--D7为8个输入端。
Q0--Q7为8个输出端。
LE为数据打入端:
当LE为“1”时,锁存器输出状态同输入状态;
当LE由“1”变“0”时,数据打入锁存器
为输出允许端:
当=0时,三态门打开;
当=1时,三态门关闭,输出为高阻状态。
图3-9 74LS373管脚封装图
第四章 软件设计
软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由硬件和软件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。
4.1 设计要求
(1) 用单片机扩展一片8255,用12个发光二极管模拟一个十字路口的红、绿、
黄灯,并设置二个紧急放行按键;
(2) 正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮
12秒控制;
(3) 当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯
继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁
行方向为黄灯,则黄灯继续维持。
4.2主程序流程图
软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,等待外部中断,发送显示数据,以及根据所需要的功能进行相应的操作。其主流程图如图4-1所示。
开始
8255初始化
查表计数器R0置为0
调用LP1子程序
查表计数器R0置为0
调用LP2子程序
图4-1 程序主流程图
4.3 子程序流程图
主程序中共调用了两个子程序,分别为LP1和LP2,其中LP1子程序为东西方向绿灯亮9s+黄灯闪烁3s,南北方向红灯亮12s禁止通行,LP2子程序则恰好和LP1子程序功能相反,为南北方向绿灯亮9s+黄灯闪烁3s,东西方向红灯亮12s禁止通行。下面结合LP1和LP2画出两个子程序的流程图,如图4-2和图4-3所示。
开始
R2=0
调用K1子程序
K1键是否按下
是
否
R2=0
调用K2子程序
K2键是否按下
是 是
否
R0内容送入A
标志A
查表TAB1
否,转至标志B处
查表结果代表东西方向亮灯状态,送入P1口
南北方向置为红灯状态
调用XS显示子程序
数码管显示倒计时
R0自加1
R0=12
否
是
返回
图4-2 子程序LP1流程图
开始
R2=0
调用K1子程序
K1键是否按下
是
否
R2=0
调用K2子程序
K2键是否按下
否 否
否
R0内容送入A
标志B
查表TAB1
是,转至标志A处
查表结果代表南北方向亮灯状态,送入P1口
东西方向置为红灯状态
调用XS显示子程序
数码管显示倒计时
R0自加1
R0=12
否
是
返回
图4-3 子程序LP2流程图
图4-2和图4-3两个流程图中都调用了K1和K2子程序,这个两个程序为紧急放行事件处理程序,用于判断急行键按下后禁行方向的交通等状态;XS显示子程序为数码管显示倒计时程序,动态显示。其流程图如图4-4所示。
开始
R4赋值为250
R1=0
否 是
选中南北方向倒计时
显示十位的数码管
选中东西方向倒计时
显示十位的数码管
显示倒计时十位
延时1.5ms
R1=0
选中南北方向倒计时
显示个位的数码管
选中东西方向倒计时
显示个位的数码管
显示倒计时个位
延时1.5ms
结 束
R4减1=0
是 否
图4-4 XS显示子程序流程图
4.4 源程序及代码注释
ORG 0000H
SJMP ST
ORG 0030H
ST: MOV SP,#60H ;堆栈指针赋初值
MOV A,#89H ;8255控制字,PA和PB均为输出
MOV DPTR,#0FF23H ;控制口地址
MOVX @DPTR,A ;8255初始化
DIR: MOV R0,#0 ;R0为表TAB1查表计数器,初值为0
MOV R1,#0 ;R1用来指示通行状态,R1=0代表东西通行
CALL LP1 ;LP1为东西通行,南北禁止
MOV R0,#0
MOV R1,#1 ;R1=1代表南北通行
CALL LP2 ;LP2为南北通行,东西通行
SJMP DIR
LP1: JB P1.6,JIXU1 ;判断东西方向紧急放行键是否按下
CALL K1 ;调用K1子程序,处理东西方向紧急放行事件
CJNE R2,#0,JIXU4 ;若R2=0,东西通行,子程序返回后跳到JIXU2,否则
;跳到JIXU4
SJMP JIXU2
JIXU1:JB P1.7,JIXU2 ;判断南北方向紧急放行键是否按下
CALL K2 ;调用K2子程序,处理南北方向紧急放行事件
CJNE R2,#0,JIXU4 ;若R2=0,东西通行,子程序返回后跳到JIXU2,否则
;跳到JIXU4
JIXU2:MOV A,R0
MOV DPTR,#TAB1
MOVC A,@A+DPTR ;查表
MOV P1,A ;东西方向亮灯状态送入P1口
MOV P3,#0DBH ;南北方向红灯灯状态送入P3口
CALL XS ;调用XS子程序,数码管倒计时显示
INC R0
CJNE R0,#0CH,LP1 ;未到12s转LP1处
RET
LP2: JB P1.6,JIXU3 ;判断东西方向紧急放行键是否按下
CALL K1
CJNE R2,#1,JIXU2
SJMP JIXU4
JIXU3:JB P1.7,JIXU4 ;判断南北方向紧急放行键是否按下
CALL K2
CJNE R2,#1,JIXU2
JIXU4:MOV A,R0 ;南北通行,东西禁止,R1=1
MOV DPTR,#TAB1
MOVC A,@A+DPTR ;查表
MOV P3,A ;南北方向亮灯状态送入P3口
MOV P1,#0DBH ;东西方向红灯状态送入P1口
CALL XS ;调用XS2子程序,数码管倒计时显示
INC R0
CJNE R0,#0CH,LP2 ;未到12s转LP2处
RET
K1: MOV A,R0
CJNE R1,#0,SS1 ;若R1=0,此时东西通行,南北禁止
MOV R0,#0
MOV R2,#0 ;若R2=0,南北通行,子程序返回后跳到JIXU2
SJMP OVER2
SS1: MOV R2,#1 ;若R2=1,子程序返回后跳到JIXU4
SUBB A,#9 ;否则南北正在通行,再判断为红,还是为黄
JNC OVER2
MOV R0,#9
OVER2:RET
K2: MOV A,R0
CJNE R1,#1,SS2 ;若R1=1,此时南北通行,东西禁止
MOV R0,#0
MOV R2,#1 ;若R2=1,子程序返回后跳到JIXU4
SJMP OVER4
SS2: MOV R2,#0 ;若R2=0,子程序返回后跳到JIXU2
SUBB A,#9 ;否则东西正在通行,再判断为红,还是为黄
JNC OVER4
MOV R0,#9
OVER4:RET
XS: MOV R4,#250 ;数码管动态显示250次
GO1: CLR CY
CJNE R1,#0,GO2
MOV A,#0DFH ;选中一个数码管
MOV DPTR,#0FF20H ;位码送至PA口
MOVX @DPTR,A
SJMP GO3
GO2: MOV A,#0FDH ;选中数码管,倒计时十位
MOV DPTR,#0FF20H ;位码送至PA口
MOVX @DPTR,A
GO3: MOV A,#0CH ;A=14,A=N-1
SUBB A,R0 ;14-R0=倒计时显示内容,再送入A中
MOV B,#10
DIV AB ;A除以十,把A的十位,各位分开,分开后A中为
;十位,B为个位
MOV DPTR,#TAB2 ;先显示倒计时十位
MOVC A,@A+DPTR ;查表
MOV DPTR,#0FF21H ;PB口地址
MOVX @DPTR,A ;显示倒计时十位
CALL DEL ;延时
CJNE R1,#0,GO4
展开阅读全文