基于51单片机的智能交通灯系统设计_第1页
基于51单片机的智能交通灯系统设计_第2页
基于51单片机的智能交通灯系统设计_第3页
基于51单片机的智能交通灯系统设计_第4页
基于51单片机的智能交通灯系统设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.1. 设计思路设计思路 .1 2.1 电源提供方案.1 2.2 显示界面方案.2 2.3 输入方案:.2 3 单片机交通控制系统总体设计单片机交通控制系统总体设计 .2 3.1 单片机交通控制系统的通行方案设计.2 3.2 单片机交通控制系统的功能要求.3 3.3 单片机交通控制系统的基本构成及原理.4 4 4 智能交通灯控制系统的硬件设计智能交通灯控制系统的硬件设计 .4 4.1 AT89C51AT89C51 单片机简介.4 4.1.1 AT89C51单片机的主要特性.5 4.1.2 主要引脚功能.5 4.2 交通灯中的中断处理流程.7 4.3 系统硬件总电路构成及原理.8 4.3.1系

2、统硬件电路构成.8 4.3.2系统工作原理.8 4.4 其它硬件介绍及连接.9 4.4.1 八段 LED 数码管 .9 5 系统软件程序的设计系统软件程序的设计 .11 5.1 程序主体设计流程.11 5.2 理论基础知识.12 5.2.1定时器原理.12 5.2.2软件延时原理.13 5.2.3 中断原理.13 5.3 子程序模块设计.13 5.3.1状态灯显示及判断.13 5.3.2 LED倒计时显示.14 5.3.3 紧停及调整时间中断子程序.14 5.3.4 红绿灯时间调整程序.15 5.4 系统软件调试.17 5.4.1 TKS仿真器.17 5.4.2 集成开发环境 KEIL.17

3、参考文献参考文献.17 设计心得体会设计心得体会.18 附录附录19 基于单片机的交通控制系统模拟设计 摘要: 自从 1858 年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里, 交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益 增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功 能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著 的效果。 近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入 人民的生活当中。本模拟交通灯系统利用单片机 AT89C51 作为核心元件,实现了通过信 号灯

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

