十字路口交通灯设计报告书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

芜湖职业技术学院十字路口交通灯设计报告书
题目:十字路口交通灯电路设计
系别:电气工程学院
专业班级:
学号:
姓名:
指导教师:
目录
摘要 (3)
目录 (2)
1 绪论 (3)
1.1道路交通控制的发展背景 (4)
1.2道路交通控制的目的和作用 (4)
2 设计方案与比较 (5)
2.1设计任务 (5)
2.2总体方案设计 (6)
2.2.1 方案比较 (6)
2.2.2方案论证与确定 (7)
3 系统原理分析 (7)
3.1工作原理简介 (7)
3.2总体方框图见图4 (8)
3.3系统电路模块分析 (8)
3.3.1 消抖电路 (8)
3.3.2 振荡、时钟电路和CPU时序 (9)
3.3.3 复位电路 (10)
3.3.4 LED驱动显示电路 (11)
3.3.5 AT89C51芯片控制电路 (14)
3.3.6 辅助电源设计 (17)
3.4程序设计 (17)
3.4.1 主程序设计 (17)
3.4.2 P0口的算法 (18)
3.4.3 程序流程图 (19)
4 元件参数设定 (21)
4.1复位元件电路选折 (22)
4.2消抖电路元件选折 (22)
5 系统调试 (22)
5.1系统的调试与故障排除 (23)
5.1.1 硬件调试 (23)
5.1.2 软件调试 (23)
5.2系统的实际效果 (23)
6 结束语 (26)
附录 (26)
DJNZ R1, DEL2 (29)
摘要
本设计主要分为三大模块:输入控制电路、时钟控制电路和显示电路。

以AT89C51单片机为中心器件来设计交通灯控制器,实现了AT89C51芯片的P0口设置红灯、绿灯和黄灯的燃亮功能;为了系统稳定可靠,采用了74LS14施密特触发器芯片的消抖电路,避免了系统因输入信号抖动产生误操作;显示时间直接通过AT89C51的P2口输出,由CD4511驱动LED数码管显示红灯燃亮时间。

关键词:AT89C51 LED显示交通灯控制
1 绪论
1.1 道路交通控制的发展背景
随着经济发展,城市化速度加快,机动车辆占有量急剧增加,由此引发出日益严重的交通问题:交通拥挤甚至堵塞,交通事故频繁,空气和噪声污染严重,公共运输系统效率下降等。

解决这一问题通常有两种办法,一种是修路造桥,这对道路交通状况的改善是一种最直接的办法,但它需要巨额的投资,且在城市中心区受拆迁的限制,很难实施.另一种是在现有的道路交通条件下,实施交通控制和管理,充分发挥现有道路的通行能力,大量事实已经证明这种方法的有效性。

通常,一个经验丰富的交通警察能在极短的时间内把一个交叉路口的交通阻塞缓解或解除,但他的作用范围往往局限于单个交叉路口。

而现代的道路交通非常复杂,常常是几个或几十个甚至是成百上千路口互相关联,在这种情况下,任何一个经验丰富的交通警察都无能为力了.因此,人们越来越关注把先进的科学技术用于交通管理,从而促进了交通自动控制技术的不断发展]1[。

1.2 道路交通控制的目的和作用
道路交通控制的目的可定义为:在确定的行政规定约束下,采用合适的营运方法来确保公共和私人运输方式具有最佳的交通运行状态。

围绕这一目的研制出的道路交通控制系统,把受控对象看成一个整体,采用对交通流科学地时间分割的方法,最大限度地保证交通流运动的连续性,使受控区域的交通流减少冲突,同时平稳地、有规则地运动]1[。

道路交通控制的作用主要表现为以下几个方面:
1)改善交通秩序,增加交通安全。

2)减少交通延误,提高经济效益。

3)降低污染程度,保护生态环境。

4)节省能源和土地消耗。

2 设计方案与比较
2.1 设计任务
下图1为本设计十字路口交通信号灯控制示意图,信号灯的动作受按键开关总体控制:
图1 十字路口交通信号灯控制示意图
1)按一下开始按键,信号灯系统开始工作,并周而复始地循环动作;
2)按一下停止按键,所有信号灯全部熄灭;
3)三基色发光管与AT89C51的连接图1所示,其中奇数口代表红色, 偶数口代表绿色,奇偶同用为黄色。

当只有奇数口输出1时,红灯亮;当只有偶数口输出1时,绿灯亮;当两个输出都为1时,黄灯亮。

