2022年基于51单片机的智能交通灯系统方案设计书07286.docx
精品学习资源1. 设计思路12.1 电源供应方案12.2 显示界面方案12.3 输入方案:23 单片机交通掌握系统总体设计23.1 单片机交通掌握系统的通行方案设计23.2 单片机交通掌握系统的功能要求33.3 单片机交通掌握系统的基本构成及原理34 智能交通灯掌握系统的硬件设计44.1 AT89C51 单片机简介44.1.1 AT89C51 单片机的主要特性44.1.2 主要引脚功能54.2 交通灯中的中断处理流程74.3 系统硬件总电路构成及原理74.3.1 系统硬件电路构成74.3.2 系统工作原理74.4 其它硬件介绍及连接84.4.1 八段 LED 数码管85 系统软件程序的设计105.1 程序主体设计流程105.2 理论基础学问115.2.1 定时器原理 .115.2.2 软件延时原理115.2.3 中断原理115.3 子程序模块设计115.3.1 状态灯显示及判定115.3.2 LED 倒计时显示125.3.3 紧停及调整时间中断子程序135.3.4 红绿灯时间调整程序145.4 系统软件调试155.4.1 TKS 仿真器155.4.2 集成开发环境 KEIL15参考文献 17设计心得体会 18附录19欢迎下载精品学习资源基于单片机的交通掌握系统模拟设计摘要:自从 1858 年英国人,创造了原始的机械扳手交通灯之后,随后的一百多年里,交通灯转变了交通路况,也在人们日常生活中占据了重要位置,随着人们社会活动日益增加,经济进展,汽车 数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于 交通疏导,提高道路导通才能,削减交通事故有显著的成效;近年来,随着科技的飞速进展,电子器件也随之广泛应用,其中单片机也不断深化人民的生活当中;本模拟交通灯系统利用单片机AT89C51 作为核心元件,实现了通过信号灯对路面状况的智能掌握;从肯定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题;系统具有结构简洁、牢靠性高、成本低、实时性好、安装爱护便利等优点,有广泛的应用前景;本模拟系统由单片机硬/软件系统,两位8 段数码管和LED 灯显示系统;和复位电路掌握电路等组成,较好的模拟了交通路面的掌握;关键词:交通灯 单片机 数码管1. 设计思路( 1)分析目前交通路口的基本掌握技术以及各种通行方案,并以此为基础提出自己的交通掌握的初步方案;( 2)确定系统交通掌握的总体设计,包括,十字路口详细的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态掌握能实现基本的交通功能,仍增加了倒计时显示提示,基于实际情形,又增加了紧急状况处理和通行时间可调这两项特特殊功能;( 3)进行显示电路,灯状态电路,按键电路的设计和对各器件的挑选及连接,大体安排各个器件及模块的基本功能要求;( 4)进行软件系统的设计,对于本系统,本人采纳单片机汇编语言编写,对单片机内部结构和工作情形做了充分的争论,明白定时器,中断以及延时原理,总体上完成了软件的编写;2. 单片机交通掌握系统方案的比较、设计与论证2.1 电源提供方案为使模块稳固工作,须有牢靠电源;因此考虑了两种电源方案:方案一:采纳独立的稳压电源;此方案的优点是稳固牢靠,且有各种成熟电路可供选用;缺点是各模块都采纳独立电源,会使系统复杂,且可能影响电路电平;方案二:采纳单片机掌握模块供应电源;改方案的优点是系统简明扼要,节省成本;缺点是输出功率不高;综上所述,我挑选其次种方案;2.2 显示界面方案该系统要求完成倒计时功能;基于上述缘由,我考虑了二种方案:方案一:采纳数码管显示;这种方案只显示有限的符号和数码字符,简洁,便利;方案二:采纳点阵式LED 显示;这种方案虽然功能强大,并可便利的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作;欢迎下载精品学习资源综上所述,我挑选第一种方案;2.3 输入方案:题目要求系统能调剂灯亮时间,并可处理紧急情形,我争论了两种方案:方案一:采纳8155 扩展 I/O 口及键盘,显示等;该方案的优点是:使用敏捷可编程,并且有RAM, 及计数器;如用该方案,可供应较多I/O 口,但操作起来稍显复杂;方案二: 直接在 I/O 口线上接上按键开关;由于该系统对于交通灯及数码管的掌握,只用单片机本身的I/O 口就可实现,且本身的计数器及 RAM 已经够用,故挑选方案二;3 单片机交通掌握系统总体设计3.1 单片机交通掌握系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,连续肯定时间,经过短暂的过渡时间,将通行禁行方向对换;其详细状态如下图所示;说明:黑色表示亮,白色表示灭;交通状态从状态1 开头变换,直至状态6 然后循环至状态1,周而复始,即如图2.1 所示:图 1 交通状态通过详细的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20 秒;此状态下,东西向禁止通行,南北向答应通行;欢迎下载精品学习资源东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时5 秒;此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换;南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20 秒;此状态下,东西向答应通行,南北向禁止通行;南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5 秒;此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换;下面我们可以用图表表示灯状态和行止状态的关系如下: 表 1 交通状态及红绿灯状态东西向南北向状态 1禁行通行状态 3等待变换等待变换状态 4通行禁行状态 6等待变换等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100东西南北四个路口均有红绿黄3 灯和数码显示管2 个,在任一个路口,遇红灯禁止通行,转绿灯答应通行,之后黄灯亮警告行止状态将变换;状态及红绿灯状态如表1 所示;说明: 0 表示灭, 1表示亮;3.2 单片机交通掌握系统的功能要求本设计能模拟基本的交通掌握系统,用红绿黄灯表示禁行,通行和等待的信号发生,仍能进行倒计时显示,通行时间调整和紧急处理等功能;( 1)倒计时显示倒计时显示可以提示驾驶员在信号灯灯色发生转变的时间、在“停止 ”和 “通过 ”两者间作出合适的挑选;驾驶员和行人普遍都情愿挑选有倒计时显示的信号掌握方式,并且认为有倒计时显示的路口更安全;倒计时显示是用来削减驾驶员在信号灯色转变的关键时刻做出复杂判定的1 种方法,它可以提示驾驶员灯色发生转变的时间,帮忙驾驶员在“停止 ”和“通过 ”两者间作出合适的挑选;( 2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,防止自动故障和意外发生,并再紧急状态下,可设置全部灯变为红灯;键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种;前者软件编写简洁,但在按键数量较多时特殊铺张I 0 口资源,一般用于按键数量少的系统;后者适用于按键数量较多的场合,但是在单片机I 0 口资源相对较少而需要较多按键时,此方法仍不能满意设计要求;本系统要求的按键掌握不多,且I 0 口足够,可直接采纳独立式;( 3)紧急处理交通路口显现紧急状况在所难免,如特大大事发生,抢救车等急行车通过等,我们都必需尽量答应其畅通无阻,究竟在这种情形下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关 等;由此在交通掌握中增设禁停按键,就可达到想此目的;3.3 单片机交通掌握系统的基本构成及原理欢迎下载精品学习资源单片机设计交通灯掌握系统,可用单片机直接掌握信号灯的状态变化,基本上可以指挥交通的 详细通行,当然,接入LED 数码管就可以显示倒计时以提示行使者,更具人性化;本系统在此基础上,加入了紧急情形处理与时间调整功能;LED数码管显示欢迎下载精品学习资源最小系统外围接口电路单片机按键 掌握电路欢迎下载精品学习资源红黄绿信号灯图 2 系统的总体框图据此,本设计系统以单片机为掌握核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块, LED 倒计时模块模块接受输出;系统的总体框图如上所示;单片机上电后,系统进入正常工作状态,执行交通灯状态显示掌握,同时将时间数据倒计时输入到 LED 数码管上实时显示;在此过程中随时调用急停按键和时间调剂中断;4 智能交通灯掌握系统的硬件设计4.1 AT89C51 单片机简介AT89C51 是一种带 4K 字节闪耀可编程可擦除只读储备器(FPEROM Falsh Programmable and Erasable Read Only Memory )的低电压,高性能CMOS8 位微处理器,俗称单片机;AT89C2051 是一种带 2K 字节闪耀可编程可擦除只读储备器的单片机;单片机的可擦除只读储备器可以反复擦除100 次;该器件采纳 ATMEL 高密度非易失储备器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容;由于将多功能8 位 CPU 和闪耀储备器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微掌握器,AT89C2051 是它的一种精简版本;AT89C 单片机为很多嵌入式掌握系统供应了一种敏捷性高且价廉的方案;4.1.1 AT89C51 单片机的主要特性与 MCS-51 兼容 , 4K 字节可编程闪耀储备器,寿命: 1000 写/擦循环,数据保留时间:10 年,全静态工作: 0Hz-24Hz ,三级程序储备器锁定,128*8 位内部 RAM , 32 可编程 I/O 线,两个 16 位定时器 /计数器, 5 个中断源(两个外部中断源和3 个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路;时·钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列;中·断系统:中断系统的作用主要是对外部或内部的终端恳求进行治理与处理;AT89S51 共有 5 个中断源,其中又 2 个外部中断源和 3 个内部中断源;欢迎下载精品学习资源图 3 AT89C51 系列单片机的内部结构示意图4.1.2 主要引脚功能图 4 AT89C51 引脚图·VCC :电源电压·GND :接地·P0 口: P0 口是一组 8 位双向 I 0 口; P0 口即可作地址数据总线使用,又可以作为通用的I/O口使用;当 CPU 拜访片外储备器时, P0 口分时先作低8 位地址总线,后作双向数据总线,此时,P0 口就不能再作I/O 口使用了;在拜访期间激活要使用上拉电阻;欢迎下载精品学习资源·P1 口: Pl 是一个带内部上拉电阻的8 准位双向 IO 口, P1 作为通用的 I/O 口使用;·P2 口: P2 是一个带有内部上拉电阻的8 位准双向 I O 口, P2 即可作为通用的 I/O 口使用,也可以作为片外储备器的高8 位地址总线,与 P0 口协作,组成 16 位片外储备器单元地址;·P3 口: P3 口是一组带有内部上拉电阻的8 位准双向 I 0 口; P3 口除了作为通用的I/O 口使用之外,每个引脚仍具有其次功能,详细安排如表2表 2 具有其次功能的 P3 口引脚端口引脚P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6P3.7其次功能:RXD (串行输入口) TXD (串行输出口)/INT0 (外中断 0)/ INT1 (外中断 1)T0(定时计数器T1(定时计数器0 外部输入)1 外部输入)/ WR(外部数据储备器写选通)/ RD 外部数据储备器读选通)·RST:复位输入;当振荡器工作时,RST 引脚显现两个机器周期以上高电平将使单片机复位; WDT溢出将使该引脚输出高电平,设置SFR AUXR的 DISRT0 位(地址 8EH)可打开或关闭该功能; DISRT0 位缺省为 RESET 输出高电平打开状态;·ALE :当拜访外部程序储备器或数据储备器时,ALE (地址锁存答应)输出脉冲用于锁存地 址的低8 位字节;即使不拜访外部储备器,ALE仍以时钟振荡频率的1 6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的;要留意的是:每当拜访外部数据储备器时将跳过一个ALE 脉冲;对 F1ash 储备器编程期间,该引脚仍用于输入编程脉冲( PROG);如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作;该位置位后,只有一条 M0VX 和 M0VC 指令 ALE 才会被激活;此外,该引脚会被柔弱拉高,单片机执行外部程序时,应设置 ALE 无效;·程序储存答应()输出是外部程序储备器的读选通信号,当AT89S51 由外部程序储备器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲;当拜访外部数据储备器,没有两次有效的信号;·VPP:外部拜访答应;欲使CPU 仅拜访外部程序储备器(地址为0000H FFFFH ), EA 端必需保持低电平(接地);需留意的是:假如加密位LB1 被编程,复位时内部会锁存EA 端状态;如 EA 端为高电平(接VCC 端), CPU 就执行内部程序储备器中的指令;F1ash 储备器编程时,该引脚加上 +12V 的编程电压 Vcc ;·XTAL1 :振荡器反相放大器及内部时钟发生器的输入端;4.1.3 MCS 51 的中断源8051 有 5 个中断源,它们是两个外中断 INT0 (P3.2)和 INT1 ( P3.3)、两个片内定时 /计数器溢出中断 TF0 和 TF1,一个是片内串行口中断 TI 或 RI ,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行掌握 ,其中 5 个中断源的程序入口地址如表 4 所示:欢迎下载精品学习资源表 3 中断源程序入口中断源的服务程序入口地址中断源入口地址外中断 00003H定时/计数器 0000BH外中断 10013H欢迎下载精品学习资源定时/计数器 0001BH串行口中断0023H4.2 交通灯中的中断处理流程()现场爱护和现场复原:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情形爱护好,当中断执行后再复原现场,包括信号灯和时间显示电路;()中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断;()中断服务程序:有中断产生,就必定有其详细的需执行的任务,中断服务程序就是执行中断处理的详细内容: 即假如南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;假如东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯;() 中断返回:执行完中断服务程序后,必定要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样;4.3 系统硬件总电路构成及原理实现本设计要求的详细功能,可以选用AT89C51 单片机及外围器件构成最小掌握系统,12 个发光二极管分成4 组红绿黄三色灯构成信号灯指示模块,8 个 LED 东西南北各两个构成倒计时显示模块,如干按键组成时间设置和紧急按钮;4.3.1 系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成;其详细的硬件电路总图如图 3.1 所示;其中 P0 用于送显两片 LED 数码管, P1 用于掌握红绿黄发光二极管,XTAL1 和 XTAL2接入晶振时钟电路, REST 引脚接上复位电路, P2.6 与 P2.7 对数码管进行片选, P3.2 即 INT0紧急情形处理按键, P3.3 即 INT1 接时间调整中断按键;4.3.2 系统工作原理系统上电或手动复位之后,系统先显示状态灯及 LED 数码管,将状态码值送显 P1 口,将要显示的时间值的个位和十位分别送显 P0 口,在此同时用软件方法计时 1 秒,到达 1s 就要将时间值减1,刷新 LED 数码管;时间到达一个状态所要全部时间,就要进行下一状态判定及连接,并装入次状态的相应状态码值以准时间值,当然,仍要开启两个外部中断,其一为紧急情形处理中断,一旦信号有效,即K3 键为低电平常进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下键,中断终止返回;其二为通行时间调整中断,如K4 按键有效,进入相应的中断子程序,对时间进行调整,此后再按 K4 键就中断终止返回;欢迎下载精品学习资源图 5 基于单片机的交通灯掌握系统电路图4.4 其它硬件介绍及连接4.4.1 八段 LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、爱护简便等优点;LED数码管的结构简洁,分为七段和八段两种形式,也有共阳和共阴之分;以八段共阳管为例,它有8个发光二极管 比七段多一个发光二极管,用来显示dP,即点 ,每个发光二极管的阳极连在一起, 如图 3.6 所示;这样,一个LED 数码管就有I 根位选线和 8 根段选线,要想显示一个数值,就要分别对它们的高低电平来加以掌握;为便利起见,本文主要争论共阳八段LED 数码显示管,其他类形的显示管与其类似;图 6 LED 数码管LED灯的显示原理 : 通过同名管脚上所加电平的高低来掌握发光二极管是否点亮而显示不同的欢迎下载精品学习资源显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H字形,如 dp, g,f,e,d,c,b,a 全亮显示为,采纳共阳极连接驱动代码,代码表如下表5 所示;表 5 驱动代码表相应在程序软件上,可以通过调用程序给定的秒值经过特定运算算出需要显示的个位和十位, 然后有 DPTR 调取 LEDMAP的代码;LED8 段数码管的设置为每个方位上的一对 2 为显示器;四个方位上总共用 8 个 LED 接在单片机的 IO 口上;虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的 IO 口是对称的;如图 3.7 所示,其中 A , B 分别是 P0, P1 的网络标号;图 7 LED 连接图4.4.2 发光二极管依据本设计的特点,红绿灯的显示不行少,红绿灯的显示采纳一般的发光二极管;每个方向上 设置红绿黄灯,总共4 组;假如东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图8 所示;欢迎下载精品学习资源图 8 信号灯的连接4.4.3 按键掌握本设计设置了有 5 个键: K1 键 P3.0,K2 键 P3.1, K3 键 P3.2, K4 键 P3.3, K5 键 P3.4,每个按键一端接地,另一端接对应的P3 端口;低电平有效,当按键按下端口接地,单片机捕捉到低电平,从而知道相应的输入信息;5 系统软件程序的设计5.1 程序主体设计流程全部掌握程序实际上分为如干模块:键盘设置处理程序,状态灯掌握程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等;整个软件程序方面主要分两大部分:主程序部分和中断处理程序;流程图如图9 所示;开头系统初始化东西亮绿灯,南北亮红灯中断处理子程序调显示子程序(动态显示)东西黄灯闪耀,南北亮红灯处理东西,南北方向换返回图 9 系统总流程图设计说明:该智能交通灯掌握系统的软件设计采纳的是次序执行并反复循环的方法;智能交通灯掌握系统在正常工作的情形下,每20s 循环变化一次;每个循环周期在仍剩5s 时,正在通行路口的黄灯同时点亮并开头闪耀,以提示路人上的行人及车辆,交通灯即将发生变化;在此期间如中断按键按下就转入中断服务子程序进行相关操作;欢迎下载精品学习资源5.2 理论基础学问5.2.1 定时器原理定时器工作的基本原理其实就是给初值,让它不断加1 直至减完为模值,这个初值是送到TH和 TL 中的;它是以加法记数的,并能从全1 到全 0 时自动产生溢出中断恳求;因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下运算通式:TC=M-C式中, M 为计数器模值;计数值并不是目的,目的是时间值,设计1 次的时间,即定时器计数脉冲的周期为 T0 ,它是单片机系统主频周期的12 倍,设要求的时间值为T,就有 C=T T0 ;运算通式变为:T= ( M TC )T0模值和计数器工作方式有关;在方式0 时 M 为 8192;在方式 1 时 M 的值为 65536;在方式 2 和 3 为 256;就此可以算出各种方式的最大延时;如单片机的主脉冲频率为12MHZ ,经过 12 分频后,如采纳方式最大延时只有8.129 毫秒,采纳方式最大延时也只有65.536 毫秒;这就是为什么扫描周期为 50ms 的缘由,如使用软件就会耽搁程序流程,明显不行行;相反,时间计时方面却不行能只用计数器,由于明显秒钟已经超过了计数器的最大定时间,所以我们仍必需采纳定时器和软件相结合的方法才能解决这个问题;5.2.2 软件延时原理MCS-51 的工作频率为 12MHZ ,机器周期与主频有关,机器周期是主频的 12 倍,所以一个机器周期的时间为 12* ( 1/12MHZ ) =1us;我们可以知道详细每条指令的周期数,这样我们就可以通过指令的执行条数来确定 1 秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽视不计;5.2.3 中断原理本系统主要使用了外部中断,中断信号有引脚 INT0 和 INT1 输入,低电平有效, CPU 每个时钟周期都会检测 INT0 和 INT1 上的信号, 8051 答应外部中断以电平方式或负边沿方式两种中断方式输入中断恳求信号,可由用户通过设置TCON 中 IT0 和 IT1 位的状态来实现;以IT0 为例, IT0=0 ,为电平触发方式, IT0=1 ,为负边沿触发方式,本设计采纳电平方式,IE0 为其中断标志位,有中断信号就置位,中断服务子程序响应后,IE0 自动清零; IE中的 EA为答应中断的总掌握位,为1 开启, EX0 为外部中断答应掌握位,为1 开启;在优先级的答应下,一旦有外部中断信号产生,单片机CPU 第一爱护断点, PC 值进栈,然后执行相应的中断服务子程序,执行完后,用RETI 指令返回,此时CPU 会从堆栈中取储存的断点地址,送回 PC,程序再正常执行;5.3 子程序模块设计5.3.1 状态灯显示及判定在本设计中,实际掌握的灯只有6 个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯;定义IO 端口如下,其中均是低电平有效;H_REDBIT P1.0 H_YELLOWBIT P1.1 H_GREENBIT P1.2 L_REDBIT P1.3欢迎下载精品学习资源L_ YELLOWBIT P1.4 L_ GREENBIT P1.5共有 4 钟状态:东西红灯亮,南北绿灯亮(0F3H );东西红灯亮,南北黄灯亮(0F5H );东西绿灯亮,南北红灯亮(0DEH );东西黄灯亮,南北红灯亮(0EEH );括号中是 P1 端口 8 个引脚值对应的十六进制码;用于显示发光二极管时,部分程序如下:;东西红,南北绿,计时时间为20sMOV P1,#0F3H MOV 60H,61HA1:MOV R1,#50 A2:ACALL BCDACALL DISPCLK DJNZ R1,A2 MOV A,60HMOV R0,60H ADD A,#99H DAAMOV 60H,A CJNE R0,#05H,A15.3.2 LED 倒计时显示LED计时每1 秒都要刷新 1 次,采纳的是动态显示,第一将R4 除以 10H ,整数即十位放在50H 中,余数即个位放在51H 中,设置 7 段 LED 显示数据的数据表,用数据指针寄存器DPTR 指向数据表的首地址,再加上A 中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理;详细程序如下:BCD:;将十位数送到( 51),个位数送到() MOV A,60H; 60H 单元放的是倒计时值MOV B,#10H DIV ABMOV 51H,AMOV A,B MOV 50H,A RETDISPCLK:;显示部分MOV DPTR,#TAB MOVA,50HMOVCA,A+DPTRMOVP0,ACLRP2.6 LCALL DELAY SETBP2.6MOVA,51H MOVCA,A+DPTR欢迎下载精品学习资源MOVP0,ACLRP2.7 LCALL DELAY SETBP2.7 RET5.3.3 紧停及调整时间中断子程序紧停按键连接到外部中断引脚P3.2,即 INT0捕捉到一个低电平,就进入该中断进行相关处理;程序如下:;紧急情形处理IINT0:CLR EA JB P3.2,$ PUSH 60H PUSH P1 PUSH P2B0: JNB P3.0,NH JNB P3.1,DH;全红A9: MOV P1,#0F6H SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMPJE;只答应东西方向车辆通行NH: MOV P1,#0DEH SETB P2.6SETB P2.7ACALL DELAY JNB P3.2,B0 JMPJE;只答应南北方向车辆通行DH: MOV P1,#0F3H SETB P2.6SETB P2.7 ACALL DELAY JNB P3.2,B0 JMPJEJE:POP P2 POP P1 POP 60H欢迎下载精品学习资源SETB EA RETI5.3.4 红绿灯时间调整程序时间调整按键连接到外部中断引脚P3.3,即 INT1捕捉到一个低电平,就进入该中断进行相关处理;程序如下:;加减程序IINT1:CLR EA JB P3.3,$ PUSH P1 PUSH P2B1: JNBP3.1,DDECIINC: JNB P3.0,SINC;加 1 程序ZINC:;自动加 1MOV R0,#15 A10: ACALL BCDACALL DISPCLKDJNZ R0,A10 MOV A,60H ADD A,#01H DAAMOV 60H,A JNBP3.3,B1 JMPJSSINC:;手动加 1 MOV R3,#20A11: ACALL BCD ACALL DISPCLK DJNZ R3,A11 MOV A,60H ADD A,#01HDAAMOV 60H,A B2:JBP3.3,JSJNB P3.4,SINC JMP B2DDEC:;减 1 程序JNB P3.0,SDECZDEC:MOV R4,#15 A12: ACALL BCDACALL DISPCLK欢迎下载精品学习资源DJNZ R4,A12 MOV A,60H ADD A,#99H DAAMOV 60H,AJB P3.3,JS JMP B1SDEC:;手动减 1 程序MOV R5,#20A13: ACALL BCD ACALL DISPCLK DJNZ R5,A13 MOVA,60H ADDA,#99H DAAMOV60H,A B3: JB P3.3,JSJNB P3.4,SDEC JMP B3JS:MOV 61H,60H POP P2POP P1 SETB EA RETI5.4 系统软件调试5.4.1 TKS 仿真器仿真的概念其实使用特别广,最终的含义就是使用可控的手段来仿照真实的情形;单片机系统开发中的仿真包括软件仿真和硬件仿真;软件仿真这种方法主要是使用运算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有肯定的优点;用户不需要搭建硬件电路就可以对程序进行验证,特殊适合于偏重算法的程 序;软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终仍要通过硬件仿真来完成最终的设计;硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能;使用了附加硬件后用户就可以对程序的运行进行掌握,例如单步、全速、查看资源断点等;5.4.2 集成开发环境 KEILKEIL IDE Vision2集成开发环境主要由以下部分组成: u Vision2 IDE ;ision2 IDE 包括:一个工程治理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以及在线帮忙;使用vision2 创建源文件并组成应用工程加以治理;vision2 可以自动完成编译汇编链接程序的操作; C51 编译器和 A51 汇编器; Vision2 IDE 创建的源文件可以被C51 编译器或 A51 汇编器处理生成可重定位的 object 文件; KEIL C51编译器遵照 ANSI C 语言标准支持 C 语言的全部标准特性,另外欢迎下载精品学习资源仍增加了几个可以直接支持80C51 结构的特性; KEILA51 宏汇编器支持80C51 及其派生系列的全部指令集; LIB51 库治理器; B51 库治理器可以从由汇编器和编译器创建的目标文件建立目标库,这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序 使用了的目标模块而不是全部加以引用; BL51 链接器定位器; L51 链接器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个肯定地址目标模块,肯定地址目标文件或模块包括不行重定位的代码和数据全部的代 码和数据都被固定在详细的储备器单元中;利用 KEIL 开发和调试系统软件流程大致如下:启动 Vision2 ,进入 KEIL 软件的集成开发环境;利用 KEIL内置的文本编辑器进行程序源文件的编辑,由于KEIL集成的文本编辑器对中文支持不是很好,可以挑选其他的编辑器本文使用的文本编辑器是Ultraedit 32, Vision2 能够自动识别外部转变了的源文件;建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式本文采纳外部硬件仿真器仿真调试的方式,即使TKS 仿真器仿真 ,然后对工程进行相关设置;设置好工程后即可进行编译、链接;连接仿真器对软件进行调试;也可以生成下载到单片机储备器上的 HEX 文件;5.4.3 系统软件调试系统的软件调试借助于TKS 仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确;软件调试主要分以下几个步骤进行:功能子程序的调试;能子程序的调试包括运算、采样、数字滤波以及PID 运算等子程序的调试;在调试功能子程序时,很多参数都是未知的,要依据其所需的条件,给出假定的数据,使其运行,假如能完成预定的处理功能或与手工运算的结果相符,就说明该子程序己调试通过;调试时由小到大,由里到外;例如,调试PID 算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调;通调时,也是假定一些数据、参数和初始条件,然后运行程序;当运算结果与手工运算的结果相同时,该算法子程序就调试完成,反之,就要进行相应的修改;其它子程序的调试同理;程序流程的调试;序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序;在调试过程中,先将PID 算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到全部的断点,如全部断点都能运行到,就程序流程基本正确;去掉全部断点,再一次运行程序,查看可控硅状态,从而判定程序流程正确,反之,如程序流程不正确,做相应的修改后,重新调试;功能程序与算法程序的通调;完成整个程序流程的调试后,将PID 等算法子程序加入,在算法子程序前或后设置断点,运行整个程序;当程序在断点处暂停时,查看PID 运算的掌握量与手工运算的值是否相同;多