5、现基本的交通功能, 还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两 项特特殊功能。 (3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体 分配各个器件及模块的基本功能要求。 (4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机 内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了 软件的编写。 2.单片机交通控制系统方案的比较、设计与论证 2.1 电源提供方案 为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案: 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟 电路可供选用;

6、缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要, 节约成本;缺点是输出功率不高。 综上所述,我选择第二种方案。 2.2 显示界面方案 该系统要求完成倒计时功能。基于上述原因,我考虑了二种方案: 方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。 方案二:采用点阵式 LED 显示。这种方案虽然功能强大,并可方便的显示各种英文 字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。 综上所述,我选择第一种方案。 2.3 输入方案: 题目要求系统能调节灯亮时间,并可处理紧急情况,我研究了两种方案:

7、 方案一:采用 8155 扩展 I/O 口及键盘,显示等。该方案的优点是:使用灵活可编程, 并且有 RAM,及计数器。若用该方案,可提供较多 I/O 口,但操作起来稍显复杂。 方案二: 直接在 I/O 口线上接上按键开关。 由于该系统对于交通灯及数码管的控制,只用单片机本身的 I/O 口就可实现,且本 身的计数器及 RAM 已经够用,故选择方案二。 3 单片机交通控制系统总体设计 3.1 单片机交通控制系统的通行方案设计 设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁 行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所 示。说明:黑色表示亮,

8、白色表示灭。交通状态从状态 1 开始变换,直至状态 6 然后循 环至状态 1,周而复始,即如图 2.1 所示: 图 1 交通状态 通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下: 东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时 20 秒。此状态 下,东西向禁止通行,南北向允许通行。 东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时 5 秒。此状态下,除了已经 正在通行中的其他所以车辆都需等待状态转换。 南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时 20 秒。此状态 下,东西向允许通行,南北向禁止通行。 南北方向绿灯灭,同时黄灯亮,东西方向红灯

9、亮,倒计时 5 秒。此状态下,除了已经 正在通行中的其他所以车辆都需等待状态转换。 下面我们可以用图表表示灯状态和行止状态的关系如下: 表 1 交通状态及红绿灯状态 状态 1状态 3状态 4状态 6 东西向禁行等待变换通行等待变换 南北向通行等待变换禁行等待变换 东西红灯 1100 东西黄灯 0001 东西绿灯 0010 南北红灯 0011 南北绿灯 1000 南北黄灯 0100 东西南北四个路口均有红绿黄 3 灯和数码显示管 2 个,在任一个路口,遇红灯禁止 通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表 1 所 示。说明:0 表示灭,1 表示亮。 3.2 单片机交

10、通控制系统的功能要求 本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的 信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。 (1)倒计时显示 倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过” 两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式, 并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的 关键时刻做出复杂判断的 1 种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶 员在“停止”和“通过”两者间作出合适的选择 。 (2)时间的设置 本设计中可通过键盘对时间进行手动设置,增加了人为的可控

11、性,避免自动故障 和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用 的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量 较多时特别浪费 I0 口资源,一般用于按键数量少的系统。后者适用于按键数量较多 的场合,但是在单片机 I0 口资源相对较少而需要较多按键时,此方法仍不能满足设 计要求。本系统要求的按键控制不多,且 I0 口足够,可直接采用独立式。 (3)紧急处理 交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们 都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财 产安全,个人生死攸关等。由此在

12、交通控制中增设禁停按键,就可达到想此目的。 3.3 单片机交通控制系统的基本构成及原理 单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以 指挥交通的具体通行,当然,接入 LED 数码管就可以显示倒计时以提醒行使者,更具人 性化。本系统在此基础上,加入了紧急情况处理与时间调整功能。 单片机最小系统 外围接口电路 LED 数码管显示 红黄绿信号灯 按键 控制电路 图 2 系统的总体框图 据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输 入,信号灯状态模块,LED 倒计时模块模块接受输出。系统的总体框图如上所示。 单片机上电后,系统进入正常工作状态,执

13、行交通灯状态显示控制,同时将时间数 据倒计时输入到 LED 数码管上实时显示。在此过程中随时调用急停按键和时间调节中断。 4 智能交通灯控制系统的硬件设计 4.1 AT89C51AT89C51 单片机简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器, 俗称单片机。AT89C2051 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片 机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失

14、存储器制 造技术制造,与工业标准的 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 个

15、中断源(两个外部中断源和 3 个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 时钟电路: 时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。 中断系统: 中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51 共有 5 个中断源,其中又 2 个外部中断源和 3 个内部中断源。 图 3 AT89C51 系列单片机的内部结构示意图 4.1.2 主要引脚功能 图 4 AT89C51 引脚图 VCC:电源电压 GND:接地 P0 口:P0 口是一组 8 位双向 I0 口。P0 口即可作地址数据总线使用,又可以作 为通用的 I/O 口使用。当 CPU

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

17、配如表 2 表 2 具有第二功能的 P3 口引脚 端口引脚第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外中断 0) P3.3 / INT1(外中断 1) P3.4 T0(定时计数器 0 外部输入) P3.5 T1(定时计数器 1 外部输入) P3.6 / WR(外部数据存储器写选通) P3.7/ RD 外部数据存储器读选通) RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单 片机复位。WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的 DISRT0 位(地址 8EH)可打开或关闭该功能。DISRT0

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

19、脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。 Error!程序储存允许(Error!)输出是外部程序存储器的读选通信号,当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次Error!有效,即输出两个脉冲。 当访问外部数据存储器,没有两次有效的Error!信号。 Error!VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位 LB1 被编程, 复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 VCC 端) ,CPU 则执行内部程序存 储器中的指令。F1a

20、sh 存储器编程时,该引脚加上+12V 的编程电压 Vcc。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 4.1.3 MCS51 的中断源 8051 有 5 个中断源,它们是两个外中断 INT0(P3.2)和 INT1(P3.3)、两个片内定 时/计数器溢出中断 TF0 和 TF1,一个是片内串行口中断 TI 或 RI,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行控制,其中 5 个中断源的程序入口地址如表 4 所 示: 表 3 中断源程序入口 中断源的服务程序入口地址 中断源入口地址 外中断 0 0003H 定时/计数器 0 000BH 外中断 1 0013H 定

21、时/计数器 0 001BH 串行口中断 0023H 4.2 交通灯中的中断处理流程 ()现场保护和现场恢复: 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好, 当中断执行后再恢复现场,包括信号灯和时间显示电路。 ()中断打开和中断关闭: 为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中 断。 ()中断服务程序: 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的 具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红 灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。 () 中断返

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

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

