您的当前位置:首页单片机-智能交通灯控制系统设计[单片机课程设计]

单片机-智能交通灯控制系统设计[单片机课程设计]

2022-05-22 来源:爱问旅游网
提醒:

1. 请用PDF转Word转换工具转成word随意复制粘贴! 2. 课程设计封面请自行设计!

之类即可目录

课程设计任务书 ............................................................................................................................................ 1 成员分工 ........................................................................................................................................................ 2 课题分析 ........................................................................................................................................................ 3 第一章 80C51单片机 ................................................................................................................................. 5

1.1 1.2

单片机的概念............................................................................................................................. 5

80C51单片机简介 ..................................................................................................................... 5 1.2.1 80C51单片机内部逻辑结构.......................................................................................... 5 1.2.2 80C51单片机的封装与信号引脚 .................................................................................. 7 1.2.3 80C51单片机的内部存储器.......................................................................................... 8 1.2.4 80C51单片机的时钟与时序........................................................................................ 11

第二章 总体方案 ...................................................................................................................................... 12

2.1 2.2 2.3

画出原理框图........................................................................................................................... 12 了解Proteus的编辑环境ISIS.................................................................................................. 12 了解ISIS电路图的绘制基本常识 ........................................................................................... 13

2.4 了解仿真时电路故障的排除方法 ........................................................................................... 14 第三章 硬件系统设计 .............................................................................................................................. 16

3.1

元器件的选择........................................................................................................................... 16 3.1.1 红黄绿三色LED灯 ....................................................................................................... 16 3.1.2 倒计时显示LED数码管 ............................................................................................... 16 3.1.3 控制开关 ....................................................................................................................... 18 单元电路的设计....................................................................................................................... 18

3.2

3.3 电路连接 .................................................................................................................................. 18

第四章 软件系统设计 .............................................................................................................................. 20

4.1 4.2

程序流程图 .............................................................................................................................. 20 汇编程序 .................................................................................................................................. 21

4.3 Proteus仿真 ............................................................................................................................. 26 第五章 设计总结 ...................................................................................................................................... 29

5.1 5.2

心得体会 .................................................................................................................................. 29 参考文献 .................................................................................................................................. 29

学生姓名:路长鑫 专业班级:09级电气 3班 指导教师:吴泽 工作单位:电气工程及其自动化 题目:智能交通灯控制系统设计 一、 设计要求

1.用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。

2.A、B两车道交叉组成十字路口,A是主车道,B是支道。正常情况下,A、B两车道轮流放行,A放行50s,B放行30s,各含5s警告时间。

3.交通繁忙时,该系统应有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,可通过开关获得15s放行时间。

4.有紧急车辆通过时,另需一开关设置两车道均禁止通行20s。

二、 主要功能模块

智能交通灯控制系统主要功能模块包括电源电路、单片机主控电路、按键控制电路和道路显示电路组成。根据具体情况选择合适型号的单片机,发光二极管,开关等硬件设备进行设计。

三、 要求完成的主要任务

1. 根据功能要求完成硬件电路设计,提供硬件电路图。

2. 使用汇编或者C语言完成软件部分设计,实现相应功能。要求程序加注释并提供软件流程图。

3. 使用Proteus软件进行系统仿真,并提供仿真截图,测试数据,误差分析。

四、 时间安排

2012.3.26~2012.4.8 收集资料,确定设计方案 2012.4.9~2012.5.27 系统设计

2012.5.28~2012.6.10 撰写课程设计论文及提交

指导教师签名: 年 月 日 1

成员分工情况如下表:

分工及完成情况 成员名单 分工 完成情况 完成 完成 完成 完成 完成 刘淦 收集资料 董卓奇 硬件设计 刘晓东 单片机介绍,软件调试 李海龙 总体方案,软件设计 硬件设计与调试,软件设计与调试,撰写论文 路长鑫 2

课题分析

一、 概述

单片机是计算机技术、大规模集成电路技术和控制技术的综合产物。经过30多年的发展历程,单片机应用已经十分广泛和深入。可以毫不夸张的说,任何设备和产品的自动化、数字化和智能化都离不开单片机。这里我们选用当今应用最为广泛的8位单片机80C51来完成智能交通控制系统的设计,并用Proteus进行仿真。

二、 智能交通的意义

国内的交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:

