《毕业设计(论文)交通信号灯控制电路设计(单片机).doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)交通信号灯控制电路设计(单片机).doc(30页珍藏版)》请在三一办公上搜索。
1、江西航空职业技术学院毕业设计说明书(论文)课题名称交通信号灯控制电路设计(单片机)航空电子设备维修专业 081331班学生姓名 学号 37指导老师 技术职称_2011年 3 月 16 日江西航空职业技术学院毕业设计(论文)任务书学生姓名: 班级:371. 毕业设计(论文)题目:交通信号灯控制电路设计(单片机)2.毕业设计(论文)使用的原始资料数据及设计技术要求:1、单片机应用技术2、单片机典型模块设计实例导航3、单片机课程设计指导4、单片机基础针对实际要求,灵活应用所学知识,独立进行系统综合设计的过程以达到巩固单片机基础知识、掌握单片机系统开发过程和提高动手实践能力的目的。2. 毕业设计(论文
2、)工作内容及完成时间:本设计是以89S51为主控芯片 ,利用P1口控制74LS240(八反相缓冲器,线驱动器)驱动发光二极管模拟交通灯。倒计时显示部分采用串口实现。串口工作在方式0时通过外接移位寄存器74LLS164实现串并转换。需要显示的数据经RXD端输出经过74LS164串并转换输出到共阳极的LED数码管显示,利用T0定时器进行1S定时。日期:自2010年12月15日至2011年3月16日指导老师评语:_ 指导老师:贺国灿 系主任:姚卫华目录前 言1关键词.1一、设计的要求和内容21.1工作要求21.2、技术要求2二硬件电路说明32.1电路设计原理图32.2电路工作原理32.3 89S51
3、 单片机介绍32.3 关于74LS24052.4 介绍74LS16452.5 单片机最小系统62.6 紧急功能部分62.7 框图6三软件部分说明63.1 利用定时器定时1S73.1.1 定时1S73.2外中断程序93.2.1中断的初始化步骤93.2.1定时器控制寄存器(TCON)103.2.2中断允许控制寄存器(IE)103.2.4 中断优先级控制寄存器(IP)113.2.5中断控制寄存器的状态设置113.3串口工作方式设计123.3.1串口工作方式123.3.2 十字路口交通灯模拟控制器串口设计143.3.3关于字形编码153.3.4主程序流程图163.3.5源程序和重要注释说明17附录二2
4、5系统设计及总结26参考文献27前言本毕业设计的主要任务是通过解决一、两个实际问题,主要是巩固和加深“单片机原理与应用”以及以前所学的电子理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后工作打下一定的基础。在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。通过三个星期的学习,本人对单片机的结构和功能已有了初步的了解和认识。单片机在交通控制中起到了举足
5、轻重的作用,掌握了单片机的工作原理也就基本了解了交通灯的运做原理。作为一个学生,为了更好地掌握单片机的结构和功能,为了进一步加强自己的实践能力,本人设计了以下的一款交通灯。关键词:交通灯 单片机 AT89S51一、设计的要求和内容1.1工作要求本次毕业设计,是针对实际要求,灵活应用所学知识,独立进行系统综合设计的过程以达到巩固单片机基础知识、掌握单片机系统开发过程和提高动手实践能力的目的。1.2、技术要求某十字路口,如下图所示,设计一个十字路口交通灯信号控制器,指挥交通车的通行。要求如下:1)东西通道和南北通道交替通行,东西通道每次放行时间大于南北通道每次放行时间。2)绿灯亮表示可以通行,红灯
6、亮表示禁止通行。3)每次绿灯变红灯时,绿灯先闪转变黄灯(此时另一干道上的红灯不变)。4)十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体要求东西通道、南北通道通行时间及黄灯亮的时间均以秒为单位作减计数。十字路口如图1所示图1二硬件电路说明 2.1电路设计原理图 见附录 2.2电路工作原理本设计是以89S51为主控芯片 ,利用P1口控制74LS240(八反相缓冲器,线驱动器)驱动发光二极管模拟交通灯。倒计时显示部分采用串口实现。串口工作在方式0时通过外接移位寄存器74LLS164实现串并转换。需要显示的数据经RXD端输出经过74LS164串并转换输出到共阳极的LED数码管显示,
7、利用T0定时器进行1S定时。 2.3 89S51 单片机介绍 MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MC
8、S-51内核实际上已经成为一个8位单片机的标准。其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51, PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的 AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。不过在市场化方面,89C51受到了PIC单片
9、机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。89SXX可以像下兼容89CXX等51系列芯片。同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。如果市场需要,Atme
10、l当然也可以再恢复生产AT89C51。89S51相对于89C51增加的新功能包括:- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。- 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。- 具有双工UART串行通道。- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。- 双数据指示器。- 电源关闭标识。- 全新的加密算法,这使得对于89S51的解密变为不可
11、能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。- 兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。比较结果:就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。从AT89C51升级到AT89S51 ,也是同理。和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的2.3 关于74LS240 由于单片机的驱动能力
12、太弱,所以给加了驱动电路有因为发光二极管驱动 功率不大,所以我选用了八反相缓冲器/8位三态门电路74LS240无锁存功能。逻辑图,功能状态图分别如图2、图3所示: 图3图22.4 介绍74LS164本设计采用164把串行口逐位输出的数据进行串并转换进而控制LED的显示2.5 单片机最小系统 图42.6 紧急功能部分本设计了应急通行 用按钮开关控制东西南北的应急通行信号 其中东西方向接外中断0;南北接外中断1。按一下按钮该方向通行 另外方向停止 按两下恢复原样 。具体看原理图2.7 框图状态持续时间/S东西方向南北方向绿黄红绿黄红11灭灭亮灭灭亮230亮灭灭灭灭亮33亮亮灭灭灭亮420灭灭亮亮亮
13、灭53灭灭亮闪亮灭630亮灭灭灭灭亮循环三软件部分说明3.1 利用定时器定时1S定时/计数器的四种工作方式工作方式0:定时/计数器的工作方式0称之为13位定时/计数器方式。它由TL的低5位和TH的8位构成13位的计数器,此时TL的高3位不用。工作方式2:在工作方式2中,只有8位参与计数,而高8位是不参与计数的,用作预置数的存放,这样计数范围就小了,每当计数溢出,就会打开T0的高、低8位之间的开关,预置数就进入低8位。当然这是由硬件自动完成的,不需要我们去操心。通常工作方式2用于波特率发生器,对于这种用途,定时器就是为了提供一个时间基准,计数溢出后不需做任何的事情,要做的仅仅只有一件,就是重新装
14、入预置数,再开始计数,而且中间不能有任何的延迟,可见这个任务用这种工作方式来完成是最妙不过了。工作方式3:在这种工作方式下,T0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器工作方式;而TH0则只能作为定时器用,我们知道定时/计数器使用时需要有控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两个控制及溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记,如此一来T1不是标记、控制可用了吗?是的,在一般情况下,只有在T1以工作方式2运行时,才让T0工作于方式3。工作方式1:工作方式1是16位的定时/计数器方式,将TMOD的M1M0设
15、为“01”即可,其他特性与工作方式0相同。3.1.1 定时1S十字路口交通灯模拟控制器定时器采用工作方式1,先定时125MS,然后在定时中断程序中累加中断次数,8次为一秒,这样就可以起到定时1S的功能。工作方式由工作方式控制寄存器(TMOD)决定,FR寄存器TMOD用于2个定时器/计数器T1/T0的工作方式设定,各位的含义表示如下:GATE:门控位,定义T1/T0的启动方式,C/T-:定时/计数功能选择位。为“0”作定时器用;为“1”,作计数器用。M1M0:工作方式选择位。00 方式0 13位计数器01 方式1 16位计数器10 方式2 初值自动重装8位计数器11 方式3 2个8位计数器,仅适
16、用于T0十字路口交通灯模拟控制器设计采用6M晶振,因此定时125MS,可用下列语句实现。工作方式1是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。所以初始化定时器T0工作方式1,定时125MS的语句如下: MOV TMOD,#01 MOV TH0,#3CH MOV TL0,#0B0H定时1S在定时器0中断程序中完成,即计数八次为1S。定时器中断初始化程序如下 :SETB EA ;开中断SETB ET ; 定时器0允许中断SETB TR ;开始定时定时器定时1S的中断流程图如图5:3.2外中断程序对于外中断必须有中断的初始化程序、中断服务程序。3.2.1中断的初始化步骤1)
17、要使用中断则首先必须中断中断允许。2) 硬件的初始化:设置引脚连接设置I/O口的输入输出。3) 软件的初始化:设置中断寄存器,设置中断服务地址,清除中断标志,设置中断触发模式。4) 使能中断。外中断是由外部原因引起的中断,有两个中断源,即外中断0和外中断1,中断请求信号由引脚P3.2和P3.3输入。外中断请求信号弹有两种方式,一是电平方式,二是脉冲方式,可通过有关控制位的定义进行规定。电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请示输入端采样到有效的低电平时,就会激活外部中断。脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端电平进行采样中,如前一次为高
18、,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。3.2.1定时器控制寄存器(TCON)外中断请求方式的控制位在定时控制寄存器TCON中的位(IT0)和(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时此寄存器中的位89(IE0)和(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件 置1。在中断响应完成后转向中断服务时,再由硬件自动清除。3.2.2中断允许控制寄存器(IE)下面本文对有关控制位作说明:EA中断允许总控制位。EA=0,
19、中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。.EX0(EX1)外部中断允许控制。EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。.EX0(ET1)定时/计数中断允许控制位。ET0(ET1)-0,禁止定时/计数中断。ET0(ET1)=1,允许外部中断。ET0(ET1)=1,允许定时/计数中断。.ES串行中断允许控制位。ES=0,禁止串行中断。ES=1,允许串行中断。中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以E
20、A位作为总中断控制位,以各中断挖掘位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止,整个中断都是禁止的。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。值得一提的是:单片机中断响应后还会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。 3.2.4 中断优先级控制寄存器(IP)MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别先级别由优先寄存器(IP)进行控制。.PX0外中断0(INT0)优先级控制位。.PI0定时中断0优先级控制位。.PX1外中断1优先级控制位。.PT1定时中断1优先级控制位。.PS串行中断优先级控
21、制位。控制位=0,优先级为低。控制位=1,优先级为高。中断优先级是为了中断嵌在服务的,控制原则为:1) 低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。2) 同级的中断已经响应,其他中断将被禁止。3) 如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0-定时中断0-外中断1-定时中断1-串行中断。3.2.5中断控制寄存器的状态设置本例设计要采用定时器中断,外中断0,外中断1。定时器中断、外中断、串口中断控制如下,其中外中断0、1优先级最高,保证了应急通行的需求。MOV SCON,#00H ; 工作于工作方式0,既移位寄存
22、器状态SETB ES ;开总中断SETB ET0 ;开定时器中断SETB TR0 ;启动T0定时器SETB IT0 ;外中断0为脉冲触发方式SETB IT1 ;外中断0为脉冲触发方式MOV IP,#05 ;外中断0,1为高优先级SETB EX0 ;开个中断0SETB EX1 ;开外中断1外中断程序逻辑流程如图6:3.3串口工作方式设计3.3.1串口工作方式串口有4种方式:方式0、1、2、3,由串口控制寄存器SCON和PCON控制。0 0 方式0 同步移位寄存器 0 1 方式1 10位异步收发1 0 方式2 11位异步收发1 1 方式3 11位异步收发1) 方式1:10位异步收发方式1下,串行口
23、位10位通用异步接口。发送或接收数据信息为10位,包括1位起始位“0”、8位数据、1位停止“1”。方式1发送:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,启动发送器发送。发送完数据后,置中断标志T1=1,申请中断,通知CPU可以发送下一个数据。方式1接收:首先使REN=1,串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收数据,当接收完数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据。2) 方式2 :11位异步收发方式。发送或接收信息包括1位起始“0”、8位数据库位、1位可编程位、1位停止位“1”。方式2发送:发送前,先根据通信协议
24、由软件包设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出数据。方式2接收:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置R1=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行接收发送来的信息。当SM2=1时,且RB8=0,表示在多机通信情况下,接
25、收的信息为“数据帧”,但不是发给本从机的,此时RI不置“1”,因而SBUF中接收的数据帧将丢失。3) 方式3:11位异步收发。方式3为波特率可变的11位异步通信方式,除了波特率区别之外,其他方式都与方式2相同。4) 方式0:在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率固定为“F/12”。串行数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端送出.这种方式常用于扩展I/O口,可以外接74165或者74164.方式0发送:当1个数据写入发送缓冲器SBUF时,串行口即把8位数据以F/12的波特率从RXD端口送
26、出,发送完后将中断标志TI置“1”。方式0接收:REN是串行接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当接收到8位数据时,将中断标志RI置“1”。3.3.2 十字路口交通灯模拟控制器串口设计本例设计串口若悬河工作于工作方式0,即同步移位寄存器状态MOV SCON,#00H ;串口工作方式0传送数据语句如下:MOV DPTR,#SEGTABI;字形码09地址MOV A,DIS-LB ;低位数据MOVC A,A+DPTR ;查表MOV SBUF ,A ;发送数据DL1:JNB TI,DLI ;查询是否发送完一个字节CLR 3.3.3关于字形编码根据各管的接线形式,可分成共阴极型和
27、共阳极型。给LED数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。显示字型HGFEDCBA共阴极字形码共阳极字形码0001111110X3F0XC01000001100X060XF92010110110X5B0XA4301001111OX4F0XB04011001100X660X995011011010X6D0X926011111010X7D0X827000001110X070XF88011111110X7F0X809011111110X6FOX903.3.4主程序流程图每个状态大致一样之举了第一状态,流程图如下图7、图8所示:图7图83
28、.3.5源程序和重要注释说明 注:程序用了伪指令 方便修改时间参数 这个程序具有紧急通道 DIS_LB EQU 32H ;时间数据高位DIS_HB EQU 33H ;时间数据高位E_PASST EQU 30 ;东西方向绿灯通电时间N_PASST EQU 20 ;南北方向绿灯通电时间FLASHT EQU 5 ;黄灯闪烁时间SECOND_F EQU 20H.0 ;定时1S标志INT0_F EQU 20H.1 ;外中断0标志位INT1_F EQU 20H.1 ;外中断1标志位 ORG 0000H AJMP MAIN ORG 0003H ;外中断0入口地址LJMP INT_0 ;调至外中断0服务程序O
29、RG 000BH ;T0中断入口AJMP T0_INT ;调至T0服务程序ORG 0013H ;外中断1入口地址LJMP INT_0 ;调至外中断1服务程序ORG 0100H MAIN:;初始化程序*MOV SP,#50H ;定时器T0工作于方式1,定时125MS,开起定时器0中断MOV TMOD,#01MOV TH0,#0BHMOV TL0,#0DCH ;串口工作于工作方式0,即移位寄存器状态MOV SCON,#00HSETB EA ;开总中断SETB ET0 ;开定时器中断SETB IT0 ;外中断0为脉冲触发方式SETB IT1 ;外中断0为脉冲触发方式MOV IP,#05 ;外中断0,
30、1为高优先级SETB EX0 ;开外中断0SETB EX1 ;开外中断1;*MOV R2,#0MOV 20H,#0;开始所有灯亮以便检测交通灯的好坏,亮一秒MOV P1,#0FFHSETB TR0;开启定时JNB SECOND_F,$CLR SECOND_F;*T_LIGHT:MOV R3,#E_PASSTF_STEP:MOV P1,#24H ;东西亮绿灯,南北亮红灯,即P1 MOV A,R3 LCALL H_D ;调用十六-十进制程序 LCALL DIS ;调用显示程序 JNB INT0_F,LP11 AJMP F_STEP LP11:JNB INT1_F,LP12 AJMP T_STEP
31、LP12:JNB SECOND_F,$ ;显示上面数据1SCLR SECOND_FCJNE R3,#0,F_STEP ;变化显示数据;*MOV R3,#FLASHT ;东西亮绿灯,南北闪烁黄灯S_STEP: MOV A,R3MOV P1,#22HLCALL H_D LCALL DIS JNB INT0_F,LP21;是否第一次出现外中断0,是转东西亮绿灯,南北亮红灯;否则检测外中断1信号是否第一次出现 AJMP F_STEPLP21:JNB INT1_F,LP22 AJMP T_STEP ;外中断1第一次出现转东西亮红灯,南北亮绿灯LP22: JNB SECOND_F,$ ; CLR SECO
32、ND_F ;示出现外中断正常显示CJNE R3,#0,LP1AJMP T_STEPLP1: MOV P1,#02HMOV A,R3LCALL H_DLCALL DISJNB SECOND_F,$CLR SECOND_FCJNE R3,#0,S_STEP;*T_STEP:MOV R3,#N_PASST ;南北亮绿灯,东西亮红灯LP2: MOV P1,#81HMOV A,R3LCALL H_DLCALL DISJNB INT0_F,LP31AJMP F_STEPLP31:JNB INT1_F,LP32 AJMP T_STEPLP32:JNB SECOND_F,$CLR SECOND_F CJNE
33、R3,#0,LP2;*MOV R3,#FLASHT ;南北亮绿灯,东西闪烁黄灯FORTH_STEP:MOV P1,#41H MOV A,R3 LCALL H_D LCALL DISJNB INT0_F,LP41 AJMP F_STEPLP41: JNB INT1_F,LP42 AJMP T_STEPLP42: JNB SECOND_F,$ CLR SECOND_FCJNE R3 ,#0,LP3LJMP T_LIGHTLP3:MOV P1,#40HMOV A,R3LCALL H_DLCALL DISJNB SECOND_F,$ CLR SECOND_FCJNE R3 ,#0,FORTH_STEP
34、LJMP T_LIGHT;*十六到十式转换H_D:MOV B,#10 DIV AB MOV DIS_HB,AJNZ LP5MOV A,#10LP5:MOV A,BMOV DIS_LB,ARET;*;时间显示子程序,显示两位十进制数,发光显示共阳极DIS:MOV R7,#2MOV R0,#DIS_LBDL0:MOV A,R0ADD A,#0BHMOVC A,A+PCMOV SBUF,ADL1: JNB TI,DL1CLR TIINC R0DJNZ R7,DL0RETSEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HT0_INT:CLR T
35、R0 MOV TH0,#0BH MOV TL0,#0DCH SETB TR0 INC R2 CJNE R2,#8,RETURN MOV R2,#0 SETB SECOND_F DEC R3 RETIINT_0: CLR EX0 ;关外中断 CLR EX1 JNB INT0_F,INT0LP1 ;检测外中断0信号是否第一次,是则置位 CLR INT0_F ;外中断0信号第二次出现,恢复数据,启动定时器0 MOV R3,40H SETB TR0 SETB EX1 ;开外中断 AJMP INT0LP2INT0LP1:CLR TR0 ;外中断0信号第一次出现,关定时器0清1S标志位CLR SECOND
36、_FSETB INT0_F ;置位外中断0标志位MOV 40H,R3 ;保存数据MOV R3,#99 ; 送99S显示INT0LP2:SETB EX0 ;开外中断0RETIINT_1:CLR EX1CLR EX0JNB INT1_F,INT1LP1CLR INT1_FMOV R3,40HSETB TR0SETB EX0AJMP INT1LP2INT1LP1:CLR TR0CLR SECOND_FSETB INT1_FMOV 40H,R3MOV R3,#99INT1LP2:SETB EX1RETURN:RETIEND附录二主要材料:晶振6M 1块 普通电阻 3个(由于数码管显示太暗 才用了360
37、欧姆的) 单片机89S51 1块 按钮3个 ( 采用了外部中断0 ,1) 电容 3个 (无极性) 发光二极管 6个 (红黄绿各两个) 7805 稳5V的一个 1000uf和10uf 电容有极性 数码管共阳两个 变压器一个 74LS164两个 74LS240一个系统设计总结通过这次的毕业设计,让我受益匪浅,也让我了解和掌握了一些编程思想和对I/O口的使用和应用的条件的思考,对单片机的各个管脚功能的理解和掌握。实现了软件和硬件的有效结合,缺一不可。设计让我把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,更激发了我对专业知识的渴求,这些对
38、我以后参加工作或者继续学习都会有很大的帮助和影响。一个小小的单片机居然涵盖了如此之多,输入输出端口不说,还有显示部分,用到中断,串行口。更使我对单片机的基本原理、单片机应用系统。开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。在对交通灯的设计中,要多些贺国灿老师的指导和同学们的大力帮助!而作为一位学生,因知识和经验的不足,且第一次做这么系统化的设计,故只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,敬请指正。但自己会在以后的学习中逐渐去完善、巩固自己的单片机知识。参考文献1、倪志莲.单片机应用技术,北京理工大学出版社2、单片机实验与实践教程,北京航空航天大学出版社,何立民等2004年7月3、求是科技.单片机典型模块设计实例导航(第2版).人民邮电出版社,2008.4、李广弟等编著.单片机基础M.北京:北京航空航天大学出版社,2001.75、楼然苗,李光飞编著.单片机课程设计指导M.北京: 北京航空航天大学出版社,2007