4)本设计,红灯亮9S,绿灯亮5S,绿灯闪亮2S,黄灯亮2S。

具体控制要求见表1。

表1 十字路口交通信号灯控制要求
时间 9s 5s 2s 2s 时间 9s 5s 2s 2s
2.2 总体方案设计
2.2.1 方案比较
方案一
本方案主要以8031为核心,用一块74LS373锁存器 ,2764扩展片外存储器。

电路特点扩展电路复杂。

图2方案一方框图 方案二
本方案主要以AT89C51为核心,利用8255扩展I/O 口。

电路特点I/O 口总数较多。

图3方案二方框图
方案三
本电路采用AT89C51为核心,用一块CD4511译码器,一块74LS14反相器(施密特)解决按键抖动问题。

采用AT89C51芯片使电路更加智能化,可靠性高,电路成本大大下减。

用三基色发光管形象的把交通灯模拟出来,更好达到设计的效果。

电路特点系统电路简单,容易实现,不用扩展I/O 口。

提供5V 工作电压 停止 开始 复位
控制按键
8031 模拟8只发光二极管 驱动显示电路
电源 74LS373
8D 锁存器 2764片外存储器
停止 开始
复位 提供5V 工作电压
控制按键 AT89C51 扩展口 8255 交通灯模拟8只发光二极管 四方向的LED 显示
电路4*LED
电源
图4方案三方框图 2.2.2方案论证与确定 综合上述三个方案,各有特点和缺点:
方案一:采用老式的8031,其本身无内部存储器,为了扩展电路,使电路复杂化,而且无按键消抖电路,容易发生误操作,难以实现设计目的。

方案二:采用AT89C51和扩展口8255组成,电路I/O 口较多,但在本电路中造成I/O 口浪费和成本的提高。

同样无消抖电路,容易发生误操作。

方案三:采用AT89C51、CD4511译码器和74LS14施密特反相器,且用三基色发光管,本方案克服了方案一和方案二之中共同存在的容量少、无消抖、成本较高、电路复杂的问题。

系统电路不复杂,设计合理,可靠性高,较容易实现交通灯的控制。

所以,经论证和比较决定采用第三个方案更符合实际和经济。

3 系统原理分析
3.1 工作原理简介
当AT89C51上电复位后,给AT89C51置数,让四方向的红灯全亮,四方向的LED 全显示0。

进行测试,后等待开始命令。

当按下开始按钮,中断INT1非响应,并执行中断服务子程序:南北红灯亮,东西绿灯亮5S →南北红灯亮,东西绿灯闪亮2S →南北红灯亮,东西黄灯亮2S →延时1S →东西红灯亮,南北绿灯亮5S →东西红灯亮,南北绿灯闪亮2S →东西红灯亮,南北黄灯亮2S →不断循环上述过程。

LED 数
提供5V 工作电压
停止 开始 复位 控


键 硬件消抖电路74LS14 程序控制芯片 AT89C51 电源指示灯,CPU 指示灯电路 模拟交通灯发光管电路,四路方向灯。

三基色发光管4只 CD4511译码器电路
LED 数码管 12MHZ 时
钟电路 电源
码管同时倒计时显示四方向红灯亮的时间。

当有停止命令,按下SB2,INT0非响应,因为其为优先级中断,所以不管INT1非执行到任何地方都中断。

INT0非中断响应后,LED数码管与交通灯全灭,等待再次开始.
3.2 总体方框图见图4
3.3 系统电路模块分析
3.3.1 消抖电路
在单片机应用系统中,按键起到了人机对话的主要设备,用于向单片机应用系统输入数据、程序和操作命令。

当按钮按下或松开时,会向单片机CPU输入一个0电平或1电平,CPU根据接收到的0或1电平信号,决定具体的操作。

但是,在按键的按下和松开时,开关的机械触点会产生抖动,一般抖动时间是5~10ms左右,抖动的波形如图5。

在拉动期间CPU不能按收到稳定的电平而无法做出正确的判断,因此,需在对按钮进行去抖动处理。

图5按钮产生抖动的波形示意图
为了消除抖动,如图6所示,是利用反相器集成电路来实现消除抖动功能的。

当开始按钮按下时,反相器的①端为高电平,尽管按下按键会产生抖动,但由于反相器的作用,在②端产生一个稳定的低电平。

在按钮松开的过程中,由于①变为低电平,同样由于反相器的作用,在②端产生一个稳定的高电平。

停止消抖动电路原理一样。