1. 经常出现的情况是某一车道车辆较多,放行时间应该长一些,另一车道车辆较

少,放行时间应该短些。

2. 没有考虑紧急车通过时,两车道应采取的措施,例如,消防车执行紧急任务通

过时,两车道的车都应停止,让紧急车通过。

基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。

三、 Proteus

Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改进手段之一。全部过程都是在计算机上通过Proteus来完成的。其过程一般也可分为三步:

1. 在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电

气检测等。简称Proteus电路设计。

2. 在ISIS平台或其他平台(如Keil平台)上进行单片机系统程序设计、编译、

汇编编译、代码级调试,最后生成目标代码文件(*. hex)。简称Proteus源程序设计和生成目标代码文件。

3

在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。简称Proteus仿真。

四、 要求分析

1. 以红黄绿三色LED灯模拟交通信号灯,以二位LED数码管显示倒计时。 2. A、B两车道交叉组成十字路口,A是主车道,B是支道。正常情况下,A、B两

车道轮流放行,过程如下:

 A绿灯放行共50s,通行15S之后开始允许转向,转向包括左转和右转,期

间B为红灯禁止前行且禁止转向;  50s结束后,AB均有5s黄灯警告时间;

 B绿灯放行共30s,通行15S之后开始允许转向,期间A为红灯禁止前行且

禁止转向;

 30s结束后,AB均有5s黄灯警告时间。

3. 交通繁忙时,有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车

道繁忙,通过开关可获得15s放行时间。额外放行时间结束后红绿灯返回之前中断时刻的状态继续。

4. 有紧急车辆通过时,另有开关设置AB均禁止通行20s,期间AB全部黄灯警告。

4

一章 80C51单片机

1.1 单片机的概念

单片机是集成在一个芯片上的计算机,全称单片微型计算机SCMC(Single Chip Micro-Computer)。单片机是计算机、自动控制和大规模集成电路技术相结合的产物,融计算机结构和控制功能于一体,是微型计算机的一个重要分支,也是颇具生命力的机种。单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3三代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 1.2 80C51单片机简介

80C51是8位单片机中一个最基本、最典型的芯片型号,是MCS-51系列单片机中8051的改进型,使用相当广泛。 1.2.1

80C51单片机内部逻辑结构

80C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行I/O接口、串行接口、中断系统、时钟电路、位处理器等几大单元及数据总线、地址总线和控制总线等三大总线,其逻辑结构如图1.1所示。

1. 中央处理器CPU

中央处理器CPU(Central Processing Unit)是整个单片机的核心部件,包含运算电路和控制电路两大部分,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

2. 内部数据存储器(RAM)

80C51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户

5

数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

3. 内部程序存储器(ROM)

包括ROM(4Kx8)和程序地址寄存器等。80C51共有4KB掩膜ROM,用于存放用户程序、原始数据或表格,简称内部ROM。

图1.1 80C51芯片逻辑结构图

4. 定时/计数器(ROM)

80C51共有两个16位的可编程定时/计数器,用以实现定时或计数功能,并以此产生的中断对单片机进行控制。

5. 并行输入输出(I/O)口

8051共有4组8位I/O口(P0、 P1、P2或P3),以实现数据的并行输入与输出。 6. 全双工串行口

8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

7. 中断系统

8051具备较完善的中断功能,共有5个中断源,即外中断2个、定时/计数器中断2个和串行中断1个。全部中断分为高级和低级共两个优先级别,可满足不同的控制要求。

8. 时钟电路

6

80C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但石英晶体和微调电容需外接。

9. 位处理器

单片机主要用于控制,需要较强的位处理功能,因此,位处理器是它的必要组成部分,也称布尔处理器。

10. 内部总线

上述这些部件通过总线连接起来,才能构成一个完整的计算机系统。芯片内的地址信号、数据信号和控制信号都是通过总线传输的。总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。总线结构如图1.2所示

图1.2 80C51内部总线结构

1.2.2 80C51单片机的封装与信号引脚

1. 芯片封装形式

P1.0P1.1 P1.2 P1.3P1.4 P1.5 P1.6P1.7 RST/VPDRXD/ P3.0TXD/P3.1 INT0/P3.2INT1/ P3.3T0/P3.4123456789101112131415161718192080C51WR/ P3.6RD/P3.7 2XTAL1 XTALVssT1/ P3.5