24、号有效,即 K3 键 为低电平时进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下 键,中断结束返回。其二为通行时间调整中断,若 K4 按键有效,进入相应的中断子 程序,对时间进行调整,此后再按 K4 键则中断结束返回。 20pF C1 20pF C2 1K R13 4.7K R1422uF C3 12 12MHZ S? SW-PB VCC VCC GND GND GND VD12VD11VD10VD9VD8VD7VD6VD5VD4VD3VD2VD1 4.7K R12 4.7K R11 4.7K R10 4.7K R9 4.7K R8 4.7K R7 4.7K R6 4.7K R

25、5 4.7K R3 4.7K R4 4.7K R1 4.7K R2 东 东 东东 东 东东 东 东东 东 东东 东 东东 东 东 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东东东东东 P1.0/T2 1 P1.1/T2EX 2 P1.2/ECI 3 P1.3/CEX0 4 P1.4/CEX1 5 P1.5/CEX2 6 P1.6/CEX3 7 P1.7/CEX4 8 RST 9 P3.0/RxD 10 P3.1/TxD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2

26、18 XTAL1 19 VSS 20 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28 PSEN 29 ALE/PROG 30 EA/VPP 31 P0.7/AD7 32 P0.6/AD6 33 P0.5/AD5 34 P0.4/AD4 35 P0.3/AD3 36 P0.2/AD2 37 P0.1/AD1 38 P0.0/AD0 39 VCC 40 IC1 P80C51RA+5N K1 K2 K3 东东东东 东东东东东东 A 1 f 2 g 3 e 4 d

27、 5 A 6 c 8 DP 7 b 9 a 10 DS1 A 1 f 2 g 3 e 4 d 5 A 6 c 8 DP 7 b 9 a 10 DS3 0.2KR15 0.2KR16 0.2KR17 0.2KR18 0.2KR19 0.2KR20 0.2KR21 0.2KR22 东东东东东东东 Q? 2N3904 Q? 2N3904 VCC 图 5 基于单片机的交通灯控制系统电路图 4.4 其它硬件介绍及连接 4.4.1 八段 LED 数码管 LED 显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优 点。LED 数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。

28、以八段共 阳管为例,它有 8 个发光二极管(比七段多一个发光二极管,用来显示 dP,即点),每个 发光二极管的阳极连在一起,如图 3.6 所示。这样,一个 LED 数码管就有 I 根位选线和 8 根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见, 本文主要讨论共阳八段 LED 数码显示管,其他类形的显示管与其类似。 图 6 LED 数码管 LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显 示不同的字形,如 dp,g,f,e,d,c,b,a 全亮显示为,采用共阳极连接驱动代码,代码 表如下表 5 所示。 表 5 驱动代码表 显示数值 dp,

29、g,f,e,d,c,b,a 驱动代码 0C0H 1F9H 2A4H 3B0H 499H 592H 682H 7F8H 880H 990H 相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个 位和十位,然后有 DPTR 调取 LEDMAP 的代码。 LED8 段数码管的设置为每个方位上的一对 2 为显示器。四个方位上总共用 8 个 LED 接 在单片机的 IO 口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接 的 IO 口是对称的。如图 3.7 所示,其中 A,B 分别是 P0,P1 的网络标号。 图 7 LED 连接图 4.4.2 发光二极管 根据本设计

30、的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。 每个方向上设置红绿黄灯,总共 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 程序主体设计流程 全部控制程序实际上分为若干模块:键盘设置处理程

31、序,状态灯控制程序,LED 显示 程序紧停程序,中断服务子程序,红绿灯时间调整程序等。 整个软件程序方面主要分两大部分:主程序部分和中断处理程序。流程图如图 9 所 示。 开始 系统初始化 东西亮绿灯,南北亮红灯 调显示子程序(动态显示) 东西,南北方向换 向 东西黄灯闪烁,南北亮红灯 灯 中断处理子程序 处理 返回 图 9 系统总流程图 设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。 智能交通灯控制系统在正常工作的情况下,每 20s 循环变化一次。每个循环周期在还剩 5s 时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯 即将发生变化。在