.
R1
图6 除抖动电路原理图
74LS14芯片介绍:
74LS14 是一个6反相器,如果输入端为高电平,那么输出为低电平。

如果输入低电平,那么输出为高电平。

本电路用74LS14而不用74LS04。

74LS14与74LS04都是74系列的非门。

两者不同的是输入不一样。

74LS04输入是TTL电平,74LS14输入是施密特输入(有滞回特性)。

因为输入不一样,两个芯片的应用场合也有所不同。

74LS04多用于板内一般数据的“非”控制,而74LS14一般用于某些信号的整形或者异受干扰信号的缓冲等]3[。

大部分情况下74LS14可以替代74LS04。

3.3.2 振荡、时钟电路和CPU时序
1)振荡、时钟电路
振荡、时钟电路。

如图7所示,时钟是单片机的心脏,各部分都以时钟频率为基准,有条不紊地一拍一拍的工作。

因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

常用的时钟电路有内部时钟和外部时钟两种。

本设计利用AT89C51内部一个高增益的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。

这两个引脚外接一个石英晶体或陶瓷谐振器就可以与片内振荡器一起构成一个自激振荡器。

对外接电容的要求虽然没有严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度和温度稳定性。

对电容C4和电容C5的要求为:
石英晶体:30PF±10PF;
陶瓷谐振器:40PF±10PF。

把一个12.0MHZ晶振和两个33PF电容器组成的外部时钟振荡电路,接于
XTAL1(19脚)和XTAL2(18脚)之间。

这样振荡器发出的脉冲直接送入内部的时钟电路。

GND
图7时钟电路
2)CPU时序单位
因为单片机系统经常要控制一些外部的实时器件,这需要单片机系统提供实时的时钟信号,为了与CPU同步故必须采用同样的时钟信号。

单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。

振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。

Fosc振荡频率l2分频后形成机器周期MC。

所以,1个机器周期包含有6个状态周期或12个振荡周期。

1个到4个机器周期确定一
条指令的执
行时间,这个时间就是指令周期。

AT89C51单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。

4种时序单位中,振荡周期和机器周期是单片机内计算其它时间值(例如,波特率、定时器的定时时间等)的基本时序单位。

下面是本设计单片机外接晶振频率12MHz时的各种时序单位的大小:
振荡周期=1/fosc=1/12MHz=0.8335us
状态周期=2/fosc=2/12MHz=1.6665us
机器周期=12/fosc=12/12MHz=1us
指令周期=(1~4)机器周期=1~4us
3.3.3 复位电路
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST持续为高电平,单片机就处于循环复位状态。

本设计的AT89C51的系统时钟频率为12MHZ,那么,它的复位脉冲至
少应为2us 以上。

复位期间,ALE 、PSEN 、P0口、P1口、P2口和P3口都要保持高电平。

复位后SP=07H ,此时堆栈的栈底为07H 。

内容为00H 的特殊功能寄存器表明复位后其值被清零。

P0口、P1口、P2口、P3口这四个端口的锁存器为1,使它们为输入状态。

根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。

本设计采用了上电或开关复位。

上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。

常用的上电或开关复位电路如图8所示。

上电后,由于电容C3的充电和反相器的作用,使RST 持续一段时间的高电平。

当单片机已在运行当中时,按下复位键SB3后松开,也能使RST 为一段时间的高电平,从而实现上电或开关复位的操作。

图8开关复位电路图
3.3.4 LED 驱动显示电路
为了更加直观的显示红灯燃亮时间,本设计采用了LED 数码管显示。

这里用常用的8字型数码管,既它由8只发光管组成,管子上所显示的数字与8只LED 管的发光情况相联系。

也就是说,
我们要显示一个数据其实就是控制数码管上8只管的亮暗组合,具体显示原理下面介绍。

为了能驱动LED 电路,本系统利用CD4511BCD 码—七段码译码器,特点如下: 具有BCD 转换、消隐和锁存控制、七段译码及驱动功能的CMOS 电路,能提供较大的拉电流,可直接驱动LED 显示器。

1)CD4511集成块
VCC
VC C f g a b c d e
图9 D4511引脚图
其功能介绍如下:
BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。

LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入状态如何,七段均发亮,显示“8”。

它主要用来检测数码管是否损坏。

LE:锁定控制端,当LE=0时,允许译码输出。

LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。

A1、A2、A3、A4为8421BCD码输入端。

a、b、c、d、e、f、g为译码输出端,输出为高电平1有效。