4039383736353433323130292827262524232221VccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0VccVssRST/VPDXTAL1XTAL2EA/VppP0口地址数据总线PSENALE/PROG80C51P1口第二功能P3口P2口地址总线(a)引脚排列 (b)逻辑符号

图1.3 80C51单片机芯片引脚及逻辑符号

7

有40引脚双列直插式DIP(Dual In line Package)和44引脚方形扁平式

QFP(Quad Flat Package)共两种封装形式。本设计采用40引脚DIP形式,其引脚排列及芯片逻辑符号如图1.3所示。

2. 芯片引脚简介

80C51的40个引脚主要包括:  +5V电源Vcc  地线Vss

 外置石英振荡器的时钟线XTAL1和XTAL2  复位信号RST

 访问程序存储器控制信号EA  外部程序存储器读选通信号PSEN  地址锁存控制信号ALE  4组8位共32个I/O口线 3. 芯片引脚的第二功能

随着单片机功能的增强,而又由于简化、工艺或标准等原有,芯片引脚数目总是有限的,所以,“引脚复用”现象在单片机中十分常见。

80C51的引脚复用主要集中在P3口线上,P3口线的第二功能见表1.1.

表1.1 P3口线的第二功能

口线 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 1.2.3

特殊功能 RXD TXD INT0 TNT1 T0 T1 WR RD 信号名称 串行输入口 串行输出口 外部中断0输入口 外部中断1输入口 定时器0外部输入口 定时器1外部输入口 写选通输出口 读选通输出口 80C51单片机的内部存储器

一般的,单片机芯片的内部存储器包括数据存储器和程序存储器。 1. 内部数据存储区

80C51单片机的数据存储器共有256个单元,按照功能又把其划分为两部分:低128单元区和高128单元区,如图1.4所示。

8

128单元区包括:

 寄存器区,内部RAM前32个单元,分为4组  位寻址区,内部RAM的20H-2FH单元  用户数据区,内部RAM的30H-7FH单元

高128单元区共专用寄存器(SFR)使用,单元地址为80H-FFH,用于存放相应功能部件的控制命令、状态、或数据。80C51除去程序计数器PC外,还有21个专用寄存器。参看表1.2。

图1.4 80C51内部数据存储器

2. 内部程序存储器

在80C51中,程序存储器被用来存放程序、常数或表格等。其片内有4K字节的ROM存储单元,地址为0000H~0FFFH。

在程序存储器中,以下6个单元具有特殊含义:

 0000H:单片机复位后,PC=0000H,程序从0000H开始执行指令。  0003H:外部中断0入口地址。

 000BH:定时器0中断入口地址。 0013H:外部中断1入口地址。  001BH:定时器1中断入口地址。  0023H:串行口中断入口地址。

在系统中断相应之后,将自动转到各中断入口地址处执行程序,而中断服务程序一般无法存放于几个单元之内,因此在中断入口地址处往往存放一条无条件转移指令进行跳转,以便执行中断服务程序。

9

1.2 80C51专用寄存器一览表

10

80C51单片机的时钟与时序

为了保证同步工作方式的实现,单片机必须有时钟信号,一是以使系统在时钟信号的控制下按时序协调工作。时序是指令执行过程中各信号之间的相互时间关系。

1. 时钟电路  内部时钟方式

单片机的时钟电路由振荡电路和分频电路组成。

在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。电路中的电容一般取30pF左右,而晶体的振荡频率范围通常是1.2MHz~33MHz。

 外部时钟方式

在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,引入唯一的外部脉冲信号作为各单片机的振荡脉冲。这时外部的脉冲信号是经XTAL1引脚注入,XTAL2引脚悬空。

2. 机器周期

80C51采用同步控制方式,因此有固有的机器周期。一个机器周期共有12个震荡脉冲周期,则当晶振频率为12MHz时,一个机器周期为1us。

11

第二章 总体方案

2.1 画出原理框图

在仔细分析设计要求的前提下,把系统要完成的任务分配给若干个单元电路,画出一个能表示各单元功能和关系的原理框图。依靠原理框图,可为下一步的器件选择和布线提供依据和参考。原理框图如图2.1所示。

交通繁忙调整手动开关控制四个方向的红黄绿交通灯交通灯协调显示80C51单片机紧急情况调整手动开关控制四个方向的倒计时显示