32、此期间若中断按键按下则转入中断服务子程序进行相关操作。 5.2 理论基础知识 5.2.1 定时器原理 定时器工作的基本原理其实就是给初值,让它不断加 1 直至减完为模值,这个初值 是送到 TH 和 TL 中的。它是以加法记数的,并能从全 1 到全 0 时自动产生溢出中断请求。 因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为 C,把计数初 值设定为 TC 可得到如下计算通式: TC=M-C 式中,M 为计数器模值。计数值并不是目的,目的是时间值,设计 1 次的时间,即 定时器计数脉冲的周期为 T0,它是单片机系统主频周期的 12 倍,设要求的时间值为 T, 则有 C=TT0。

33、计算通式变为: T=(MTC)T0 模值和计数器工作方式有关。在方式 0 时 M 为 8192;在方式 1 时 M 的值为 65536; 在方式 2 和 3 为 256。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为 12MHZ,经过 12 分频后,若采用方式最大延时只有 8.129 毫秒,采用方式最大延时 也只有 65.536 毫秒。这就是为什么扫描周期为 50ms 的原因, 若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数 器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软 件相结合的办法才能解决这个问题。 5.2.2 软件延时原理

34、 MCS-51 的工作频率为 12MHZ,机器周期与主频有关,机器周期是主频的 12 倍,所以 一个机器周期的时间为 12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这 样我们就可以通过指令的执行条数来确定 1 秒的时间,但同时由于单片机的运行速度很 快其他的指令执行时间可以忽略不计。 5.2.3 中断原理 本系统主要使用了外部中断,中断信号有引脚 INT0 和 INT1 输入,低电平有效,CPU 每个时钟周期都会检测 INT0 和 INT1 上的信号,8051 允许外部中断以电平方式或负边沿 方式两种中断方式输入中断请求信号,可由用户通过设置 TCON 中 IT0 和 I

35、T1 位的状态来 实现。以 IT0 为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用 电平方式,IE0 为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0 自动 清零。IE 中的 EA 为允许中断的总控制位,为 1 开启,EX0 为外部中断允许控制位,为 1 开启。 在优先级的允许下,一旦有外部中断信号产生,单片机 CPU 首先保护断点,PC 值进 栈,然后执行相应的中断服务子程序,执行完后,用 RETI 指令返回,此时 CPU 会从堆栈 中取保存的断点地址,送回 PC,程序再正常执行。 5.3 子程序模块设计 5.3.1 状态灯显示及判断 在本设计中,实

36、际控制的灯只有 6 个,即:东西红灯,东西绿灯,东西黄灯,南北 红灯,南北绿灯,南北黄灯。定义 IO 端口如下,其中均是低电平有效。 H_RED BIT P1.0 H_YELLOW BIT P1.1 H_GREEN BIT P1.2 L_RED BIT P1.3 L_ YELLOW BIT P1.4 L_ GREEN BIT P1.5 共有 4 钟状态:东西红灯亮,南北绿灯亮(0F3H) ;东西红灯亮,南北黄灯亮 (0F5H) ;东西绿灯亮,南北红灯亮(0DEH) ;东西黄灯亮,南北红灯亮(0EEH) 。 括号中是 P1 端口 8 个引脚值对应的十六进制码。 用于显示发光二极管时,部分程序如下

37、: ;东西红,南北绿,计时时间为 20s MOV P1,#0F3H MOV 60H,61H A1: MOV R1,#50 A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H MOV R0,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A1 5.3.2 LED 倒计时显示 LED 计时每 1 秒都要刷新 1 次,采用的是动态显示,首先将 R4 除以 10H,整数即十 位放在 50H 中,余数即个位放在 51H 中,设置 7 段 LED 显示数据的数据表,用数据指针 寄存器 DPTR 指向数据表的首地址,再加上

38、A 中的偏移量,就可以指向十位数字,然后 送显即可,个位显示同理。具体程序如下: BCD: ;将十位数送到(51) ,个位数送到() MOV A,60H;60H 单元放的是倒计时值 MOV B,#10H DIV AB MOV 51H,A MOV A,B MOV 50H,A RET DISPCLK: ;显示部分 MOV DPTR,#TAB MOVA,50H MOVC A,A+DPTR MOVP0,A CLRP2.6 LCALL DELAY SETBP2.6 MOVA,51H MOVC A,A+DPTR MOVP0,A CLRP2.7 LCALL DELAY SETBP2.7 RET 5.3.3

