1、扬州大学本科生毕业设计(论文)论文题目:基于单片机的交通信号控制系统目 录 摘要.2关键词.2第1章 单片机概述 .5第2章 方案论证.62.1 对系统功能的要求.6 2.2 方案选取.6第3章 相关电子器件介绍.83.1 双极型晶体三极管.8 3.2 LED七段数码管显示器.8 第4章 控制器AT89C51的功能特征.104.1 引脚说明.10 4.2 复位电路.11 4.3 芯片擦除.11 4.4 振荡器特征.12 4.5 主要性能.13 4.6 主要特性.13第5章 计时交通灯系统的设计.145.1 硬件系统设计.145.2 软件系统设计.17第6章 检测与调试.24 第7章 心得体会.
2、25 附录.261 参考文献.262 元器件清单.26 第1章 单片机概述单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种。单片微型计算机简称单片机,特别适合应用于控制领域。 通常单片机由单块集成电路芯片构成,内部包含计算机的基本功能部件:CPU、存储器、I/O接口电路、定时/计数器、串行口等。因此,单片机只需要在适当的软件及外部设备相结合,便可成为一个单片机控制系统。MSC-51系列单片机是英特尔公司于1980年起推出的第二代产品。与8084相比,8051的硬件结构和指令系统均有很大改进,可支持更大的存贮空间,扩充了更多的硬件功能I/O功能,速度提高了2- 5倍,
3、可完成逻辑运算等。近年来推出的一些增强的MSC-51系统单片机,片内还集成了许多特殊功能单元,只需要加一些扩展电路及必要的通道接口即可构成各种计算机应用系统。因此,MSC-51系统单片机在智能仪表、智能接口、功能模块等领域得到了非常广泛的应用。 主要技术特性: 1.适于控制应用的8位CPU。 2.扩展的逻辑处理能力。 3.64KB程序存贮器空间和64KB数据存贮器空间。 4.4KB片内程序存贮器。 5.128B片内数据RAM。 6.32根双向和可单独寻址的输入输出线。7.2个16位定时/计数器,片内时钟发生器。 8.全双工异步发送/接收器。 9.6源5向量中断结构,具有两个优先级。图1.1 8
4、051引脚图单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种。单片微型计算机简称单片机,特别适合应用于控制领域。 通常单片机由单块集成电路芯片构成,内部包含计算机的基本功能部件:中央处理器 CPU,存储器 I/O 接口电路等。因此,单片机只需要在适当的软件及外部设备相结合,便可成为一个单片机控制系统。 由于单片机是把微型计算机主要部件都集成在一块芯片上,即一块芯片就是一个微型计算机。因此,单片机具有以下特点: 1.控制功能强。为了满足工业控制要求,单片机系统的指令系统中均有极其丰富条件分支转移指令,较强的 I/O 逻辑操作及位处理功能,因而其控制灵活,方便,容易满足
5、工业控制的要求。 2.抗干扰能力强,可靠性好。单片机集成度高,体积小,内部采用总线结构,减少了芯片间内部之间的连线, 大大提高了单片机可靠性和抗干扰能力,适宜于恶劣环境下工作。 3.性能价格比高。单片机功能丰富,价格仅为 530 元。 4.易扩展。片内具有计算机正常运行所必须的部件,片外有许多供扩展使用的三总线并行,串行输入输出管脚,很容易构成各种规模的应用系统。 5.低功耗,低电压。一般单片机的功耗仅为 20100mW,电压为 26V,便于生产便携式产品。 第2章 方案论证随着人民的生活水平不断的提高,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重
6、要问题之一。优越舒适的生活环境时刻吸引着收入不断增加的人群,导致城市机动车量的不断增加,而城市道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。为此,本文就城乡交通信号灯的电路原理、设计计算和实验调试等问题来进行具体分析讨论。 2.1对控制系统的要求 主支线路口的交通信号灯:主干道为南北两道,支干道为东西两道。正常情况下主干道绿灯亮18秒,支干道红灯亮20秒,主干道绿灯亮完后
7、转为黄灯亮(闪烁亮)为2秒,黄灯亮完后转为红灯亮18秒,同时支干道有红灯转为绿灯亮16秒。支干道绿灯亮完后转为黄灯(闪烁亮)为2秒,黄灯亮完后转为红灯亮20秒,同时主干道转为绿灯亮18秒。有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间可认为控制,急救车通过后,交通恢复正常。对主干道设置强制通行控制,视主干道交通拥挤状况,可临时安排主干道的通行,以保证交通的畅通。2.2 方案选取 方案一 运用电子电路设计。该方案主要用到了状态控制器,状态译码器,秒信号发生器,减法计数器等。状态控制器主要用于记录十字路口交通灯的工作状态,通过状态译码器分别点亮相应状态的信号灯。秒信
8、号发生器产生整个定时系统的时基脉冲,通过减法计数器完成状态转换,同时,状态译码器根据系统下一个工作状态,决定计数器下一次减法计数的初始值。减法计数器的状态由BCD码译码器译码、数码管显示。在黄灯亮其间,状态译码器将秒脉冲引入黄灯控制电路,使黄灯闪烁。 状态控制器主要采用二位二进制计数器。状态译码器的红黄绿灯的状态主要取决于状态控制器的输出状态,他们之间的关系见真值表,对于信号灯的状态,“1”表示灯亮,“0”表示灯灭。表2.1 真值表状态控制器输出 主干道信号灯 支干道信号灯 Q2 Q1 R(红) Y(黄)G(绿)r(红)y(黄) g(绿) 0 0 0 0 1 1 0 0 0 1 0 1 0 1
9、 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 现选择半导体发光二极管模拟交通灯,由于门电路的带灌电流的能力一般比带拉电流的能力强,要求门电路输出低电平时点亮相应的发光二极管。当黄灯亮时,红灯按1HZ的频率闪烁。从状态译码器真值表中看出,黄灯亮时,Q1为高电平,而红灯亮信号与Q1无关。现利用Q1信号去控制一个三态门电路74LS245(或模拟开关),当Q1为高电平时,将秒信号脉冲引到驱动红灯得与非门输入端,使红灯在其黄灯亮其闪烁;反之将其隔离,红灯信号不受黄灯信号得影响 。 产生秒信号的电路有多种形式,该设计是利用555定时器组成得秒信号发生器。对于该控制系统的调试,比
10、较复杂,首先调试秒信号发生器,用示波器监视秒信号发生器的输出,调节电位器RW,使输出信号的周期为1S。直接将秒信号引入状态控制器脉冲输入端,在脉冲作用下,模拟三色信号灯。将秒信号引入定时系统电路脉冲输入端,在秒脉作用下,将三个74LS245的值数选通端以此接地,计数器三个不同的置数输出为进制体制完成减法计数,两位数码管应有相应的显示。把各个单元电路互相连接起来,进行系统连调。 方案二 单片机控制系统。如用8位单片机AT89C51为控制器,组成交通信号灯系统。利用单片机的I/O口来完成信号的输入和转换,最终的显示结果通过LED数码管显示出来,另外设置两个按钮来进行交通路口的应急处理及主干道强制通
11、行处理。 硬件方面利用AT89C51的一个I/O口(P1口)驱动黄绿红灯,本装置用发光二极管来代替交通灯。考虑到简化驱动电路,6个LED发光管直接通过P1口灌电流的方式驱动。4个LED数码管采用共阳、动态显示的方式,字型口串联限流电阻510欧姆接到P0口,字位口通过4个PNP的三极管驱动并控制,用于动态扫描,分别通过P2.0P2.3控制。计时方面以秒作为基本计时单位,可用AT89C51的定时、计数器来实现。交通路口应急处理及主干道强制通行处理,可利用中断方式响应。红绿灯亮灭时间的控制及闪烁方式的控制,完全可通过程序方式实现。本方案用单次脉冲申请中断,表示有急救车通过。编制中断处理程序要注意的问
12、题是:保护进入中断时的状态(保护现场),并在退出中断之前恢复进入时的状态(恢复现场)。由以上两个方案相比较可以看出,利用单片机AT89C51所设计的交通灯比利用电子电路所设计的交通灯具有明显的优越性。利用AT89C51单片机控制的硬件电路比较简单,软件方面程序也不复杂。因此制作的原理简单,但功能作用并不低于电子电路设计的,方便小巧又通俗易懂。因此,我选择利用单片机来控制交通灯。第3章 相关电子器件介绍 3.1 双极型晶体三极管半导体三极管也称晶体三极管,是电子电路中重要的部分。它最主要的功能是电流放大和开关作用。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,
13、共用的一个电极成为三极管的基极。其他两个电极成为集电极和发射极。 三极管最基本的作用是放大作用,它可以把微弱的电信号转换成一定的强度的信号。三极管有一种重要参数就是电流放大倍数。 当三极管应用于开关状态时,必须保证导通时三极管处于饱和,其发射极、集电极正偏;断开时三极管处于截止,其发射极、集电极反偏。 3.2 LED七段数码管显示器 发光二极管LED是一种通电后能发光的半导体器件,其导电性质与普通二极管类似。LED数码显示管就是由发光二极管组合而成的一种新型显示器件,在单片机系统中应用非常普遍。它使用了8个LED发光二极管,其中7个显示字符,1个显示小数点,故通常称之为7段发光二极管数码显示器
14、。 为了显示字符,要为 LED显示器提供段码(或称字形代码),组成一个“8”字形的7段,再加上1个小数点位,共计8段,因此提供给LED显示的段码为1个字节。各段码位的对应关系如下:段码位 D7 D6 D5 D4 D3 D2 D1 D0 显示段 dp g f e d c b a 表格3.1 各段码位的对应关系用LED显示十六进制数和空白字符与P的显示段码如图:字型 共阳极段码 字型 共阳极段码 0 C0H 9 90H 1 F9H A 88H 2 A4H b 83H 3 B0H C C6H 4 99H d A1H 5 92H E 86H 6 82H F 84H 7 F8H 空白 FFH 8 80H
15、 P 8CH 表格3.2 显示段码LED数码显示器是1种由LED发光二极管组合显示字符的显示器件,它使用了8个LED发光二极管。 LED数码显示器有两种连接方法: 共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5 V, 每个发光二极管的阴极通过电阻与输入端相连。当阳极端输入低电平时,段发光二极管就导通点亮,而输入高电平时则不点亮。 共阳极 显示段码图3.1 LED数码显示器的显示段码LED数码管显示电路:该显示电路由7段共阳数码管,限流电阻,三极管,基极电阻,P0口,P2口等组成。P0口通过与8个510电阻与数码管的8个数据位相连,送显示数码。电阻即可起到限流作用,又可
16、起到上拉电阻的作用。P2口的P2.0P2.3通过4个4.7k的电阻和4个三极管与4个7段数码管相连,起位选的作用。第4章 控制器AT89C51的功能特征 4.1 引脚说明图4.1 引脚图VCC:供电电压。 GND:接地。 P0口:8位双向I/O口。在访问外部存储器时,P0口用于分时传送低8位地址(地址总线)和8位数据信号(数据总线)。P0口能驱动8个LSTTL门。在不接外ROM和外RAM时,P0口可做双向I/O口用。P1口:P1口是一个内部提供上拉电阻的8位准双向I/O口,P1口负载能力为4个LSTTL门。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,
17、这是由于内部上拉的缘故。P2口:8位准双向I/O口。在访问外部存储器时,P2口用于传送高8位地址。P2口负载能力为4个LSTTL门。 P3口:8位准双向I/O口。可做一般I/O口用,同时P3口每一引脚还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。P3口第二功能如下。 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 (外部数据存储器读选通
18、) P3口负载能力为4个LSTTL门。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE、/PROG:正常使用为ALE功能,用来锁存P0口送出的低8位地址。P0口一般分时传送低8位地址还是8位数据地址呢?当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是8位数据信号。通常在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。需要指出的是,当CPU不执行访问外RAM指令(MOVX)时,ALE以时钟振荡频率1/6的固定速率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。但是,当CPU执行MOVX指令时,ALE将跳
19、过一个ALE脉冲。ALE端可驱动8个LSTTL门电路。/PROG在固化片内存储器的程序(也称为“烧录程序”)时,此引脚用于输入编程脉冲,此时为低电平有效。/PSEN:外ROM的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外RAM或内ROM时,这两次有效的/PSEN信号将不出现。 /EA、VPP:正常工作时,/EA为内外ROM选择端。MCS-51型单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外。当/EA保持高电平时,先访问内ROM,但当PC(程序计数器)值超过4KB时,将自动转向执行外ROM中的程序。当/EA保持低电平时,则只访问外ROM,不管
20、芯片内有否内ROM。对80C31芯片,片内无ROM,因此/EA必须接地。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。4.2 复位电路 按键复位:与AT89C51的RESET脚相连,复位电路如图:图4.2 复位电路图在加电的瞬间,电容通过电阻充电,就在RST端出现一定宽度的高电平,根据时间长数=RC,设置R和C的大小使20ms就可以使单片机有效的复位。此复位电路在程序运行期间还可以手动复位,即按住开关键S1。 4.3 芯片擦除 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦除操作
21、中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 4.4 振荡器特性 MCS51单片机内部的振荡电路是一个到增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。单片机内部虽然有震荡电路,但要形成时钟,外
22、部还需要附加电路。石英振荡和陶瓷振荡均可采用。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。51单片机的时钟产生方式有两种,分别为:内部时钟方式和外部时钟方式。利用其内部的震荡电路XTAL1和XTAL2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2输出的时钟信号。在MCS51单片机一般常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体震荡器与电容构成稳定的自激震荡器,如下图: 图4.3 内部时钟方式晶体和电容决定了单片机的工作时间精度为1微秒。晶体可在1.2-12MHz之间选择。MC
23、S-51单片机在通常应用情况下,使用震荡频率为6MHz的石英晶体,而12MHz频率的警惕主要是在高速串行通信情况下才使用,在这里我用的是6MHz石英晶体。对电容无严格要求,但它在取直对震荡频率输出的稳定性、大小及震荡电路起震荡速度有一点影响。C1和C2可在20-100pF之间取,一般情况取30pF。外部时钟方式是把外部震荡信号源直接接入XTAL1或XTAL2。由于XTAL2的逻辑电平不是TTL的,所以还要接一个上拉电阻。 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。4.5 主要性能
24、 和MCS-51产品兼容; 8KB可重编程FLASH存储器(1000次); 2.76V电压范围; 全静态工作:0Hz-24KHz 2级程序存储器保密锁定 128*8位内部RAM 15条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 直接LED驱动输出 片内振荡器和时钟电路 片内模拟比较器 4.6 主要特性 8KB字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0Hz-24kHz 三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 第5章
25、 计时交通灯系统的设计5.1 硬件系统设计 5.1.1硬件框图图5.1 硬件框图原理图各部分作用: 复位电路:RC构成微分电路,在接电瞬间,产生一个微分脉冲。按下复位按钮,就可以使电路重新开始工作。 按键:即复位按键。红绿灯显示:通过二进制数的输出来变换的,使得红绿灯接收显示不同的信号,已达到此次设计的目的。 段码控制输出:通过P0口与LED数码管显示器相连接,来控制段码的输出。(1). AT89C51硬件资源的分配电路采用的内部振荡器方式,晶体振荡频率为MHz,具有较高的频率稳定性,且延时采用数字计数的方式进行,因而对时间的控制精度较高,可有效的控制延时。 初始加电时,显示初态,但按下复位开
26、关,可以控制交通灯的显示。 本电路的外接电源可用V直流电流电源,也可将交流电压转变为直流电,简单方便。使用中应谨慎,避免硬件设施被烧坏。 本例中使用了INT0中断,一般中断处理程序进入时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器。本例的INT0程序中应保护PSW,ACC等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。 本设计中交通信号灯LED0LED5与P1.0P1.5连接。 硬件方面利用AT89C51的P1口直接驱动黄绿红灯,用P0口控制字型口,七段数码管为共阳极。(2). 紧急按钮电路及参数选择按下S1键,处于紧急控制状态,东西南北向
27、红灯亮,禁止车辆通行。 松开键恢复原先工作状态。按下是S0键,处于强行通行状态,人为允许主干道通行禁止次干道车辆流通。松开S0键,恢复原先工作状态。按键的上拉电阻选用10k。图5.2 按键电路图(3)驱动电路及参数计算图5.3 驱动电路图实际用的稳压源U=5V,PNP型三极管发射极-基极的正向压降为0.3V,P2口输出低电平时(为0.5V),为保证三极管处于饱和状态,取基极电流为1mA,则基极电阻 R=(5-0.3-0.5)/0.001=4.2k,实取4.7k。(4). LED显示电路及参数计算本设计中交通信号灯LED0LED5与P1.0P1.5连接,显示倒计时时间。LED的正常工作电流I=5
28、10mA我们实际用的稳压源为U=5伏,管压降为1.52V,所以 R=(5-2)/0.01=300如果电路中电阻太小,会烧坏LED;电阻太大,LED的亮度不够,经过老师的推荐,电路中实际应用的电阻值是510 5.1.2 电路原理图根据以上设计计算,得到电路原理图如下。图5.4 电路原理图5.2 软件系统设计5.2.1 51系列汇编语言(1).汇编语言 用户要使用计算机能完成各式各样的任务,就要设计各种相应的应用程序,而设计程序就要用到程序设计语言。程序设计语言有3种:机器语言,汇编语言和高级语言。本次设计所采用的是汇编语言。所谓汇编语言,是指用指令的助记符符号地址,标号,伪指令等符号书写程序的语
29、言。 (2)汇编程序用这种汇编语言书写的程序称为汇编语言源程序或称源程序。把汇编语言源程序翻译成在机器上能执行的机器语言程序(目的代码程序)的过程叫做汇编,完成汇编过程的系统程序称为汇编程序。 汇编程序在对源程序进行汇编过程中,除了将源程序翻译成目的代码外,还能给出源程序书写过程中所出现的语法错误信息,如非法格式,未定义的助记符,标号,漏掉操作数等。另外,汇编程序还可以根据用户要求,自动分配各类存储区域(如程序区,数据区,暂存区等),自动进行各种进位制数至二进制数的转换,自动进行字符至 ASCII 码转换及计算表达式的值等。 完成汇编工作有两种途径:一种是人工汇编;一种是机器汇编。对于量小,简
30、单的程序,程序员经过查指令系统表,将汇编源程序逐条翻译成机器代码,完成手工汇编,再从单片机开发装置的键盘上输入目标程序进行调试,运行;而对于量大较复杂的程序,翻译过程可采用计算机系统软件汇编程序完成,即机器汇编。 汇编程序是将汇编源程序转变为目标程序的翻译程序。由于指令助记符与机器语言指令一一对应的等价关系所以汇编程序能很容易将汇编源程序迅速,准确,有效地翻译成目标程序。此外,汇编程序的功能还有:根据程序员的要求,自动地编排目标程序中指令的存放地址,分配存储空间,自动地对源程序进行检查,分析其语法,若有错误,给出错误信息等等。汇编程序的运行一般是借助于通用微型计算机(PC 机)来完成的,它利用
31、PC机的串行口与单片机开发装置进行通讯,把汇编成的目标程序传送到单片机开发装置中去调试,执行。这种方式也称之为交叉汇编。它效率高,不易出错。5.2.2 交通信号灯状态转换表状态持续时间紧急按钮解除南北线东西线控制码绿灯黄灯红灯绿灯黄灯红灯P3.2P3.3P1.5P1.4P1.3P1.2P1.1P1.0118S无效无效灭灭亮亮灭灭11110011B22S无效无效灭灭亮灭闪亮灭111101X1B316S无效无效亮灭灭灭灭亮11011110B42S无效无效灭闪亮灭灭灭亮111X1110B518S无效无效灭灭亮亮灭灭11110011B紧急不定点按无效灭灭亮灭灭亮11110110B解除无无效点按记忆记忆
32、记忆记忆记忆记忆恢复到原状态表格5.1 交通信号灯状态转换表5.2.3 程序框图 本案采用结构化程序设计。主程序尽可能简洁,广泛使用子程序和循环结构,并利用了中断资源。本设计使用了T0中断,T0中断完成两个功能,一是进行秒定时,二是对应急处理按键进行检测,以便及时响应。一般中断处理程序进入时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器。本设计的T0中断程序中应保护PSW,ACC及相关寄存器等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。根据以上软硬件资源的利用情况,制定出程序框图如下。 主程序框图:开始定时计数设定开外中断初始状态东西绿灯亮
33、,南北红灯亮,延时18秒东西黄灯亮,南北红灯亮,延时2秒东西红灯亮,南北绿灯亮,延时13秒东西红灯亮,南北黄灯亮,延时2秒图5.5 主程序图中断框图: T0中断T0赋初值进行10ms计时紧急情况按钮S1键按下否?流通按钮S0按下N10ms计时器+1时间累计1S定时计数-1显示子程序中断返回停止T0计数,保护P1口状态主干绿灯亮,支干红灯亮S0开?数码管静态显示恢复P1口,启动T0中断返回YYN停止T0中断,保护P1口状态红灯全亮,停止通行解决紧急状态按钮S1松开否?数码管静态显示恢复P1口,启动T0中断返回YNYN图5.6 中断框图5.2.4 汇编语言源程序(1). 有关参数计算本设计T0定时
34、时间为10毫秒,计满10毫秒就响应一次中断,计满100次刚好为一秒。T0定时器采用工作方式1,为16位计数器,晶振频率为6MHz(12MHz),则机器周期为: 126MHz = 2微秒(1us)定时值为10毫秒,计数值为100002=5000(100001=10000)初值X0=M-计数值=655365000=60536=EC78H(X0=65536-10000=55536=D8F0H)根据16位定时器的特性,初值应为;TH0=0ECH(0D8H),TL0=78H(0F0H)(2). 源程序 ORG 0000H AJMP MAIN ;转主程序 ORG 000BH AJMP T0_INT;转定时
35、器T0服务子程序ORG 0030H MAIN: MOV SP, #50H MOV TMOD, #01H ;T0,定时方式1 MOV TL0, #78H ;定时 10ms,晶振6MHZ MOV TH0, #0ECH SETB EA ;开总中断 SETB ET0 ;允许T0中断SETB TR0 ;启动定时器 MOV R3,#64H ;设定中断次数 LOP: MOV R4, #18 MOV R5, #20 LOP0: MOV P1,#0F3H ;东西绿灯亮,南北红灯亮 ACALL RIS CJNE R4,#00H,LOP0 MOV R4,#02 LOP1: MOV P1,#0F5H ;东西黄灯亮,南
36、北红灯亮 ACALL RIS CJNE R4,#00H,LOP1MOV R4, #18 MOV R5, #16 LOP2: MOV P1,#0DEH ;东西红灯亮,南北绿灯亮 ACALL RIS CJNE R5,#00H,LOP2 MOV R5,#02LOP3:MOVP1,#0EEH ;东西红灯亮,南北黄灯亮 ACALL RIS CJNE R5,#00H,LOP3 AJMP LOPT0_INT: MOV TL0,#78H ;定时器0中断子程序 MOV TH0,#0ECH JNB P3.2,T02 ;判断紧急按钮是否有效JNB P3.3,T03 DJNZ R3,TTT MOV R3,#64H D
37、EC R4 DEC R5TTT:RETI ;中断子程序返回T02: CLR TR0 ;紧急状态处理子程序PUSH P1 ;保护当前状态PINT0: MOV P1,#0F6H ;送紧急状态控制码PN0: JB P3.2,PN2 ;查验是否解除紧急状态PN1: ACALL RIS ;调用显示子程序,使显示器静止显示SJMP PN0PN2: POPP1 ;恢复紧急状态前的状态 SETB TR0;再次启动定时器RETI T03: CLR TR0 PUSH P1SINT0: MOV P1,0F3HSN0: JB P3.3,SN2SN1: ACALL RISSJMP SN0 SN2: POP P1SETB TR0 RETI RIS: MOV A,R4 ;显示子程序 MOV B,#OAH DIV AB MOV R6,#0FFH MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P2.0DS1: DJNZ R6,DS1 SETB P2.0MOV R6,#0FFH MOV A,B MOVC A,A+DPTR MOV P0,A CLR P2.1 DS2: DJNZ R6,DS2 SETB P2.1MOV A,R5 MOV B,#0AH DIV AB MOV R6,#0FFH