图2.1 智能交通设计原理图

倒计时显示2.2 了解Proteus的编辑环境ISIS

目前比较流行的或应用广泛的绘制软件包有Proteus、Protel和ORCAD/STD。亦可用电子工作平台multisim。Proteus集成了高级原理布图、混合模式SPICE仿真、PCB设计以及自动来实现一个完整的电子设计系统。其中,ISIS是智能原理图输入系统是Proteus系统的中心,该编辑环境具有友好的人机交互界面,并且设计功能强大,使用方便,易于掌握。ISIS绘制环境如图2.2所示。

12

图2.2 ISIS绘制环境

2.3 了解ISIS电路图的绘制基本常识

用Proteus的ISIS绘制电路图时应注意: 1. 引脚的隐藏

Proteus中电源引脚和接地引脚默认都是隐藏的,由系统自动分配。 2. 布局合理、排列均匀、图面清晰、便于看图、有利于对图的理解和阅读 有时一个总电路图由几部分组成,绘制时应尽量把总电路图画在一张纸上。如果电路比较复杂,需绘制几张图,则应把主电路图画在一张图纸上,而把一些比较独立或次要的部分画在另外的图纸上,并在图的断口两端做上标记,标出信号从一张图到另一张图的引出点和引入点,以此说明各图纸在电路连线之间的关系。

3. 注意信号的流向

一般从输入端或信号源画起,从左到右或从上到下按信号的流向依次画出各单元电路,而反馈通路的信号流向则与此相反。

4. 图形符号要标准,图中应加适当的标注

电路图中的中、大规模集成电路器件,一般用方框表示,在方框中标出它的型号,在方框的边线两侧标出每根线的功能名称和管脚号。除中、大规模器件外,其余元器件符号应当标准化。

5. 连接线应为直线,并且交叉和折弯应最少

13

或垂直布置,一般不画斜线。互相连通的交叉线,应在交叉处用

圆点表示。根据需要,可以在连接线上加注信号名或其它标记,表示其功能或去向。有的连线可用符号表示,例如器件的电源一般标电源电压的数值,地线用符号“⊥”表示。 2.4 了解仿真时电路故障的排除方法

仿真时连接的电路一般比较复杂,参数计算一般比较繁琐,当出现线路未连接到位、错连、短路,选用仪器的参数设置错误或不合适时,就可能使仿真得不到预期的结果,甚至没有结果,这时就需要进行电路故障的排出,具体方法有以下几点:

1. 信号寻迹法

寻找电路故障时,一般可以按信号的流程逐级进行。从电路的输入端加入适当的信号,用虚拟示波器或电压探针等仪器逐级检查信号在电路内各部分传输的情况,根据电路的工作原理分析电路的功能是否正常,如果有问题,应及时处理。调试电路时也可以从输出级向输入级倒推进行,信号从最后一级电路的输入端加入,观察输出端是否正常,然后逐级将适当信号加入前面一级电路输入端,继续进行检查。

2. 对分法

把有故障的电路分为两部分,先检查这两部分中究竟是哪部分有故障,然后再对有故障的部分对分检测,一直到找出故障为止。采用“对分法”可减少调试工作量。

3. 分割测试法

对于一些有反馈的环行电路,如振荡器、稳压器等电路,它们各级的工作情况互相有牵连,这时可采取分割环路的方法,将反馈环去掉,然后逐级检查,可更快地查出故障部分。对自激振荡现象也可以用此法检查。

4. 电容器旁路法

如遇电路发生自激振荡或寄生调幅等故障,检测时可用一只容量较大的电容器并联到故障电路的输入或输出端,观察对故障现象的影响,据此分析故障的部位。在放大电路中,旁路电容开路,使负反馈加强,输出量下降,此时用适当的电容并联在旁路电容两端,就可以看到输出幅值恢复正常,也就可以断定旁路电容的问题。这种检查可能要多处实验才有结果,这时要细心分析可能引起故障的原因。

5. 对比法

将有问题的电路的状态、参数与相同的正常电路进行逐项对比。此方法可以比较快地从异常的参数中分析出故障。

6. 替代法

把已调试好的单元电路代替有故障或有疑问的相同的单元电路(注意共地),这样

14

7. 静态测试法