CD4511的内部有上拉电阻,在输入端与数码管段选端接上限流电阻就可工作。

逻辑功能如下表:
表2 CD4511逻辑功能
2)LED数码管
1、LED数码管的外形如图10 所示
图10 LED数码管的外形图
2、LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形。

如 g,f,e,d,c,b,a 管脚上加上3FH,SP上显示0,不亮其余为TTL高电平,全亮则显示为8。

采用共阴极连接:LED的输入a至g与CD4511的输出a至g相连接。

3、驱动代码表
表3驱动代码表
3)本设计的数码管显示模块,用一个CD4511驱动四个数码管,四个数码管分别显示东西南北四方向的红灯燃亮的时间。

P1.0和P1.1控制数码管。

由于AT89C51单片机的I/O口输出电流只有约1.2mA,驱动能力不够,P1口输出应先接三极管的基极,放大电流后,集电极再接数码管的接地端。

电路图如下图11所示:
图11驱动数码管显示图
3.3.5 AT89C51芯片控制电路
1)AT89C51芯片简介
AT89C51是美国ATMEL公司生产的,一种带4K字节闪速可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。

单片机的可擦除只读存储器可以反复擦除100次。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,功能强大,适合于许多较复杂的控制应用场合。

AT89C51的管脚排列如图12:Array
图12 AT89C51引脚图
2)设计主要用到AT89C51的P0口、P1口、P2口、0INT (P3.2)、1INT (P3.3)、RST 、ALE 、VPP EA /、
XTAL1和XTAL2。

具体功能介绍如下:
P0.0-0.7:是漏极开路双向口,可以写为1使其状态为悬浮用作高阻输入。

P0也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线。

P1.0-1.7:是带内部上拉的双向口,向P1口写入时,P1口被内部上拉为高电平,可用作输入口。

当作为输入脚时,被外部拉低的P1口会因为内部上拉而输出电流。

P2.0-2.7:是带内部上拉的双向口,向P2口写入1时,P2口被内部上拉为高电平,可用作输入口当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流。

0INT (P3.2) :外部中断0。

1INT (P3.3) :外部中断1。

RST: 复位输入线。

当晶振在运行中,只要复位管脚至少出现2个机器周期高电平即可复位。

ALE: 地址锁存允许/编程线。

访问外部存储器时,输出脉冲锁存地址的低字节,在正常情况下,ALE 输出信号恒定为1/6 振荡频率。

并可用作外部时钟或定时,注意每次访问外部数据时一个ALE 脉冲将被忽略。

VPP EA /:片外程序存储器访问/编程器电源线。

在访问整个外部程序存储器时, EA 必须置低。

如果为高时,将执行内部程序,除非程序计数器包含大于片内FLASH 的地址]5[。

XTAL1: 反相振荡放大器输入和内部时钟发生电路输入。

XTAL2:反相振荡放大器输出。

3)为了实现设计的目的,用AT89C51控制外围电路。

P0口低四位控制四方向的红灯、绿灯和黄灯,P1控制四方向LED 数码管。

考虑到P1口输出电流小,驱动发光管电压不够,先接上拉电阻,后再驱动发光管发亮。

显示时间直接通过P2口输出到CD4511的输入端。

外部中断0和外部中断1控制单片机的停止和开始工
作。

ALE 引脚接限流电阻R6,后使发红光的二极管亮,达到显示电源和CPU 指示灯效果。

总原理图如下:
图13总原理图
在以上各部分独立设计时,考虑了各部分的可实现性,在整个系统的原理设计时具体端口功能如下 :
P0.0 南北方向绿灯控制口 P0.1 南北方向红灯控制口 P0.2 东西方向绿灯控制口 P0.3 东西方向红灯控制口 P1.0 东西LED 数码管控制口 P1.1 南北LED 数码管控制口 P2.0 CD4511 A 输入口 P2.1 CD4511 B 输入口 P2.2 CD4511 C 输入口 P2.3 CD4511 D 输入口
.
.
3.3.6 辅助电源设计
硬件要工作,要有电源供电。

本设计用到+5V 电源。

具体电路用到整流桥和
7805稳压器等。

图14 电源设计图
3.4 程序设计
硬件系统作为实体,为单片机工作提供了基础和条件,但要使单片机有效工作,还必须有软件配合。

概括地说,计算机的软件系统包括系统软件、应用软件和程序设计语言三部分。

但单片机由于硬件支持和需要所限,为特定应用而设计的软件不明显区分系统软件和应用软件,而是把两者结合起来,只是程序设计时采用模块化设计,使软件系统设计方便,有易于维护。

