收藏 分享(赏)

51单片机.doc

上传人:eukav 文档编号:7535448 上传时间:2019-05-21 格式:DOC 页数:25 大小:315.89KB
下载 相关 举报
51单片机.doc_第1页
第1页 / 共25页
51单片机.doc_第2页
第2页 / 共25页
51单片机.doc_第3页
第3页 / 共25页
51单片机.doc_第4页
第4页 / 共25页
51单片机.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、基于单片机的交通控制系统模拟设计1基于 51 单片机的论文学院:电子信息及自动化学号:11007990607姓名:何俊基于单片机的交通控制系统模拟设计2基于 51 单片机的交通控制系统模拟设计摘要: 自从 1858 年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。

2、本模拟交通灯系统利用单片机 AT89C51 作为核心元件,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。本模拟系统由单片机硬/软件系统,两位 8 段数码管和 LED 灯显示系统。和复位电路控制电路等组成,较好的模拟了交通路面的控制。关键词:交通灯 单片机 数码管基于单片机的交通控制系统模拟设计31. 设计思路(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。(2)确定系统交通控制的总体设计,包括,十字路

3、口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。 (3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。2 单片机交通控制系统总体设计2.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另

4、一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态 1 开始变换,直至状态 6 然后循环至状态 1,周而复始,即如图 2.1 所示:基于单片机的交通控制系统模拟设计4图 1 交通状态通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时 20 秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时 5 秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯亮,东西方向

5、黄灯灭,同时红灯亮,倒计时 20 秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时 5 秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系如下:表 1 交通状态及红绿灯状态状态 1 状态 3 状态 4 状态 6东西向 禁行 等待变换 通行 等待变换南北向 通行 等待变换 禁行 等待变换东西红灯 1 1 0 0东西黄灯 0 0 0 1东西绿灯 0 0 1 0南北红灯 0 0 1 1南北绿灯 1 0 0 0南北黄灯 0 1 0 0东西南北四个路口均有红绿黄 3 灯和数码显示管 2 个,在任一个

6、路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表 1 所示。说明:0 表示灭,1 表示亮。2.2 单片机交通控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。基于单片机的交通控制系统模拟设计5(1)倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的 1 种方法,

7、它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。(2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费 I0 口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机 I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且 I0 口足够,可直接采用独立式。(3)紧急处理交通路口出现紧急状况在所难免,如特大

8、事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通控制中增设禁停按键,就可达到想此目的。2.3单片机交通控制系统的基本构成及原理单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入 LED 数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了紧急情况处理与时间调整功能。单片机最小系统外围接口电路LED 数码管显示红黄绿信号灯按键控制电路图 2 系统的总体框图据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入

9、,信号灯状态模块,LED 倒计时模块模块接受输出。系统的总体框图如上所示。基于单片机的交通控制系统模拟设计6单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到 LED 数码管上实时显示。在此过程中随时调用急停按键和时间调节中断。3 智能交通灯控制系统的硬件设计3.1 AT89C51单片机简介AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪烁

10、可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.1 AT89C51 单片机的主要特性与 MCS-51 兼容 ,4K 字节可编程闪烁存储器 ,寿命:1000 写/ 擦循环,数据保留时间:10 年,全静态工作:0Hz-24Hz,三级程序

11、存储器锁定, 128*8位内部 RAM,32 可编程 I/O 线,两个 16 位定时器/计数器,5 个中断源(两个外部中断源和 3 个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。中断系统:中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51 共有 5 个中断源,其中又 2 个外部中断源和 3 个内部中断源。基于单片机的交通控制系统模拟设计7图 3 AT89C51 系列单片机的内部结构示意图3.1.2 主要引脚功能图 4 AT89C51 引脚图VCC:电源电压GND:接地P0 口

12、:P0 口是一组 8 位双向 I0 口。P0 口即可作地址数据总线使用,又可以作为通用的 I/O 口使用。当 CPU 访问片外存储器时,P0 口分时先作低 8位地址总线,后作双向数据总线,此时,P0 口就不能再作 I/O 口使用了。在访问期间激活要使用上拉电阻。P1 口:Pl 是一个带内部上拉电阻的 8 准位双向 IO 口,P1 作为通用的I/O 口使用。P2 口:P2 是一个带有内部上拉电阻的 8 位准双向 IO 口,P2 即可作为通用的 I/O 口使用,也可以作为片外存储器的高 8 位地址总线,与 P0 口配合,组成 16 位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的

13、8 位准双向 I0 口。P3 口除了作为通用的 I/O 口使用之外,每个引脚还具有第二功能,具体分配如表 2表 2 具有第二功能的 P3 口引脚端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外中断 0)P3.3 / INT1(外中断 1)P3.4 T0(定时计数器 0 外部输入)基于单片机的交通控制系统模拟设计8P3.5 T1(定时计数器 1 外部输入)P3.6 / WR(外部数据存储器写选通)P3.7 / RD 外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使

14、该引脚输出高电平,设置 SFR AUXR 的DISRT0 位(地址 8EH)可打开或关闭该功能。DISRT0 位缺省为 RESET 输出高电平打开状态。ALEError!:当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的 16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲( PROG) 。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,

15、可禁止 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。Error!程序储存允许(Error! )输出是外部程序存储器的读选通信号,当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次 Error!有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的Error!信号。Error!VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位LB1 被编程,复位时内部会锁存 EA

16、 端状态。如 EA 端为高电平(接 VCC 端) ,CPU 则执行内部程序存储器中的指令。F1ash 存储器编程时,该引脚加上+12V的编程电压 Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。3.1.3 MCS51 的中断源8051 有 5 个中断源,它们是两个外中断 INT0(P3.2 )和 INT1(P3.3)、两个片内定时/计数器溢出中断 TF0 和 TF1,一个是片内串行口中断 TI 或 RI,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行控制,其中 5 个中断源的程序入口地址如表 4 所示:表 3 中断源程序入口中断源的服务程序入口地址中断源 入口地址

17、外中断 0 0003H定时 /计数器 0 000BH外中断 1 0013H基于单片机的交通控制系统模拟设计9定时 /计数器 0 001BH串行口中断 0023H3.2 交通灯中的中断处理流程()现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。()中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。()中断服务程序:有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为

18、红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。() 中断返回:执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。3.3 系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用 AT89C51 单片机及外围器件构成最小控制系统,12 个发光二极管分成 4 组红绿黄三色灯构成信号灯指示模块,8个 LED 东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按钮。3.3.1 系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,LED 显示,按键,组成。其具体的硬件电路总图如图 3.1 所示。其中 P0 用于送显两片

19、 LED 数码管,P1 用于控制红绿黄发光二极管,XTAL1 和 XTAL2 接入晶振时钟电路, REST 引脚接上复位电路, P2.6 与 P2.7对数码管进行片选,P3.2 即 INT0 紧急情况处理按键, P3.3 即 INT1 接时间调整中断按键。3.3.2 系统工作原理系统上电或手动复位之后,系统先显示状态灯及 LED 数码管,将状态码值送显 P1 口,将要显示的时间值的个位和十位分别送显 P0 口,在此同时用软件方法计时 1 秒,到达 1s 就要将时间值减 1,刷新 LED 数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,当然

20、,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即 K3 键为低电平时进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下键,中断结束返回。其二为通行时间调整中断,若 K4 按键有效,进入相应的中断子程序,对时间进行调整,此后再按 K4 键则中断结束返回。基于单片机的交通控制系统模拟设计1020pFC1KR34.7uMHZS?W-PBVGND9865东/TEXIxALO+fgedcbaQ图 5 基于单片机的交通灯控制系统电路图3.4 其它硬件介绍及连接3.4.1 八段 LED 数码管LED 显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LE

21、D 数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有 8 个发光二极管(比七段多一个发光二极管,用来显示 dP,即点),每个发光二极管的阳极连在一起,如图 3.6 所示。这样,一个 LED 数码管就有 I 根位选线和 8 根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED 数码显示管,其他类形的显示管与其类似。基于单片机的交通控制系统模拟设计11图 6 LED 数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a 全亮显示为,

22、采用共阳极连接驱动代码,代码表如下表 5 所示。表 5 驱动代码表显示数值 dp,g,f,e,d,c,b,a 驱动代码0 11010000 C0H1 11111001 F9H2 10100100 A4H3 10110000 B0H4 10011001 99H5 10010010 92H6 10000010 82H7 11111000 F8H8 10000000 80H9 10010000 90H相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有 DPTR 调取 LEDMAP 的代码。LED8 段数码管的设置为每个方位上的一对 2 为显示器。四个方位上总共用

23、8 个 LED 接在单片机的 IO 口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的 IO 口是对称的。如图 3.7 所示,其中 A,B 分别是P0,P1 的网络标号。图 7 LED 连接图3.4.2 发光二极管根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共 4 组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图 8 所示。基于单片机的交通控制系统模拟设计12图 8 信号灯的连接3.4.3 按键控制本设计设置了有 5 个键:K1 键 P3.0,K2 键 P3.1,K3 键 P3

24、.2,K4 键P3.3,K5 键 P3.4,每个按键一端接地,另一端接对应的 P3 端口。低电平有效,当按键按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。4 系统软件程序的设计4.1 程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED 显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。整个软件程序方面主要分两大部分:主程序部分和中断处理程序。流程图如图 9 所示。基于单片机的交通控制系统模拟设计13开始系统初始化东西亮绿灯,南北亮红灯调显示子程序(动态显示)东西,南北方向换向东西黄灯闪烁,南北亮红灯灯中断处理子程序处理返回图 9 系统总流

25、程图设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。智能交通灯控制系统在正常工作的情况下,每 20s 循环变化一次。每个循环周期在还剩 5s 时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。在此期间若中断按键按下则转入中断服务子程序进行相关操作。4.2 理论基础知识4.2.1 定时器原理定时器工作的基本原理其实就是给初值,让它不断加 1 直至减完为模值,这个初值是送到 TH 和 TL 中的。它是以加法记数的,并能从全 1 到全 0 时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为 C,把

26、计数初值设定为 TC 可得到如下计算通式:TC=M-C式中,M 为计数器模值。计数值并不是目的,目的是时间值,设计 1 次的时间,即定时器计数脉冲的周期为 T0,它是单片机系统主频周期的 12 倍,设要求的时间值为 T,则有 C=TT0 。计算通式变为:T=(M TC )T0模值和计数器工作方式有关。在方式 0 时 M 为 8192;在方式 1 时 M 的值为 65536;在方式 2 和 3 为 256。就此可以算出各种方式的最大延时。如单片机基于单片机的交通控制系统模拟设计14的主脉冲频率为 12MHZ,经过 12 分频后,若采用方式最大延时只有 8.129毫秒,采用方式最大延时也只有 65

27、.536 毫秒。这就是为什么扫描周期为50ms 的原因,若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。4.2.2 软件延时原理MCS-51 的工作频率为 12MHZ,机器周期与主频有关,机器周期是主频的 12倍,所以一个机器周期的时间为 12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定 1 秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。4.2.3 中断原理本系统主要使用了外部中断

28、,中断信号有引脚 INT0 和 INT1 输入,低电平有效,CPU 每个时钟周期都会检测 INT0 和 INT1 上的信号,8051 允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON 中 IT0 和 IT1 位的状态来实现。以 IT0 为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0 为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0 自动清零。IE 中的 EA 为允许中断的总控制位,为 1 开启,EX0 为外部中断允许控制位,为 1 开启。在优先级的允许下,一旦有外部中断信号产生,单片机 CPU 首

29、先保护断点,PC 值进栈,然后执行相应的中断服务子程序,执行完后,用 RETI 指令返回,此时 CPU 会从堆栈中取保存的断点地址,送回 PC,程序再正常执行。 4.3 子程序模块设计4.3.1 状态灯显示及判断在本设计中,实际控制的灯只有 6 个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义 IO 端口如下,其中均是低电平有效。H_RED BIT P1.0H_YELLOW BIT P1.1H_GREEN BIT P1.2L_RED BIT P1.3L_ YELLOW BIT P1.4L_ GREEN BIT P1.5共有 4 钟状态:东西红灯亮,南北绿灯亮(0F3H)

30、 ;东西红灯亮,南北黄灯亮(0F5H) ;东西绿灯亮,南北红灯亮(0DEH ) ;东西黄灯亮,南北红灯亮(0EEH) 。括号中是 P1 端口 8 个引脚值对应的十六进制码。用于显示发光二极管时,部分程序如下: ;东西红,南北绿,计时时间为 20sMOV P1,#0F3HMOV 60H,61H基于单片机的交通控制系统模拟设计15A1: MOV R1,#50A2: ACALL BCDACALL DISPCLKDJNZ R1,A2MOV A,60HMOV R0,60HADD A,#99HDA AMOV 60H,ACJNE R0,#05H,A14.3.2 LED 倒计时显示LED 计时每 1 秒都要刷

31、新 1 次,采用的是动态显示,首先将 R4 除以10H,整数即十位放在 50H 中,余数即个位放在 51H 中,设置 7 段 LED 显示数据的数据表,用数据指针寄存器 DPTR 指向数据表的首地址,再加上 A 中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。具体程序如下:BCD: ;将十位数送到(51) ,个位数送到()MOV A,60H ;60H 单元放的是倒计时值MOV B,#10HDIV ABMOV 51H,AMOV A,BMOV 50H,ARETDISPCLK: ;显示部分MOV DPTR,#TABMOV A,50HMOVC A,A+DPTRMOV P0,ACLR P2.

32、6LCALL DELAYSETB P2.6MOV A,51HMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7RET 4.3.3 紧停及调整时间中断子程序基于单片机的交通控制系统模拟设计16紧停按键连接到外部中断引脚 P3.2,即 INT0 捕获到一个低电平,则进入该中断进行相关处理。程序如下:;紧急情况处理IINT0:CLR EAJB P3.2,$PUSH 60H PUSH P1PUSH P2B0: JNB P3.0,NHJNB P3.1,DH;全红A9: MOV P1,#0F6HSETB P2.6SETB P2.7ACALL DELAYJNB

33、 P3.2,B0JMP JE;只允许东西方向车辆通行NH: MOV P1,#0DEHSETB P2.6SETB P2.7ACALL DELAYJNB P3.2,B0JMP JE;只允许南北方向车辆通行DH: MOV P1,#0F3HSETB P2.6SETB P2.7ACALL DELAYJNB P3.2,B0JMP JEJE: POP P2POP P1POP 60HSETB EARETI4.3.4 红绿灯时间调整程序时间调整按键连接到外部中断引脚 P3.3,即 INT1 捕获到一个低电平,则进入该中断进行相关处理。程序如下:基于单片机的交通控制系统模拟设计17;加减程序IINT1:CLR E

34、AJB P3.3,$ PUSH P1PUSH P2B1: JNB P3.1,DDECIINC: JNB P3.0,SINC ;加 1 程序ZINC: ;自动加 1MOV R0,#15A10: ACALL BCDACALL DISPCLKDJNZ R0,A10MOV A,60H ADD A,#01HDA A MOV 60H,AJNB P3.3,B1JMP JSSINC: ;手动加 1MOV R3,#20A11: ACALL BCDACALL DISPCLKDJNZ R3,A11MOV A,60H ADD A,#01HDA A MOV 60H,AB2: JB P3.3,JSJNB P3.4,SIN

35、CJMP B2DDEC: ;减 1 程序JNB P3.0,SDEC ZDEC:MOV R4,#15A12: ACALL BCDACALL DISPCLKDJNZ R4,A12MOV A,60HADD A,#99HDA A基于单片机的交通控制系统模拟设计18MOV 60H,AJB P3.3,JSJMP B1SDEC: ;手动减 1 程序MOV R5,#20A13: ACALL BCDACALL DISPCLKDJNZ R5,A13MOV A,60HADD A,#99HDA AMOV 60H,AB3: JB P3.3,JSJNB P3.4,SDECJMP B3JS: MOV 61H,60HPOP

36、P2POP P1SETB EARETI4.4 系统软件调试4.4.1 TKS 仿真器仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、

37、查看资源断点等。4.4.2 集成开发环境 KEILKEIL IDE Vision2 集成开发环境主要由以下部分组成: u Vision2 IDE。ision2 IDE 包括:一个工程管理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以及在线帮助。使用 vision2 创建源文件并组成应用工程加以管理。vision2 可以自动完成编译汇编链接程序的操作;基于单片机的交通控制系统模拟设计19 C51 编译器和 A51 汇编器。Vision2 IDE 创建的源文件可以被 C51 编译器或A51 汇编器处理生成可重定位的 object 文件。KEIL C51 编译器遵照 ANSI C语言

38、标准支持 C 语言的所有标准特性,另外还增加了几个可以直接支持80C51 结构的特性。KEIL A51 宏汇编器支持 80C51 及其派生系列的所有指令集; LIB51 库管理器。B51 库管理器可以从由汇编器和编译器创建的目标文件建立目标库,这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了的目标模块而不是全部加以引用;BL51 链接器定位器。L51 链接器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储器单元中。利用 KE

39、IL 开发和调试系统软件流程大致如下:启动 Vision2,进入 KEIL 软件的集成开发环境;利用 KEIL 内置的文本编辑器进行程序源文件的编辑,因为 KEIL 集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是 Ultraedit32),Vision2 能够自动识别外部改变了的源文件;建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使 TKS 仿真器仿真) ,然后对工程进行相关设置;设置好工程后即可进行编译、链接。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的 HEX 文件

40、。4.4.3 系统软件调试系统的软件调试借助于 TKS 仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及 PID 运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试 PID 算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。通调时,也是假定一些数

41、据、参数和初始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它子程序的调试同理;程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将 PID 算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去基于单片机的交通控制系统模拟设计20掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,

42、做相应的修改后,重新调试;功能程序与算法程序的通调。完成整个程序流程的调试后,将 PID 等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看 PID 计算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。附录附录一:系统总体原理图 20pFC1KR34.7uMHZS?W-PBVGND9865东/TEXIxALO+fgedcbaQ附录二:程序ORG 0000HLJMP STARTORG 0003HLJMP IINT0ORG 0013HLJMP

43、IINT1基于单片机的交通控制系统模拟设计21ORG 0030HSTART: MOV SP,#6FH ;系统初始化MOV 61H,#20HMOV 60H,61HLIGHT: SETB EASETB EX0SETB EX1CLR IT1CLR IT0MOV P1,#0F3H ;东西红,南北绿,计时时间为 15sMOV 60H,61HA1: MOV R1,#50A2: ACALL BCDACALL DISPCLKDJNZ R1,A2MOV A,60HMOV R0,60HADD A,#99HDA AMOV 60H,ACJNE R0,#05H,A1MOV P1,#0F5H ; 东西红,南北黄灯闪烁 5

44、sMOV R2,#5 A3: MOV R1,#50 A4: ACALL BCDACALL DISPCLKDJNZ R1,A4CPL P1.1MOV A,60HADD A,#99HDA AMOV 60H,ADJNZ R2,A3MOV P1,#0DEH ;东西绿,南北红,计时时间 20sMOV 60H,61HA5: MOV R1,#50A6: ACALL BCDACALL DISPCLKDJNZ R1,A6基于单片机的交通控制系统模拟设计22MOV R0,60HMOV A,60HADD A,#99HDA AMOV 60H,ACJNE R0,#05H,A5MOV P1,#0EEH ;南北红,东西黄灯

45、闪烁 5sMOV R2,#5A7: MOV R1,#50 A8: ACALL BCDACALL DISPCLKDJNZ R1,A8CPL P1.4MOV A,60HADD A,#99HDA A MOV 60H,ADJNZ R2,A7LJMP LIGHT ;连续运行返回部分DISPCLK: ;显示部分MOV DPTR,#TABMOV A,50HMOVC A,A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6MOV A,51HMOVC A,A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7RET BCD: ;将十位数送到(51)

46、,个位数送到() MOV A,60HMOV B,#10H基于单片机的交通控制系统模拟设计23DIV ABMOV 51H,AMOV A,BMOV 50H,ARETIINT0: ;紧急情况处理CLR EAJB P3.2,$PUSH 60H PUSH P1PUSH P2B0: JNB P3.0,NHJNB P3.1,DHA9: MOV P1,#0F6H ;全红SETB P2.6SETB P2.7ACALL DELAYJNB P3.2,B0JMP JENH: MOV P1,#0DEH ;只允许东西方向车辆通行SETB P2.6SETB P2.7ACALL DELAYJNB P3.2,B0JMP JED

47、H: MOV P1,#0F3H ;只允许南北方向车辆通行SETB P2.6SETB P2.7ACALL DELAYJNB P3.2,B0JMP JEJE: POP P2POP P1POP 60HSETB EARETI 基于单片机的交通控制系统模拟设计24IINT1: ;通行时间加减程序CLR EAJB P3.3,$ PUSH P1PUSH P2B1: JNB P3.1,DDECIINC: JNB P3.0,SINC ;加 1 程序ZINC: ;自动加 1MOV R0,#15A10: ACALL BCDACALL DISPCLKDJNZ R0,A10MOV A,60H ADD A,#01HDA

48、A MOV 60H,AJNB P3.3,B1JMP JSSINC: ;手动加 1MOV R3,#20A11: ACALL BCDACALL DISPCLKDJNZ R3,A11MOV A,60H ADD A,#01HDA A MOV 60H,AB2: JB P3.3,JSJNB P3.4,SINCJMP B2DDEC: ;减 1 程序JNB P3.0,SDEC ZDEC:MOV R4,#15A12: ACALL BCDACALL DISPCLKDJNZ R4,A12MOV A,60HADD A,#99H基于单片机的交通控制系统模拟设计25DA AMOV 60H,AJB P3.3,JSJMP B1SDEC: ;手动减 1 程序MOV R5,#20A13: ACALL BCDACALL DISPCLKDJNZ R5,A13MOV A,60HADD A,#99HDA AMOV 60H,AB3: JB P3.3,JSJNB P3.4,SDECJMP B3JS: MOV 61H,60HPOP P2POP P1SETB EARETI ;10MS 延时DELAY: MOV R6,#25DEL1: MOV R7,#200DEL2: DJNZ R7,DEL2DJNZ R6,DEL1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报