故障部位找到后,要确定是哪一个或哪几个元器件有问题,最常用的就是静态测试法和动态测试法。静态测试就是用各种虚拟测试仪表测试电阻值、电容器是否合适、电路是否断或短路,晶体管和集成电路的各引脚电压是否正常等。这种测试是在电路不加信号时进行的,所以叫静态测试。通过这种测试可发现元器件的故障。

8. 动态测试法

当静态测试还不能发现故障时,可采用动态测试法。测试时在电路输入端加上适当的信号再测试元器件的工作情况,观察电路的工作状况,分析、判别故障原因。

15

第三章 硬件系统设计

3.1 元器件的选择

由设计要求和原理框图可知,在Proteus中仿真智能交通灯系统所需的元器件包括:80C51单片机、红黄绿三色LED灯、倒计时显示LED数码管和控制开关,80C51单片机已在前面介绍,下面就其他几个器件一一介绍。 3.1.1

红黄绿三色LED灯

Proteus中提供了专门的交通灯模块TRAFFIC LIGHTS,位于ACTIVE库中,由红黄绿三色组成,内部三色灯采用共阴极接法,对外有3个引脚(实际应为4个,Proteus中默认隐藏了电源和接地引脚),分别对应一种颜色的灯,使用时只要令需点亮的灯接高电平,不需点亮的灯接低电平即可,接线方便简单。TRAFFIC LIGHTS如图3.1所示。

图3.1 TRAFFIC LIGHTS

3.1.2

倒计时显示LED数码管

(a)7SEG-MPX2-CA模块 (b)符号和引脚 (c)内部共阳极接法

图3.2 8段LED数码管

16

由于设计要求中需要显示的倒计时最长为50s,2位8段的数码管足以满足设计要求。Proteus的DISPLAY库中提供了多种显示数码管,我们选用其中的7SEG-MPX2-CA作倒计时的显示用。如图3.2(a)所示

7SEG-MPX2-CA内部采用共阳极接法,A-G引脚分别对应“8”字形的其中一段,共7段,相应段的引脚接低电平是点亮,接高电平时熄灭,DP为小数点对应的引脚。符号和引脚关系如图3.2(b)所示,内部接法如图3.2(c)所示。

1. 段码

所谓段码就是为数码管显示提供的各段状态组合,字形代码。7段数码管的段码为7位,8段数码管的段码为8位,用一个字节即可表示。在段码字节中代码位与各段发光二极管的对应关系如下: 段码 段名

段码的值与数码管公共引脚的接法(共阳极和共阴极)有关。以8段数码管共阳极为例,显示十六进制数的段码值如表3.1所示。

表3.1共阳极十六进制数段码表

D7 dp D6 g D5 f D4 e D3 d D2 c D1 b D0 a

显示数值 驱动代码

0 1 2 3 4 5 6 7 8 9

2. 动态显示

17

C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 显示器多采用动态显示方式,全部数码管共用一套段码驱动电路。显示时通过

位控信号采用扫描的方法逐位地循环点亮各位数码管。动态显示虽然在任一时刻只有一位数码管被点亮,但是由于人眼具有的视觉暂留效应,看起来与全部数码管持续点亮的效果完全一样。LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。 3.1.3

控制开关

Proteus中提供了多种开关,这里我们选择最简单的BUTTON模块即可,有两个接线引脚,位于ACTIVE库中。 3.2 单元电路的设计

根据系统指标和功能框图,明确任务,进行各单元电路的设计,每个单元电路设计前都需明确本单元电路的任务,详细拟定出单元电路的性能指标。注意各单元电路之间的相互配合和前后级之间的关系,尽量简化电路结构。注意各部分输入信号、输出信号和控制信号的关系。选择单元电路的组成形式,模仿成熟的先进的电路,或进行创新或改进,但都必须保证性能要求。

本智能交通灯系统所需的单元电路由开关控制电路、80C51单片机主电路、红黄绿三色灯电路和倒计时显示电路构成,各个单元之间的关系较为简单和明确,只需和主电路以此进行连接即可。 3.3 电路连接

在ISIS的模块库中找到所需的各个元器件,按照绘图的基本原则进行电路的绘制,将各个元器件连接为一个功能完善的整体,构成智能交通灯控制系统。如图3.3所示。