3.4.1 主程序设计
本设计用到AT89C51单片机的两个外部中断源(0INT 和1INT ),1INT 是开始控制,0INT 是停止控制。

主程序开始先进行初始化。

程序主要设计如下:
ORG 0000H AJMP MAIN ORG 0003H
AJMP INT_A ;外部中断0入口 ORG 0013H
AJMP INT_B ;外部中断1入口
~220V .
ORG 0030H
MAIN: MOV A, #0FAH ;所有方向红灯
MOV P0,A
MOV A,#00H ;四方向同时为“0”
MOV P2, A
CLR P1.0 ;位选东西、南北LED
CLR P1.1
SETB EA ;开中断打开
CLR IT0 ;低电平触发有效
CLR IT1 ;低电平触发有效
SETB EX0 ;外部0中断开放
SETB EX1 ;外部1中断开放
SETB PX0 ;外部0停止优先中断
3.4.2 P0口的算法
P0口输出控制三基色发光管,实现对模拟的交通灯的控制。

P0口的具体控制为:南北红灯亮,东西绿灯亮5S→南北红灯亮,东西绿灯闪亮2S→南北红灯亮,东西黄灯亮2S→东西红灯亮,南北绿灯亮5S→东西红灯亮,南北绿灯闪亮2S→东西红灯亮,南北黄灯亮2S。

具体字节算法如下:
表4 P0口的字节表
3.4.3 程序流程图
1)主程序流程图:
2S
2S
F2
南北红灯亮
东西绿灯闪
南北红灯亮
东西绿灯灭
F6
南北红灯亮
东西绿灯亮 2S
2S
FE
南北红灯亮
东西黄灯亮
南北时间
东西 时间 P0口
字节
状态
东西禁止通行,南北可以通行
5S
5S
F9
南北红灯亮
东西绿灯亮
2S
2S
F8
南北红灯亮
东西绿灯闪
南北红灯亮 东西绿灯灭
F9
南北红灯亮 东西绿灯亮
2S
2S
FB
南北红灯亮
东西黄灯亮
开始
P0口 红灯 全 亮,LED 全显示0
外部开中段
等待
外部中断1子程序
外部中断0子程序
图15主程序流程图
2)外部中断1程序流程图:
外部中断1子程序
图3.3-4 INTO程序
图16外部中断1流程图
4 元件参数设定
4.1 复位元件电路选折
AT89C51在通电后要可靠复位,必须在RESET 端出现一定宽度的正脉冲。

正脉冲保持在10ms 以上方可。

当采用12MHZ 的晶振时,复位电路元件R5与C3的求法如下:
T 的公式:T ≥R5*C3,令R5=10K ,则C3≥
6R T =K
ms 1010=10uF 。

所以复位电路的R5取10K,C3取10uF 。

4.2 消抖电路元件选折
只要按下按键的时间大于2个机器周期,AT89C51就能读取正确的信号。

当采用12MHZ 的晶振时,本电路的时钟周期OSC T =1/fosc 时:
按下时间T 2≥(24/fosc=2us )。

根据τ≥C R =10ms ,所以取电阻R1=R3=1K 、R2=R4=10K 、C1=C2=1uF 。

5 系统调试
5.1 系统的调试与故障排除
5.1.1 硬件调试
利用电压法测量各连线是否正常,有无短路现象。

在硬件系统成型后,上电后通过测量单片机各管脚的电压,发现CPU能否正常运行上电复位工作正常。

三个按键能否分别实现开始、停止和复位的功能。

给单片机P0与P2口加在不同的电平,会有不同的状态,说明硬件系统正常。

在调试硬件的过程中,我碰到如下问题:
1)通电后,LED数码管部分亮,有个数码管存在乱码现象。

通过反复检查,原来是铜线布的过密,有些铜线引起短路。

2)通电后,有些灯管不亮。

通过交流毫伏表检查,发现是有个灯管引脚接反,有个无接地。

3)通电后,开始按键和停止按键,按下无反应。

通过检查,发现停止按键的有个引脚没接电源和同开始按键相接的极性电容接反了。

经过思考问题和反复调试,最终把以上问题解决了,达到设计的目的。

5.1.2 软件调试
在硬件的基础上,装上AT89C51单片机进行软硬调制,对编写好的程序不断的进行测试,以达到最佳的状态。

在WAVE6000软件上,经过反复修改,达到设计目的,程序调试如下:
5.2 系统的实际效果
1)能实现表1功能。

