交通灯控制电路设计(共32页).doc
精选优质文档-倾情为你奉上交通灯控制电路设计作者姓名:2B专业名称:测控技术与仪器指导教师:2B 讲师摘要 本设计主要分为三大模块:输入控制电路、时钟控制电路和显示电路。以AT89C51单片机为中心器件来设计交通灯控制器,实现了AT89C51芯片的P0口设置红灯、绿灯和黄灯的燃亮功能;为了系统稳定可靠,采用了74LS14施密特触发器芯片的消抖电路,避免了系统因输入信号抖动产生误操作;显示时间直接通过AT89C51的P2口输出,由CD4511驱动LED数码管显示红灯燃亮时间。关键词:AT89C51 LED显示 交通灯 控制AbstractThis design mainly divided into three modules: input control circuit, control circuit and the clock display circuit. With AT89C51 single-chip microcomputer as the center device to designing traffic light controller, realize the AT89C51 chip P0 mouth red lights, a green light and set up the yellow lights brighten function; In order to system is stable and reliable, and USES 74 LS14 Schmitt toggle circuit chip away shaking, to avoid the system for the input signal jitter produce false operation; Show time directly through the P2 mouth AT89C51 output, driven by CD4511 LED digital display red light lit the time.Keywords: AT89C51, LED, display, traffic, control 目录专心-专注-专业1 绪论1.1 道路交通控制的发展背景随着经济发展,城市化速度加快,机动车辆占有量急剧增加,由此引发出日益严重的交通问题:交通拥挤甚至堵塞,交通事故频繁,空气和噪声污染严重,公共运输系统效率下降等。解决这一问题通常有两种办法,一种是修路造桥,这对道路交通状况的改善是一种最直接的办法,但它需要巨额的投资,且在城市中心区受拆迁的限制,很难实施另一种是在现有的道路交通条件下,实施交通控制和管理,充分发挥现有道路的通行能力,大量事实已经证明这种方法的有效性。通常,一个经验丰富的交通警察能在极短的时间内把一个交叉路口的交通阻塞缓解或解除,但他的作用范围往往局限于单个交叉路口。而现代的道路交通非常复杂,常常是几个或几十个甚至是成百上千路口互相关联,在这种情况下,任何一个经验丰富的交通警察都无能为力了因此,人们越来越关注把先进的科学技术用于交通管理,从而促进了交通自动控制技术的不断发展。1.2 道路交通控制的目的和作用道路交通控制的目的可定义为:在确定的行政规定约束下,采用合适的营运方法来确保公共和私人运输方式具有最佳的交通运行状态。围绕这一目的研制出的道路交通控制系统,把受控对象看成一个整体,采用对交通流科学地时间分割的方法,最大限度地保证交通流运动的连续性,使受控区域的交通流减少冲突,同时平稳地、有规则地运动。道路交通控制的作用主要表现为以下几个方面:1)改善交通秩序,增加交通安全。 2)减少交通延误,提高经济效益。 3)降低污染程度,保护生态环境。4)节省能源和土地消耗。2 设计方案与比较2.1 设计任务下图1为本设计十字路口交通信号灯控制示意图,信号灯的动作受按键开关总体控制: 图1 十字路口交通信号灯控制示意图1)按一下开始按键,信号灯系统开始工作,并周而复始地循环动作;2)按一下停止按键,所有信号灯全部熄灭;3)三基色发光管与AT89C51的连接图1所示,其中奇数口代表红色, 偶数口代表绿色,奇偶同用为黄色。当只有奇数口输出1时,红灯亮;当只有偶数口输出1时,绿灯亮;当两个输出都为1时,黄灯亮。4)本设计,红灯亮9S,绿灯亮5S,绿灯闪亮2S,黄灯亮2S。具体控制要求见表1。表1 十字路口交通信号灯控制要求东西信号绿灯亮绿灯闪亮黄灯亮红灯亮时间5s2s2s9s南北信号红灯亮绿灯亮绿灯闪亮黄灯亮时间9s5s2s2s2.2 总体方案设计2.2.1 方案比较方案一提供5V工作电压停止开始复位控制按键8031模拟8只发光二极管驱动显示电路电源74LS373 8D锁存器2764片外存储器 本方案主要以8031为核心,用一块74LS373锁存器 ,2764扩展片外存储器。电路特点扩展电路复杂。图2方案一方框图方案二本方案主要以AT89C51为核心,利用8255扩展I/O口。电路特点I/O口总数较多。停止开始复位提供5V工作电压控制按键AT89C51扩展口8255交通灯模拟8只发光二极管四方向的LED显示电路4*LED电源图3方案二方框图方案三本电路采用AT89C51为核心,用一块CD4511译码器,一块74LS14反相器(施密特)解决按键抖动问题。采用AT89C51芯片使电路更加智能化,可靠性高,电路成本大大下减。用三基色发光管形象的把交通灯模拟出来,更好达到设计的效果。电路特点系统电路简单,容易实现,不用扩展I/O口。提供5V工作电压停止开始复位控制按 键硬件消抖电路74LS14程序控制芯片AT89C51电源指示灯,CPU指示灯电路模拟交通灯发光管电路,四路方向灯。三基色发光管4只CD4511译码器电路LED数码管12MHZ时钟电路电源图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数码管同时倒计时显示四方向红灯亮的时间。当有停止命令,按下SB2,INT0非响应,因为其为优先级中断,所以不管INT1非执行到任何地方都中断。INT0非中断响应后,LED数码管与交通灯全灭,等待再次开始.3.2 总体方框图见图43.3 系统电路模块分析3.3.1 消抖电路在单片机应用系统中,按键起到了人机对话的主要设备,用于向单片机应用系统输入数据、程序和操作命令。当按钮按下或松开时,会向单片机CPU输入一个0电平或1电平,CPU根据接收到的0或1电平信号,决定具体的操作。但是,在按键的按下和松开时,开关的机械触点会产生抖动,一般抖动时间是510ms左右,抖动的波形如图5。在拉动期间CPU不能按收到稳定的电平而无法做出正确的判断,因此,需在对按钮进行去抖动处理。图5按钮产生抖动的波形示意图为了消除抖动,如图6所示,是利用反相器集成电路来实现消除抖动功能的。当开始按钮按下时,反相器的端为高电平,尽管按下按键会产生抖动,但由于反相器的作用,在端产生一个稳定的低电平。在按钮松开的过程中,由于变为低电平,同样由于反相器的作用,在端产生一个稳定的高电平。停止消抖动电路原理一样。图6 除抖动电路原理图74LS14芯片介绍:74LS14 是一个6反相器,如果输入端为高电平, 那么输出为低电平。 如果输入低电平,那么输出为高电平。 本电路用74LS14而不用74LS04。74LS14与74LS04都是74系列的非门。两者不同的是输入不一样。74LS04输入是TTL电平,74LS14输入是施密特输入(有滞回特性)。因为输入不一样,两个芯片的应用场合也有所不同。74LS04多用于板内一般数据的“非”控制,而74LS14一般用于某些信号的整形或者异受干扰信号的缓冲等。大部分情况下74LS14可以替代74LS04。3.3.2 振荡、时钟电路和CPU时序1)振荡、时钟电路振荡、时钟电路。如图7所示,时钟是单片机的心脏,各部分都以时钟频率为基准,有条不紊地一拍一拍的工作。因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有内部时钟和外部时钟两种。本设计利用AT89C51内部一个高增益的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。这两个引脚外接一个石英晶体或陶瓷谐振器就可以与片内振荡器一起构成一个自激振荡器。对外接电容的要求虽然没有严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度和温度稳定性。对电容C4和电容C5的要求为:石英晶体:30PF10PF;陶瓷谐振器:40PF10PF。把一个12.0MHZ晶振和两个33PF电容器组成的外部时钟振荡电路,接于XTAL1(19脚)和XTAL2(18脚)之间。这样振荡器发出的脉冲直接送入内部的时钟电路。图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指令周期=(14)机器周期=14us3.3.3 复位电路当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。本设计的AT89C51的系统时钟频率为12MHZ,那么,它的复位脉冲至少应为2us以上。复位期间,ALE、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集成块图9 D4511引脚图其功能介绍如下:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。: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逻辑功能十进制或功能输 入输 出字型LED C B Aa b c d e f g0123456789000000000011111111110 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 111111111111 1 1 1 1 1 00 1 1 0 0 0 01 1 0 1 1 0 11 1 1 1 0 0 10 1 1 0 0 1 11 0 1 1 0 1 10 0 1 1 1 1 11 1 1 0 0 0 01 1 1 1 1 1 11 1 1 1 0 1 1消 隐锁 定灯 测 试×1×110× × × ×× × × ×× × × ×01×0 0 0 0 0 0 0锁定在上一个LE=0时1 1 1 1 1 1 12)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驱动代码表显示数值dop g f e d c b a 驱动代码(16进制)00 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 006H2 0 1 0 1 1 0 1 15BH3 0 1 0 0 1 1 1 14FH4 0 1 1 0 0 1 1 066H5 0 1 1 0 1 1 0 06DH6 0 1 1 1 1 1 0 07DH7 0 0 0 0 0 1 1 107H8 0 1 1 1 1 1 1 17FH9 0 1 1 0 0 1 1 167H3)本设计的数码管显示模块,用一个CD4511驱动四个数码管,四个数码管分别显示东西南北四方向的红灯燃亮的时间。P1.0和P1.1控制数码管。由于AT89C51单片机的I/O口输出电流只有约1.2mA,驱动能力不够,P1口输出应先接三极管的基极,放大电流后,集电极再接数码管的接地端。电路图如下图11所示:图11驱动数码管显示图3.3.5 AT89C51芯片控制电路1)AT89C51芯片简介AT89C51是美国ATMEL公司生产的,一种带4K字节闪速可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,功能强大,适合于许多较复杂的控制应用场合。AT89C51的管脚排列如图12:图12 AT89C51引脚图2)设计主要用到AT89C51的P0口、P1口、P2口、(P3.2)、(P3.3)、RST、ALE、 XTAL1和XTAL2。具体功能介绍如下:P0.0-0.7:是漏极开路双向口,可以写为1使其状态为悬浮用作高阻输入。P0也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线。 P1.0-1.7:是带内部上拉的双向口,向P1口写入时,P1口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P1口会因为内部上拉而输出电流。P2.0-2.7:是带内部上拉的双向口,向P2口写入1时,P2口被内部上拉为高电平,可用作输入口当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流。(P3.2) :外部中断0。(P3.3) :外部中断1。RST: 复位输入线。当晶振在运行中,只要复位管脚至少出现2个机器周期高电平即可复位。 ALE: 地址锁存允许/编程线。访问外部存储器时,输出脉冲锁存地址的低字节,在正常情况下,ALE 输出信号恒定为1/6 振荡频率。并可用作外部时钟或定时,注意每次访问外部数据时一个ALE脉冲将被忽略。:片外程序存储器访问/编程器电源线。在访问整个外部程序存储器时, 必须置低。如果为高时,将执行内部程序,除非程序计数器包含大于片内FLASH 的地址。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单片机的两个外部中断源(和),是开始控制,是停止控制。主程序开始先进行初始化。程序主要设计如下:ORG 0000HAJMP MAINORG 0003HAJMP INT_A ;外部中断0入口ORG 0013HAJMP INT_B ;外部中断1入口ORG 0030HMAIN: MOV A, #0FAH ;所有方向红灯MOV P0,AMOV A,#00H ;四方向同时为“” MOV P2, ACLR P1.0 ;位选东西、南北LEDCLR P1.1SETB 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。具体字节算法如下:南北时间东西时间P0口字节状态南北禁止通行,东西可以通行5S5SF6南北红灯亮东西绿灯亮2S2SF2南北红灯亮东西绿灯闪南北红灯亮东西绿灯灭F6南北红灯亮东西绿灯亮2S2SFE南北红灯亮东西黄灯亮南北时间东西时间P0口字节状态东西禁止通行,南北可以通行5S5SF9南北红灯亮东西绿灯亮2S2SF8南北红灯亮东西绿灯闪南北红灯亮东西绿灯灭F9南北红灯亮东西绿灯亮2S2SFB南北红灯亮东西黄灯亮表4 P0口的字节表3.4.3 程序流程图1)主程序流程图:开始P0口 红灯 全亮,LED全显示0外部开中段等待外部中断1子程序外部中断0子程序开中断置数SETB EACLR IT0CLR IT1SETB EX0SETB EX1SETB PX0结束图15主程序流程图2)外部中断1程序流程图: 图16外部中断1流程图4 元件参数设定4.1 复位元件电路选折AT89C51在通电后要可靠复位,必须在RESET端出现一定宽度的正脉冲。正脉冲保持在10ms以上方可。当采用12MHZ的晶振时,复位电路元件R5与C3的求法如下: T的公式:TR5*C3,令R5=10K,则C3=10uF。所以复位电路的R5取10K,C3取10uF。4.2 消抖电路元件选折只要按下按键的时间大于2个机器周期,AT89C51就能读取正确的信号。当采用12MHZ的晶振时,本电路的时钟周期=1/fosc时:按下时间T2(24/fosc=2us)。根据=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电源等电路有了一定的了解,掌握了各种集成电路及其相关元器件的使用。参考文献1夏立国.现代城市交通发展战略和发展理念的转变分析J.城市车辆,2007,(9):20-23.2章家岩,谢富春.城市交通灯控制系统电路设计J.国外电子元器件,2004,(11):11-13.3李仁发,肖玲,吴强.数字逻辑设计M.北京:人民邮电出版社,2006.4唐竞新.数字电子电路M.北京:清华大学出版社,2003.5邓兴成,姜宝钧,何光普,张建平,汪志刚.单片机原理与实践指导M.乐山:乐山师范学院出版社,2005.6吴金戌.8051单片机实践与应用研究M.北京:清华大学出版社,2002.7马崇林.单片机基础知识学习篇J.家庭电子,2004,(3):10-16.8杨振江.流行单片机实用子程序及应用实例M.北京:西安电子科技大学出版社,2002.9李勇.简易交通灯系统的软件设计J.工业控制计算机,2007,(5):25-29.10张春玲.<<汇编语言程序设计>>教学难点解析J.河北广播电视大学学报,2002,(3):9-15.Design of the Transportation Light Controlling Electric Circuit Huang HeDepartment of Physics and Electronic Information ScienceElectronic Information Project 附录主程序:ORG 0000HAJMP MAINORG 0003HAJMP INT_AORG 0013HAJMP INT_BORG 0030HMAIN: MOV A, #0FAH ;所有方向红灯亮MOV P0,AMOV A, #00H ;四方向同时为“0”MOV P2, ACLR P1.0 ;位选东西、南北LEDCLR P1.1SETB EA ;开中断打开CLR IT0 ;电平触发有效CLR IT1 ;电平触发有效SETB EX0 ;外部0中断开放SETB EX1 ;外部1中断开放SETB PX0 ;外部0停止优先中断INT0中断停止子程序:INT_A: MOV A,#00H ;四方向灯全灭MOV P0,ASETB P1.0 ;LED灭SETB P1.1RETIINT1中断开始子程序:INT_B: MOV A,#0F6H ;南北红灯亮,东西绿灯亮MOV P0, AMOV R5,#09H ;显示9S置数MOV A, R5MOV P2, A;送P2口CLR P1.1 ;位选南北LEDSETB P1.0 ;不选东西LEDDIY : MOV 40H, #0AH ;绿灯5S程序LCALL DELDEC R5MOV A, R5MOV P2, A ;送P2口显示CJNE R5,#04H,DIY ;判断绿灯是否亮5SDIY1: MOV A,#0F2H ;南北红灯亮,东西绿灯灭MOV P0, AMOV 40H,#05H ;0.5S的延时LCALL DELMOV A,#0F6H ;南北红灯亮,东西绿灯亮MOV P0, AMOV 40H,#05H ;0.5S的延时LCALL DEL ;绿灯一灭一亮,1S闪一次DEC R5MOV A, R5MOV P2, ACJNE R5, #02H, DIY1DIY2: MOV A1,#0FEH ;南北红灯亮,东西黄灯亮 MOV P0, AMOV 40H, #0AHLCALL DELDEC R5MOV A, R5MOV P2, ACJNE R5, #00H, DIY2MOV A,#0F9H ;东西红灯亮,南北绿灯亮MOV P0, AMOV R5,#09H ;显示9S置数MOV A, R5MOV P2 , A ;P2口SETB P1.1CLR P1.0 ;位选东西LEDDIY3: MOV 40H,#0AH ;绿灯亮5S程序LCALL DELDEC R5MOV A, R5 MOV P2, ACJNE R5, #04H, DIY3DIY4 : MOV A,#0F8H ;东西红灯亮,南北绿灯灭MOV P0, AMOV 40H,#05H ;0.5S的延时LCALL DELMOV A,#0F9H ;东西红灯亮,南北绿灯亮MOV P0, AMOV 40H,#05H ;0.5S的延时LCALL DELDEC R5 ;绿灯一灭一亮,1S闪一次MOV A, R5MOV P2,A ;选P2口显示CJNE R5, #02HDIY5: MOV A,#0FBH ;东西红灯亮,南北黄灯亮MOV P0, AMOV 40H, #0AHLCALL DELDEC R5MOV A, R5MOV P2, ACJNE R5, #00H, DIY5SJMP INT_BRETIDEL : 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 RETEND