如图中所示,南北方向记为AB车道,东西方向记为CD车道,A、B、C和D路口各有两个红黄绿三色LED灯和一个2位8段倒计时显示LED数码管,其中靠近中间黄色路中分界线的一个三色LED灯模拟的是转向灯。U2为非门,用来使倒计时显示LED数码管交替工作,实现动态显示。

18

图3.3 智能交通灯控制系统连接图

19

第四章 软件系统设计

4.1 程序流程图

根据设计的具体要求,画出程序的流程图如图4.1所示

开始初始化南北绿灯,东西红灯,禁止转向外部中断1发生,繁忙情况开始延时50s外部中断0发生,紧急情况到15S时南北转向绿灯全部黄灯亮,警告!延时完成,共计50s,全部黄灯亮延时3s延时5s黄灯禁行延时20s南北通行全部黄灯亮延时5s判断当前通行车道东西通行东西绿灯,且允许转向南北绿灯,且允许转向延时15s东西绿灯,南北红灯,禁止转向中断返回,恢复原态全部黄灯亮到15S时东西转向绿灯延时3s延时完成,共计30s,全部黄灯亮中断返回,恢复原态延时5s

图4.1 程序流程图

20

汇编程序

Proteus的ISIS编辑环境即可完成源代码程序的编辑、编译、链接和调试等任务,相当的方便,创建源代码文件的步骤如下:

1. 打开Proteus的ISIS编辑环境,在sources菜单中,选择“Add/Remove Sources files„”项,将打开Add/Remove Sources Code Files对话框。

2. 单击“New”按钮,选择保存的路径,即可新建一个“*.ASM”文件。 3. 在Code Generation Tool下拉菜单中选择“ASEM51”代码生成工具。 4. 点击“OK”完成ASM文件的创建

源代码文件创建好以后,在sources菜单中就会出现刚刚新建的ASM文件的序号和名称,单击即可开始源代码的编辑。

下面是智能交通灯控制系统的汇编源代码,诸多不足,仅供参考:

org 0000h ljmp Main

org 0003h ;外部中断0,繁忙时手控开关 ljmp WInt0

org 000bh ;定时器0中断 ljmp T0Int

org 0013h ;外部中断1,紧急情况手控开关 ljmp WInt1

Main:

mov IE,#10000111b ;中断允许

mov TCON,#0h ;低电平触发方式 mov IP,#00000010b ;定时0设为高级中断

mov p1,#00010110b ;p1.7置0为外部中断提供低电信号

;p1.2和p1.4置1表示AB和CD当前禁止转向 ;p1.1置1表示AB线路通行

mov dptr,#4000h ;dptr设置数码管显示的首地址 mov r0,#51d ;r0设置倒计时的秒数 mov r1,#15d ;r1设置何时转向

clr c ;将p1.0当前的值放入CY

mov 00h,c ;将c中的内容保存在00h,以免后面的程序改变c call Deldis ;调用50s延时且数码管倒计时的Deldis子程序

mov p1,#01000000b ;50s后黄灯开始亮,其他灯均不亮 mov dptr,#405Ah

21

d

mov r1,#0d

call Deldis ;调用5s延时且数码管倒计时的Deldis子程序

mov p1,#00010101b ;p1.7置0为外部中断提供低电信号

;p1.2和p1.4置1表示AB和CD当前禁止转向 ;p1.0置1表示CD线路通行

WInt0:

mov dptr,#4028h mov r0,#31d mov r1,#15d

setb c ;将p1.0当前的值放入CY

mov 00h,c ;将c中的内容保存在00h,以免后面的程序改变c call Deldis ;调用30s延时且数码管倒计时的Deldis子程序 mov p1,#01000000b ;50s后黄灯开始亮,其他灯均不亮 mov dptr,#405Ah mov r0,#6d mov r1,#0d

call Deldis ;调用5s延时且数码管倒计时的Deldis子程序 sjmp Main ;开始新一轮的循环

;紧急情况中断程序

push PSW ;以下6行代码为保护现场 mov r2,p1 mov 50h,r0 mov 51h,r1 mov 52h,dpl mov 53h,dph mov p1,#01000000b ;紧急情况时黄灯警告3s mov dptr,#405Eh mov r0,#4d mov r1,#0d