39、紧停及调整时间中断子程序 紧停按键连接到外部中断引脚 P3.2,即 INT0 捕获到一个低电平,则进入该中断进行 相关处理。程序如下: ;紧急情况处理 IINT0: CLR EA JB P3.2,$ PUSH 60H PUSH P1 PUSH P2 B0: JNB P3.0,NH JNB P3.1,DH ;全红 A9: MOV P1,#0F6H SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JE ;只允许东西方向车辆通行 NH: MOV P1,#0DEH SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 J

40、MP JE ;只允许南北方向车辆通行 DH: MOV P1,#0F3H SETB P2.6 SETB P2.7 ACALL DELAY JNB P3.2,B0 JMP JE JE: POP P2 POP P1 POP 60H SETB EA RETI 5.3.4 红绿灯时间调整程序 时间调整按键连接到外部中断引脚 P3.3,即 INT1 捕获到一个低电平,则进入该中断 进行相关处理。程序如下: ;加减程序 IINT1: CLR EA JB P3.3,$ PUSH P1 PUSH P2 B1: JNB P3.1,DDEC IINC: JNB P3.0,SINC ;加 1 程序 ZINC: ;自动

41、加 1 MOV R0,#15 A10: ACALL BCD ACALL DISPCLK DJNZ R0,A10 MOV A,60H ADD A,#01H DA A MOV 60H,A JNB P3.3,B1 JMP JS SINC: ;手动加 1 MOV R3,#20 A11: ACALL BCD ACALL DISPCLK DJNZ R3,A11 MOV A,60H ADD A,#01H DA A MOV 60H,A B2: JB P3.3,JS JNB P3.4,SINC JMP B2 DDEC: ;减 1 程序 JNB P3.0,SDEC ZDEC: MOV R4,#15 A12: AC

42、ALL BCD ACALL DISPCLK DJNZ R4,A12 MOV A,60H ADD A,#99H DA A MOV 60H,A JB P3.3,JS JMP B1 SDEC: ;手动减 1 程序 MOV R5,#20 A13: ACALL BCD ACALL DISPCLK DJNZ R5,A13 MOV A,60H ADD A,#99H DA A MOV 60H,A B3: JB P3.3,JS JNB P3.4,SDEC JMP B3 JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI 5.4 系统软件调试 5.4.1 TKS 仿真器 仿真的概

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

44、sion2 集成开发环境主要由以下部分组成: u Vision2 IDE。ision2 IDE 包括:一个工程管理器,一个功能丰富并有交互式错误提示 的编辑器选项设置生成工具,以及在线帮助。使用 vision2 创建源文件并组成应用工程 加以管理。vision2 可以自动完成编译汇编链接程序的操作; C51 编译器和 A51 汇编器。Vision2 IDE 创建的源文件可以被 C51 编译器或 A51 汇编器 处理生成可重定位的 object 文件。KEIL C51 编译器遵照 ANSI C 语言标准支持 C 语言 的所有标准特性,另外还增加了几个可以直接支持 80C51 结构的特性。KEIL

45、 A51 宏 汇编器支持 80C51 及其派生系列的所有指令集; LIB51 库管理器。B51 库管理器可以从由汇编器和编译器创建的目标文件建立目标库, 这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库 时仅仅使用了库中程序使用了的目标模块而不是全部加以引用; BL51 链接器定位器。L51 链接器使用从库中提取出来的目标模块和由编译器汇编器生成 的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的 代码和数据所有的代码和数据都被固定在具体的存储器单元中。 利用 KEIL 开发和调试系统软件流程大致如下: 启动 Vision2,进入 KEIL 软

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

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

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

49、流程的调试后,将 PID 等算法子程序加入, 在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看 PID 计 算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程 序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要 做相应的修改后重新调。 参考文献: l边海龙,孙永奎 . 单片机开发与典型工程项目实例详解J.电子工业出版 社, 2008,(10):143-160. 2张鑫,华臻,陈书谦. 单片机原理及应用 J.电子工业出版社, 2008(5). 3黄智伟 .凌阳单片机课程设计指导J. 北京航空航天大学出版社, 2007, 4余锡存

50、 曹国华 .单片机原理及接口技术M.陕西 :西安电子科技大学出版 社,2000.7 5雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.2 6柴钰.单片机原理和应用M.西安电子科技大学出版社. 7张靖武.单片机系统的 PROTUSE 设计和仿真M.电子工业出版社.2007. 8唐 工.51 单片机工程应用实例M. 设计心得体会 经过两周的努力工作,终于完成了自己的单片机课程设计。虽说忙碌了点, 但我觉得这样的生活充实且有成就感,当然,也获益匪浅。 在焊接过程中,我学会应先合理的布局,并认真检查每个元器件,确保无 误后再焊接。还有,不能急于求成,要焊接一个模块,检查一个模块,免得

