1. 设计思路 ................................................................................................................................................................ 1 电源提供方案
为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案: ................................................................... 1 显示界面方案 .......................................................................................................................................................... 2 输入方案: .............................................................................................................................................................. 2 3 单片机交通控制系统总体设计 ............................................................................................................................... 2 单片机交通控制系统的通行方案设计 ................................................................................................................... 2 单片机交通控制系统的功能要求 ........................................................................................................................... 3 单片机交通控制系统的基本构成及原理 ............................................................................................................... 4 4智能交通灯控制系统的硬件设计 ............................................................................................................................ 4 ATC51单片机简介 ............................................................................................................................................... 4 ATC51单片机的主要特性 .............................................................................................................................. 5
主要引脚功能 ...................................................................................................................................................... 5
交通灯中的中断处理流程....................................................................................................................................... 7 系统硬件总电路构成及原理 ................................................................................................................................... 8
系统硬件电路构成 .............................................................................................................................................. 8
系统工作原理 ...................................................................................................................................................... 8
其它硬件介绍及连接 .............................................................................................................................................. 9 八段LED数码管 ..................................................................................................................................................... 9 5 系统软件程序的设计 ............................................................................................................................................. 11 程序主体设计流程 ................................................................................................................................................ 11 理论基础知识 ........................................................................................................................................................ 12
定时器原理 ........................................................................................................................................................ 12 软件延时原理 .................................................................................................................................................... 13
中断原理 ................................................................................................................................................................ 13 子程序模块设计 .................................................................................................................................................... 13
状态灯显示及判断 ............................................................................................................................................ 13 LED倒计时显示 ................................................................................................................................................ 14 紧停及调整时间中断子程序 ............................................................................................................................ 14 红绿灯时间调整程序 ........................................................................................................................................ 15
系统软件调试 ........................................................................................................................................................ 17 TKS仿真器 ........................................................................................................................................................ 17
集成开发环境KEIL ........................................................................................................................................... 17
参考文献……………………………………………………………………………………………..17 设计心得体会………………………………………………………………………………………...18 附录……………………………………………………………………………………………………19
0
-
基于单片机的交通控制系统模拟设计
摘要: 自从1858年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。
近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。本模拟交通灯系统利用单片机ATC51作为核心元件,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。和复位电路控制电路等组成,较好的模拟了交通路面的控制。
关键词:交通灯 单片机 数码管
1. 设计思路
(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。
(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。
(3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。
(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。
2.单片机交通控制系统方案的比较、设计与论证
电源提供方案
为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案:
方案一:采用的稳压电源。此方案的优点是稳定可靠,且有各种成熟
电路可供选用;缺点是各模块都采用电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要, 节约成本;缺点是输出功率不高。
综上所述,我选择第二种方案。
1
-
显示界面方案
该系统要求完成倒计时功能。基于上述原因,我考虑了二种方案:
方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。
方案二:采用点阵式LED 显示。这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
综上所述,我选择第一种方案。 输入方案:
题目要求系统能调节灯亮时间,并可处理紧急情况,我研究了两种方案:
方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在I/O口线上接上按键开关。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
3 单片机交通控制系统总体设计
单片机交通控制系统的通行方案设计
设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图所示:
2
-
图1 交通状态
通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:
◆东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。
◆东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
◆南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向允许通行,南北向禁止通行。
◆南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
下面我们可以用图表表示灯状态和行止状态的关系如下: 表1交通状态及红绿灯状态 东西向 南北向 东西红灯 东西黄灯 东西绿灯 南北红灯 南北绿灯 南北黄灯 状态1 禁行 通行 1 0 0 0 1 0 状态3 等待变换 等待变换 1 0 0 0 0 1 状态4 通行 禁行 0 0 1 1 0 0 状态6 等待变换 等待变换 0 1 0 1 0 0 东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表1所示。说明:0表示灭,1表示亮。 单片机交通控制系统的功能要求
本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的 信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。
(1)倒计时显示
3
-
倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。
(2)时间的设置
本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I/0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I/0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且I/0口足够,可直接采用式。 (3)紧急处理
交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通控制中增设禁停按键,就可达到想此目的。 单片机交通控制系统的基本构成及原理
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了紧急情况处理与时间调整功能。
LED数码管显示 最小系统 外围接口电路 单片机 按键 控制电路 红黄绿信号灯
图2系统的总体框图
据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块,LED倒计时模块模块接受输出。系统的总体框图如上所示。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中随时调用急停按键和时间调节中断。
4智能交通灯控制系统的硬件设计
ATC51单片机简介
4
-
ATC51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh
Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。ATC2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,ATC2051是它的一种精简版本。ATC单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
ATC51单片机的主要特性
与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时
间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 ·时钟电路:
时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。 ·中断系统:
中断系统的作用主要是对外部或内部的终端请求进行管理与处理。ATS51共有5个中断源,其中又2个外部中断源和3个内部中断源。
图3 ATC51系列单片机的内部结构示意图
主要引脚功能
5
-
图4 ATC51引脚图 ·VCC:电源电压 ·GND:接地
·P0口:P0口是一组8位双向I/0口。P0口即可作地址/数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。 ·P1口:Pl 是一个带内部上拉电阻的8准位双向I/O口,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口引脚 端口引脚 第二功能: RXD(串行输入口) TXD(串行输出口) /INT0(外中断0) / INT1(外中断1) T0(定时/计数器0外部输入) T1(定时/计数器1外部输入) / WR(外部数据存储器写选通)
/ RD外部数据存储器读选通) ·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)
6
-
可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。
·ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
·PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当ATS51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。
·EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。
·XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 MCS—51的中断源
8051有5个中断源,它们是两个外中断INT0()和INT1()、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表4所示:
表3中断源程序入口
中断源的服务程序入口地址 中断源 入口地址 外中断0 0003H 定时/计数器0 000BH 外中断1 0013H 定时/计数器0 001BH 串行口中断 0023H
——
————
————
————
————
————
交通灯中的中断处理流程
(1)现场保护和现场恢复:
有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。
(2)中断打开和中断关闭:
为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。
(3)中断服务程序: 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具
7
-
体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。
(4) 中断返回:
执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。
系统硬件总电路构成及原理
实现本设计要求的具体功能,可以选用ATC51单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按钮。 系统硬件电路构成
本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。其具体的硬件电路总图如图所示。
其中P0用于送显两片LED数码管,P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,与对数码管进行片选,即INT0紧急情况处理按键,即INT1接时间调整中断按键。 系统工作原理
系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,
当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K3键为低电平时进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下K3键,中断结束返回。其二为通行时间调整中断,若K4按键有效,进入相应的中断子程序,对时间进行调整,此后再按K4键则中断结束返回。
8
9
八段LED数码管
其它硬件介绍及连接
图5 基于单片机的交通灯控制系统电路图
图6 LED数码管
-
LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。
LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显
-
示不同的字形,如 dp,g,f,e,d,c,b,a全亮显示为8,采用共阳极连接驱动代码,代码表如下表5所示。
表5 驱动代码表
显示数值 0 1 2 3 4 5 6 7 8 9 dp,g,f,e,d,c,b,a 驱动代码 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。
LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用8个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图所示,其中A,B分别是P0,P1的网络标号。
图7 LED连接图
发光二极管
根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图8所示。
10
-
图8 信号灯的连接
按键控制
本设计设置了有5个键:K1键,K2键,K3键,K4键,K5键,每个按键一端接地,另
一端接对应的P3端口。低电平有效,当按键
按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。
5 系统软件程序的设计
程序主体设计流程
全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。
整个软件程序方面主要分两大部分:主程序部分和中断处理程序。流程图如图9所示。
11
-
开始 系统初始化 东西亮绿灯,南北亮红灯 中断处理子程序 调显示子程序(动态显示) 东西黄灯闪烁,南北亮红灯处理 东西,南北方向换向 返回
图9 系统总流程图
设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。智能交通灯控制系统在正常工作的情况下,每20s循环变化一次。每个循环周期在还剩5s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。在此期间若中断按键按下则转入中断服务子程序进行相关操作。 理论基础知识 定时器原理
定时器工作的基本原理其实就是给初值,让它不断加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分频后,若采用方式0最大延时只有毫秒,采用方式1最大延时也只有
12
-
毫秒。这就是为什么扫描周期为50ms的原因,
若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然1秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。 软件延时原理
MCS-51的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。 中断原理
本系统主要使用了外部中断,中断信号有引脚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,程序再正常执行。 子程序模块设计 状态灯显示及判断
在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。
H_RED BIT H_YELLOW BIT H_GREEN BIT L_RED BIT L_ YELLOW BIT L_ GREEN BIT 共有4钟状态:东西红灯亮,南北绿灯亮(0F3H);东西红灯亮,南北黄灯亮(0F5H);东西绿灯亮,南北红灯亮(0DEH);东西黄灯亮,南北红灯亮(0EEH)。
括号中是P1端口8个引脚值对应的十六进制码。 用于显示发光二极管时,部分程序如下: ;东西红,南北绿,计时时间为20s
MOV P1,#0F3H MOV 60H,61H A1: MOV R1,#50 A2: ACALL BCD
ACALL DISPCLK DJNZ R1,A2 MOV A,60H
13
-
MOV R0,60H ADD A,#99H DA A
MOV 60H,A CJNE R0,#05H,A1 LED倒计时显示
LED计时每1秒都要刷新1次,采用的是动态显示,首先将R4除以10H,整数即十位放在50H中,余数即个位放在51H中,设置7段LED显示数据的数据表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。具体程序如下:
BCD: ;将十位数送到(51H),个位数送到(50H) MOV A,60H ;60H单元放的是倒计时值 MOV B,#10H DIV AB MOV 51H,A MOV A,B MOV 50H,A RET
DISPCLK: ;显示部分 MOV DPTR,#TAB MOV A,50H
MOVC A,@A+DPTR MOV P0,A CLR
LCALL DELAY SETB
MOV A,51H
MOVC A,@A+DPTR MOV P0,A CLR
LCALL DELAY SETB RET 紧停及调整时间中断子程序
紧停按键连接到外部中断引脚,即INT0捕获到一个低电平,则进入该中断进行相关处理。程序如下:
;紧急情况处理 IINT0:
CLR EA JB ,$
PUSH 60H PUSH P1
14
-
PUSH P2 B0: JNB ,NH JNB ,DH ;全红
A9: MOV P1,#0F6H SETB SETB
ACALL DELAY JNB ,B0 JMP JE
;只允许东西方向车辆通行 NH: MOV P1,#0DEH SETB SETB
ACALL DELAY JNB ,B0 JMP JE
;只允许南北方向车辆通行 DH: MOV P1,#0F3H SETB SETB
ACALL DELAY JNB ,B0 JMP JE JE:
POP P2 POP P1 POP 60H SETB EA RETI 红绿灯时间调整程序
时间调整按键连接到外部中断引脚,即INT1捕获到一个低电平,则进入该中断进行相关处理。程序如下:
;加减程序 IINT1:
CLR EA JB ,$ PUSH P1 PUSH P2 B1: JNB ,DDEC
IINC: JNB ,SINC ;加1程序
15
-
ZINC: ;自动加1 MOV R0,#15 A10: ACALL BCD
ACALL DISPCLK DJNZ R0,A10 MOV A,60H ADD A,#01H DA A MOV 60H,A JNB ,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 ,JS JNB ,SINC JMP B2
DDEC: ;减1程序 JNB ,SDEC ZDEC:
MOV R4,#15 A12: ACALL BCD
ACALL DISPCLK DJNZ R4,A12 MOV A,60H ADD A,#99H DA A
MOV 60H,A JB ,JS JMP B1
SDEC: ;手动减1程序 MOV R5,#20 A13: ACALL BCD
ACALL DISPCLK DJNZ R5,A13 MOV A,60H
16
-
ADD A,#99H DA A
MOV 60H,A B3: JB ,JS
JNB ,SDEC JMP B3
JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI 系统软件调试 TKS仿真器
仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。
软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;
硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、查看资源断点等。
集成开发环境KEIL
KEIL IDE Vision2集成开发环境主要由以下部分组成:
◆ u Vision2 IDE。ision2 IDE包括:一个工程管理器,一个功能丰富并有交互式错误提示
的编辑器选项设置生成工具,以及在线帮助。使用vision2创建源文件并组成应用工程加以管理。vision2可以自动完成编译汇编链接程序的操作;
◆ C51编译器和A51汇编器。Vision2 IDE创建的源文件可以被C51编译器或A51汇编器
处理生成可重定位的object文件。KEIL C51编译器遵照ANSI C语言标准支持C语言的所有标准特性,另外还增加了几个可以直接支持80C51结构的特性。KEIL A51宏汇编器支持80C51及其派生系列的所有指令集;
◆ LIB51库管理器。B51库管理器可以从由汇编器和编译器创建的目标文件建立目标库,
这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了的目标模块而不是全部加以引用; ◆BL51链接器定位器。L51链接器使用从库中提取出来的目标模块和由编译器汇编器生成
的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储器单元中。 利用KEIL开发和调试系统软件流程大致如下: ◆启动Vision2,进入KEIL软件的集成开发环境;
◆利用KEIL内置的文本编辑器进行程序源文件的编辑,因为KEIL集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是Ultraedit—32),Vision2能够自动识别外部改变了的源文件;
17
-
◆建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使TKS仿真器仿真),然后对工程进行相关设置;
◆设置好工程后即可进行编译、链接。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的HEX文件。 系统软件调试
系统的软件调试借助于TKS仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:
◆功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及PID运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试PID算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。通调时,也是假定一些数据、参数和初始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它子程序的调试同理; ◆程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,做相应的修改后,重新调试;
◆功能程序与算法程序的通调。完成整个程序流程的调试后,将PID等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看PID计算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。 参考文献:
[l]边海龙,孙永奎. 单片机开发与典型工程项目实例详解[J].电子工业出
版社,2008,(10):143-160.
[2]张鑫,华臻,陈书谦. 单片机原理及应用[J].电子工业出版社,2008(5). [3]黄智伟.凌阳单片机课程设计指导[J]. 北京航空航天大学出版社,2007, [4]余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出
版社,
[5]雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,
18
-
[6]柴钰.单片机原理和应用[M].西安电子科技大学出版社.
[7]张靖武.单片机系统的PROTUSE设计和仿真[M].电子工业出版社.2007. [8]唐 工..51单片机工程应用实例[M].
设计心得体会
经过两周的努力工作,终于完成了自己的单片机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。
在焊接过程中,我学会应先合理的布局,并认真检查每个元器件,确保无误后再焊接。还有,不能急于求成,要焊接一个模块,检查一个模块,免得整个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。自然,我也学会如何去发现问题与解决问题的一些方法。
至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解。
在整个课程设计过程我还掌握了一下几点: (1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。 (2)理解了最单片机的各部分组成及特性。
(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用。
(4)学会了利用Keil uVision3对汇编语言进行编译过程.更进一步加深了对PROTEUS软件的学习。
还有,我还发现自身一些毛病。一,前期准备工作做的不够好,想的还算多,可就是没落实。先说选题,就表现自己有畏难情绪,其实当时找到好几个题目,但交通灯最熟悉,所以就选了它。就这,还没做的很理想,还有好些功能可以加上去,像通过测流量来自动调整通行时间,加个监控电路,看门狗电路等。二,行动起来不是很卖力,虽说动手还算早,但每天的进展却不大,可以说做与玩相伴而行。
通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。
我觉得类似这种课程设计的实践真的不错,通过这些项目练习,我自学能力,解决实际问题的能力得到提高,可以说是对综合素质全面提升,我想这也是我们上大学应真正学到的。
附录
附录一:系统总体原理图
19
20
-
附录二:系统程序清单 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 MOV R2,#5 A3: MOV R1,#50 A4: ACALL BCD
ACALL DISPCLK DJNZ R1,A4 CPL
MOV A,60H ADD A,#99H DA A
MOV 60H,A DJNZ R2,A3
MOV P1,#0DEH MOV 60H,61H A5: MOV R1,#50 A6: ACALL BCD
ACALL DISPCLK DJNZ R1,A6 MOV R0,60H MOV A,60H ADD A,#99H DA A
MOV 60H,A CJNE R0,#05H,A5
MOV P1,#0EEH
MOV R2,#5
A7: MOV R1,#50
21
东西红,南北黄灯闪烁5s ;东西绿,南北红,计时时间20s ;南北红,东西黄灯闪烁5s ; -
A8: ACALL BCD
ACALL DISPCLK DJNZ R1,A8 CPL
MOV A,60H ADD A,#99H DA A MOV 60H,A DJNZ R2,A7
LJMP LIGHT ;连续运行返回部分
DISPCLK: ;显示部分 MOV DPTR,#TAB MOV A,50H
MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB MOV A,51H MOVC A,@A+DPTR MOV P0,A CLR LCALL DELAY SETB RET
BCD: ;将十位数送到(51H),个位数送到(50H) MOV A,60H MOV B,#10H DIV AB MOV 51H,A MOV A,B MOV 50H,A RET
IINT0: ;紧急情况处理 CLR EA JB ,$
PUSH 60H PUSH P1
22
-
PUSH P2 B0: JNB ,NH JNB ,DH
A9: MOV P1,#0F6H ;全红 SETB SETB
ACALL DELAY JNB ,B0 JMP JE
NH: MOV P1,#0DEH SETB SETB
ACALL DELAY JNB ,B0 JMP JE
DH: MOV P1,#0F3H SETB SETB
ACALL DELAY JNB ,B0 JMP JE JE:
POP P2 POP P1 POP 60H SETB EA RETI
IINT1: CLR EA JB ,$ PUSH P1 PUSH P2 B1: JNB ,DDEC
IINC: JNB ,SINC
ZINC: MOV R0,#15
23
;只允许东西方向车辆通行 ;只允许南北方向车辆通行;通行时间加减程序 ;加1程序 ;自动加1 -
A10: ACALL BCD
ACALL DISPCLK DJNZ R0,A10 MOV A,60H ADD A,#01H DA A MOV 60H,A JNB ,B1 JMP JS
SINC: MOV R3,#20 A11: ACALL BCD
ACALL DISPCLK DJNZ R3,A11 MOV A,60H ADD A,#01H DA A MOV 60H,A B2: JB ,JS JNB ,SINC JMP B2
DDEC: JNB ,SDEC ZDEC:
MOV R4,#15 A12: ACALL BCD
ACALL DISPCLK DJNZ R4,A12 MOV A,60H ADD A,#99H DA A
MOV 60H,A JB ,JS JMP B1
SDEC: MOV R5,#20 A13: ACALL BCD
ACALL DISPCLK DJNZ R5,A13
24
;手动加1 ;减1程序 ;手动减1程序 -
MOV A,60H ADD A,#99H DA A
MOV 60H,A B3: JB ,JS
JNB ,SDEC JMP B3
JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI
;10MS延时
DELAY: MOV R6,#25 DEL1: MOV R7,#200
DEL2: DJNZ R7,DEL2 DJNZ R6,DEL1 RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
附录三: 元器件清单 元器件型号 数量 共阳极数码管 2 LED发光二极管 红黄绿个四个 330欧电阻 12 排针 2排 排孔 一排 自锁开关 4 复位开关 1 三极管9012 2 导线 若干 25
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务