call Deldis ;调用3s延时且数码管倒计时的Deldis子程序 mov p1,#01000000b ;AB,CD黄灯亮,全线禁行20s mov dptr,#403ch mov r0,#21d mov r1,#0d

call Deldis ;调用20s延时且数码管倒计时的Deldis子程序pop PSW ;以下6行代码为恢复现场 mov p1,r2 mov r0,50h mov r1,51h mov dpl,52h mov dph,53h

22

WInt1: ;繁忙中断程序

push PSW ;以下6行代码为保护现场 mov r2,p1 mov 50h,r0 mov 51h,r1 mov 52h,dpl mov 53h,dph

mov mov mov mov call

mov mov mov mov jnc mov sjmp

ABld:

mov Int1Exit:

call

mov mov mov mov call

pop mov mov mov mov mov reti

T0Int: mov push

p1,#01000000b ;黄灯警告5s dptr,#405Ah r0,#6d r1,#0d

Deldis ;调用5s延时且数码管倒计时的Deldis子程序 dptr,#4046h r0,#16d r1,#0d

c,00h

ABld ;AB通行时,如果CD繁忙,则转到ABld p1,# 00011010b Int1Exit p1,# 00100101b Deldis ;调用15s延时且数码管倒计时的Deldis子程序 p1,#01000000b ;黄灯警告3s dptr,#405Eh r0,#4d r1,#0d

Deldis ;调用3s延时且数码管倒计时的Deldis子程序 PSW ;以下6行代码为恢复现场 p1,r2 r0,50h r1,51h dpl,52h dph,53h ;定时中断0

r5,a ;以下2行代码为保护现场 PSW

23

mov a,30h+1

jnz Goon dec 30h Goon:

dec 30h+1

mov a,30h

orl a,30h+1 jnz Exit

mov 30h,#high(20000) mov 30h+1,#low(20000) inc dptr

inc dptr dec r0 dec r1

cjne r1,#0h,Exit call T15s Exit:

pop PSW ;以下2行代码为恢复现场 mov a,r5 reti

Delay: ;两位数码管动态交替显示延时程序 mov r6,#20 mov r7,#20 DelayLoop:

djnz r6,DelayLoop djnz r7,DelayLoop ret

T15s: ;在当前绿灯线路使转向绿灯点亮 mov c,p1.0

jnc ABtg mov p1,#00100101b sjmp T15sExit ABtg:

mov p1,#00011010b T15sExit: ret

org 4000h ;定义数码管倒计时显示的字符 DB

92H,0C0H,99H,90H,99H,80H,99H,0f8H,99H,82H,99H,92H,99H,99H,99H,0B0H,99H,0A4H,99H,0F9H DB

99H,0C0H,0B0H,90H,0B0H,80H,0B0H,0f8H,0B0H,82H,0B0H,92H,0B0H,99H,0B0H,0B0H,0B0H,0A4H,0B0H,0F9H

24

0B0H,0C0H,0A4H,90H,0A4H,80H,0A4H,0f8H,0A4H,82H,0A4H,92H,0A4H,99H,0A4H,0B0H,0A4H,0A4H,0A4H,0F9H DB

0A4H,0C0H,0F9H,90H,0F9H,80H,0F9H,0f8H,0F9H,82H,0F9H,92H,0F9H,99H,0F9H,0B0H,0F9H,0A4H,0F9H,0F9H DB

0F9H,0C0H,0C0H,90H,0C0H,80H,0C0H,0f8H,0C0H,82H,0C0H,92H,0C0H,99H,0C0H,0B0H,0C0H,0A4H,0C0H,0F9H DB

0C0H,0C0H

Deldis: clr mov mov mov setb mov mov Loop1:

setb movc mov call

inc

cpl clr movc mov call

mov add mov mov addc mov clr

cjne

;以秒倒计时,并使数码管显示相应的倒计时时间 a

TMOD,#02h ;方式2,定时器 TH0,#206d

TL0,#206d ;机器周期 = 12÷12MHZ=1uS ;(256-206)×1uS=50us ;定时常数=206

;对50us中断计数20000次,就是1秒 TR0 ;开始定时 30h,#high(20000) 30h+1,#low(20000) p2.0

a,@a+dptr p0,a Delay dptr p2.0 a

a,@a+dptr p0,a Delay a,dpl ;以下六行代码为实现dptr-1 a,#0FFh dpl,a a,dph a,#0FFh dph,a a r0,#0h,Loop1