51、整 个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。自然,我也学会 如何去发现问题与解决问题的一些方法。 至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的 熟悉程度。可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即 软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示) 及其如何选择。当然,通过几次反复调试过程,使得我对汇编指令有了更深刻 的理解。 在整个课程设计过程我还掌握了一下几点: (1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。 (2)理解了最单片机的各部分组成及特性。 (3)熟练使用了各种计算机辅助设计工具完成设计,

52、充分掌握了这些工具 的使用。 (4)学会了利用Keil uVision3对汇编语言进行编译过程.更进一步加深了对 PROTEUS软件的学习。 还有,我还发现自身一些毛病。一,前期准备工作做的不够好,想的还算 多,可就是没落实。先说选题,就表现自己有畏难情绪,其实当时找到好几个 题目,但交通灯最熟悉,所以就选了它。就这,还没做的很理想,还有好些功 能可以加上去,像通过测流量来自动调整通行时间,加个监控电路,看门狗电 路等。二,行动起来不是很卖力,虽说动手还算早,但每天的进展却不大,可 以说做与玩相伴而行。 通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过 通过设计,还是学到了一些

53、书本上没有学到的东西,为自己以后的学习起了很 大的帮助。就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一 定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件 的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要 问题而逐步得到解决。同时我也懂得,在整个设计过程中,生活中也一样,一 定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。 我觉得类似这种课程设计的实践真的不错,通过这些项目练习,我自学能 力,解决实际问题的能力得到提高,可以说是对综合素质全面提升,我想这也 是我们上大学应真正学到的。 附录 附录一:系统总体原理图 20p

54、F C1 20pF C2 1K R13 4.7K R1422uF C3 12 12MHZ S? SW-PB VCC VCC VCC GND GND GND VD12VD11VD10VD9VD8VD7VD6VD5VD4VD3VD2VD1 4.7K R12 4.7K R11 4.7K R10 4.7K R9 4.7K R8 4.7K R7 4.7K R6 4.7K R5 4.7K R3 4.7K R4 4.7K R1 4.7K R2 东 东 东东 东 东东 东 东东 东 东东 东 东东 东 东 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 东东东东东 P1.0/T2 1 P1.1/T

55、2EX 2 P1.2/ECI 3 P1.3/CEX0 4 P1.4/CEX1 5 P1.5/CEX2 6 P1.6/CEX3 7 P1.7/CEX4 8 RST 9 P3.0/RxD 10 P3.1/TxD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19 VSS 20 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28 PSEN

56、 29 ALE/PROG 30 EA/VPP 31 P0.7/AD7 32 P0.6/AD6 33 P0.5/AD5 34 P0.4/AD4 35 P0.3/AD3 36 P0.2/AD2 37 P0.1/AD1 38 P0.0/AD0 39 VCC 40 IC1 P80C51RA+5N K1 K2 K3 东东东东 东东东东东东 A 1 f 2 g 3 e 4 d 5 A 6 c 8 DP 7 b 9 a 10 DS1 A 1 f 2 g 3 e 4 d 5 A 6 c 8 DP 7 b 9 a 10 DS3 0.2KR15 0.2KR16 0.2KR17 0.2KR18 0.2KR19 0.

57、2KR20 0.2KR21 0.2KR22 东东东东东东东 Q? 2N3904 Q? 2N3904 VCC 附录二:系统程序清单 ORG 0000H LJMP START ORG 0003H LJMP IINT0 ORG 0013H LJMP IINT1 ORG 0030H START: MOV SP,#6FH ;系统初始化 MOV 61H,#20H MOV 60H,61H LIGHT: SETB EA SETB EX0 SETB EX1 CLR IT1 CLR IT0 MOV P1,#0F3H ;东西红,南北绿,计时时间为 15s MOV 60H,61H A1: MOV R1,#50 A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H MOV R0,60H ADD A,#99H DA A MOV 60H,A CJNE R0,#05H,A1 MOV P1,#0F5H ; 东西红,南北黄灯闪烁 5s MOV R2,#5 A3: MOV R1,#50 A4: ACAL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论