2)能实现9S倒计时显示功能,同时还有电源和CPU指示灯效果。

3)能实现复位,开始,停止功能。

6 结束语
本系统功能设计完善,采用AT89C51单片机为核心,具有实用,方便,灵活的特点。

随着电子技术的广泛应用,车辆日益增多将成为一种发展趋势,所以要有一套安全可靠的交通指示灯。

本电路在原来的模拟交通灯上,引进了红灯时间数字显示,克服了人们在等待时的心急的心情。

减少了红灯未灭,闯红灯的现象。

本设计软件和硬件相结合,有相当大的难度,同时也有很大的实用性。

在本设计中,我熟练掌握了单片机硬件设计和接口技术,同时AT89C51芯片、译码器、LM7805电源等电路有了一定的了解,掌握了各种集成电路及其相关元器件的使用。

附录
主程序:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT_A
ORG 0013H
AJMP INT_B
ORG 0030H
MAIN: MOV A, #0FAH ;所有方向红灯亮
MOV P0,A
MOV A, #00H ;四方向同时为“0”
MOV P2, A
CLR P1.0 ;位选东西、南北LED
CLR P1.1
SETB EA ;开中断打开
CLR IT0 ;电平触发有效
CLR IT1 ;电平触发有效
SETB EX0 ;外部0中断开放
SETB EX1 ;外部1中断开放
SETB PX0 ;外部0停止优先中断INT0中断停止子程序:
INT_A: MOV A,#00H ;四方向灯全灭
MOV P0,A
SETB P1.0 ;LED灭
SETB P1.1
RETI
INT1中断开始子程序:
INT_B: MOV A,#0F6H ;南北红灯亮,东西绿灯亮MOV P0, A
MOV R5,#09H ;显示9S置数
MOV A, R5
MOV P2, A ;送P2口
CLR P1.1 ;位选南北LED
SETB P1.0 ;不选东西LED
DIY : MOV 40H, #0AH ;绿灯5S程序
LCALL DEL
DEC R5
MOV A, R5
MOV P2, A ;送P2口显示
CJNE R5,#04H,DIY ;判断绿灯是否亮5S
DIY1: MOV A,#0F2H ;南北红灯亮,东西绿灯灭MOV P0, A
MOV 40H,#05H ;0.5S的延时
LCALL DEL
MOV A,#0F6H ;南北红灯亮,东西绿灯亮
MOV P0, A
MOV 40H,#05H ;0.5S的延时
LCALL DEL ;绿灯一灭一亮,1S闪一次
DEC R5
MOV A, R5
MOV P2, A
CJNE R5, #02H, DIY1
DIY2: MOV A1,#0FEH ;南北红灯亮,东西黄灯亮 MOV P0, A
MOV 40H, #0AH
LCALL DEL
DEC R5
MOV A, R5
MOV P2, A
CJNE R5, #00H, DIY2
MOV A,#0F9H ;东西红灯亮,南北绿灯亮
MOV P0, A
MOV R5,#09H ;显示9S置数
MOV A, R5
MOV P2 , A ;P2口
SETB P1.1
CLR P1.0 ;位选东西LED
DIY3: MOV 40H,#0AH ;绿灯亮5S程序
LCALL DEL
DEC R5
MOV A, R5
MOV P2, A
CJNE R5, #04H, DIY3
DIY4 : MOV A,#0F8H ;东西红灯亮,南北绿灯灭MOV P0, A
MOV 40H,#05H ;0.5S的延时
LCALL DEL
MOV A,#0F9H ;东西红灯亮,南北绿灯亮
MOV P0, A
MOV 40H,#05H ;0.5S的延时
LCALL DEL
DEC R5 ;绿灯一灭一亮,1S闪一次
MOV A, R5
MOV P2,A ;选P2口显示
CJNE R5, #02H
DIY5: MOV A,#0FBH ;东西红灯亮,南北黄灯亮MOV P0, A
MOV 40H, #0AH
LCALL DEL
DEC R5
MOV A, R5
MOV P2, A
CJNE R5, #00H, DIY5
SJMP INT_B
RETI
DEL : MOV R0,40H ;1S、0.5S的子程
DEL3: MOV R1,#64H ;0.1S循环值
DEL2: MOV R2,#7DH ;1ms循环值
DEL1: NOP
NOP
DJNZ R2, DEL1
DJNZ R1, DEL2
DJNZ R0, DEL3
RET
END。

相关文档
最新文档