25

end

代码编辑完成后,单击“Save”保存,就顺利完成了源代码文件的创建,接下来即可进行调试和仿真。 4.3 Proteus仿真

ISIS支持源代码的调试,在Debug菜单中单击执行【F12】按钮或在仿真控制按钮中单击

按钮,即可开始调试和仿真,如果电路图连接有错误或源代码有错误,将

会弹出错误警告窗口,并且指明了错误所在,找到错误的位置进行修改,重新开始调试,直到结果正确为止。仿真过程大致如下:

1. 开始运行后,南北方向绿灯点亮,东西方向红灯点亮,转向灯均红灯,同时数码管从50显示,每隔一秒数码管减一,如图4.2(a)。当减到35时,南北方向转向绿灯亮。如图4.2(b)所示。

(a)刚开始时刻 (b)35s时南北转向灯绿灯

(c)50s后5s黄灯警告 (d)5s后东西通行南北进行

26

50s结束后,四路的黄灯开始点亮,数码管同时从5开始减一,如图4.2(c)。当减到0时,南北方向红灯被点亮,东西方向绿灯被点亮,转向灯均红灯,同时数码管从30显示,每隔一秒数码管减一,如图4.2(d)。

3. 当减到15时,东西方向转向绿灯亮。如图4.2(e)所示。当减到0时,四路的黄灯开始点亮,数码管同时从5开始减一,如图4.2(f)所示。减到0时,返回初始状态,即图4.2(a)所示状态。在没有外部中断的情况下如此循环下去。

4. 当繁忙按钮被按下时,即表明当前通行道路车流量小,而另一道路繁忙,则四路的黄灯先开始点亮警告5s,然后繁忙道路临时额外通行15s,如图4.2(g)所示, 15s结束后四路的黄灯再点亮警告3s,如图4.2(h)所示。结束后返回中断之时的状态。

(e)15s时东西转向灯绿灯 (f)30s后5s黄灯警告

(g)东西繁忙时临时通行15s (h)繁忙结束后3s黄灯警告

27

(i)紧急情况先黄灯警告3s (j)黄灯延续20s使紧急车辆通过

图4.2 仿真各个过程示图

5. 当紧急情况按钮被按下时,无论当前哪条道路在通行,均出现四路的黄灯先开始点亮警告3s,如图4.2(i)所示,然后是四路黄灯继续亮,延时20s,使紧急车辆通过,如图4.2(j)所示。结束后返回中断之时的状态。仿真过程表明设计要求已经达到,智能交通灯控制系统的功能全部实现。

28

第五章 设计总结

5.1 心得体会

通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。

还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。

通过合作,我们的合作意识得到加强。合作能力得到提高。上大学后,很多同学都没有过深入的交流,在设计的过程中,我们用了分工与合作的方式,每个人互责一定的部分,同时在一定的阶段共同讨论,以解决分工中个人不能解决的问题,在交流中大家积极发言,和提出意见,同时我们还向别的同学请教。在此过程中,每个人都想自己的方案得到实现,积极向同学说明自己的想法。能过比较选出最好的方案。在这过程也提高了我们的表过能力。

在设计的过程中我们还得到了老师的帮助与意见。在学习的过程中,不是每一个问题都能自己解决,向老师请教或向同学讨论是一个很好的方法. 5.2 参考文献

【1】彭为等.单片机典型系统设计实例精讲.北京:电子工业出版社,2006 【2】张毅刚等.单片机原理与应用设计.北京:电子工业出版社,2008

【3】王义军.单片机原理及应用习题与实验指导书.北京:中国电力出版社,2006 【4】刘乐善.微型计算机接口技术及应用.武汉:华中科技大学出版社,2000 【5】陈明荧.8051单片机课程设计实训教材.北京:清华大学出版社,2004 【6】杨莉.基于单片机控制的步进电机转速控制系统.南昌工程学院学报,2005 【7】张毅坤.单片微型计算机原理及应用.西安电子科技大学出版社,1998

29

8】余锡存 曹国华.单片机原理及接口技术.西安电子科技大学出版社,2000 【9】张洪润.单片机原理及应用.北京:清华大学出版社,2008

30

因篇幅问题不能全部显示,请点此查看更多更全内容