基于单片机的交通信号灯控制电路设计

毕业设计说明书(论文)

课题名称: 交通信号灯控制电路设计(单片机)

航空电子设备维修 专业 081331班

学生姓名 黄波 学号 27

指导老师 贺国灿 技术职称______________

2011年 03 月 16 日

毕业设计(论文)任务书

学生姓名:黄波 班级:081331

1. 毕业设计(论文)题目:

2. 毕业设计(论文)使用的原始资料数据及设计技术要求:

1、单凭微型计算机原理及接口技术

2、单片机原理及应用技术

3、数字电子技术

采用MSC-51系列单片机8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了车流控制通行系统

3. 毕业设计(论文)工作内容及完成时间:

东西方向通行时间为80秒,南北方向通行时间为60秒,黄灯闪烁5秒。硬件采用8051单片机一片,8255并行通用接口芯片一片,74LS07两片,共阴极的双位七段数码管4个, 7805三端稳压电源一个,红、黄、绿交通灯各3个,软件采用汇编编程实现。

日期:自2010年12月15日至2011年3月16日

指导老师评语:

________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

指导老师:贺国灿 系主任:姚卫华

目录

摘要 .......................................................... 4

关键词. ....................................................... 4

1、引言 ....................................................... 5

2、单片机概述 ................................................. 5

3、芯片简介 ................................................... 5

3.1、MSC-51芯片简介 ......................................... 6

3.2、8255芯片简介 ........................................... 9

3.3、74LS373简介 ........................................... 10

4 系统硬件设计 .............................................. 10

4.1、交通管理的方案论证 . .................................... 10

4.2、系统硬件设计 . .......................................... 11

4.2.1、系统总框图如下: ................................... 11

4.2.2、交通灯硬件线路图 ................................... 11

4.2.3、系统工作原理 ....................................... 11

5、控制器的软件设计 .......................................... 12

5.1、每秒钟的设定 . .......................................... 12

5.2、计数器硬件延时 . ........................................ 12

5.2.1、计数器初值计算 ..................................... 12

5.2.2、计算公式 ........................................... 12

5.2.3、1秒的方法 ......................................... 12

5.2.4、相应程序代码 ....................................... 13

5.3、软件延时 . .............................................. 13

5.4、时间及信号灯的显示 . .................................... 14

5.4.1、8051并行口的扩展 ................................... 14

5.4.2、显示原理: ......................................... 14

5.4.3、8255 PA口输出信号接信号灯: ........................ 14

5.4.5、8255与8051的连接: ................................ 15

5.5、程序设计 . .............................................. 16

5.5.1、流程图如图所示 ..................................... 16

5.5.2、程序源代 ........................................... 17

原件清单 ..................................................... 23

总结 ......................................................... 24

参考文献 ..................................................... 25

摘要

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了车流控制通行系统。通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA 口输出,显示时间直接通过8255的PC 口输出至双位数码管);

关键词:单片机 8051 8255 交通灯

1、引言

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。

电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。

1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

2、单片机概述

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

3、芯片简介

3.1、MSC-51芯片简介

MCS-51单片机内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

·中央处理器:

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

·数据存储器(RAM)

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM 只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

图1

·程序存储器(ROM):

8051共有4096个8位掩膜ROM ,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

·并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、 P1、P2或P3) ,用于对外部数据的传输。 ·全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步

移位器使用。

·中断系统:

8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路:

8051内置最高频率达12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL 的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。

下图是MCS-51系列单片机的内部结构示意图2。

图2

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直插DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外

置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3

图3

Pin9:RESET/Vpd 复位信号复用脚,当8051通电,时钟电路开始工作,在

RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC 指向0000H ,P0-P3输出口全部为高电平,堆栈指针写入07H ,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从0000H 地址开始执行程序。然而,初始复位不改变RAM (包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd 还是一复用脚,V cc 掉电其间,此脚可接上备用电源,以保证单片机

内部RAM 的数据不丢失。

4

·Pin30:ALE/当访问外部程序器时,ALE(地址锁存) 的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。 如果单片机是EPROM ,在编程其间,将用于输入编程脉冲。 ·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU 读入并执行。

·Pin31:EA/Vpp 程序存储器的内外部选通线,8051和8751单片机,内置

有4kB 的程序存储器,当EA 为高电平并且程序地址小于4kB 时,读取内部程序存储器指令数据,而超过4kB 地址则读取外部指令数据。如EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA 端必须接地。

在编程时,EA/Vpp 脚还需加上21V 的编程电压。

3.2、8255芯片简介

8255可编程并行接口芯片简介:

8255可编程并行接口芯片有三个输入输出端口,即A 口、B 口和C 口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A 口、B 口作为输入输出的数据端口。C 口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A /B配合使用,可以用作控制信号输出或作为状态信号输入。

8255可编程并行接口芯片方式控制字格式说明:

8255有两种控制命令字;一个是方式选择控制字;另一个是C 口按位置位/复位控制字。其中C 口按位置位/复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述,需要时用户可自行查找有关资料。 方式控制字格式说明如表1:

1

D7:设定工作方式标志,1有效。

D6、D5:A 口方式选择

0 0 —方式0

0 1 —方式1

1 ×—方式2

D4:A 口功能 (1=输入,0=输出)

D3:C 口高4位功能 (1=输入,0=输出)

D2:B 口方式选择 (0=方式0,1=方式1)

D1:B 口功能 (1=输入,0=输出)

D0:C 口低4位功能 (1=输入,0=输出)

8255可编程并行接口芯片工作方式说明:

方式0:基本输入/输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。

方式1:选通输入/输出方式。这时A 口或B 口的8位外设线用作输入或输出,C 口的4条线中三条用作数据传输的联络信号和中断请求信号。 方式2 :双向总线方式。只有A 口具备双向总线方式,8位外设线用作输入或输出,此时C 口的5条线用作通讯联络信号和中断请求信号。 3.3、74LS373简介

74LS373 是一种带三态门的8D 锁存器,其管脚示意图如下示:

其中:1D-8D 为8个输入端。

1Q-8Q为8个输出端。

LE 为数据打入端:当LE 为“1”时,锁存器输出

状态同输入状态;当LE 由“1”变“0”时,数据

打入锁存器

OE=0时,三态门打开;

时,三态门关闭,输出高阻。

4 系统硬件设计

4.1、交通管理的方案论证

东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案如表2。

表2说明:

(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南

北道为绿灯,此道车辆通过,行人禁止通行。时间为60秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。

(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为80秒。 东西方向车流大 通行时间长。

(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和

车辆就能安全畅通的通行。

(5)此表可根据车流量动态设定红绿灯初始值。

4.2、系统硬件设计

选用设备:8031单片机一片,8255并行通用接口芯片一片,74LS07两片,共阴极的七段数码管两个,双向晶闸管若干,7805三端稳压电源一个,红、黄、绿交通灯各两个,开关键盘、连线若干。

4.2.1、系统总框图如下:

图6

4.2.2、交通灯硬件线路图

见附录一

4.2.3、系统工作原理

(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统

(2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC 口显示每个灯的燃亮时间。

(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。

(4) 通过8051单片机的P3.0位来控制系统是工作或设置初值,当. 牌位0就对系统进行初始化,为1系统就开始工作。

(5)红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进行报警,3S 后然后恢复正常。

(6)增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。

(7)绿灯时间倒计时完毕,重新循环。

5、控制器的软件设计

5.1、每秒钟的设定

延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

5.2、计数器硬件延时

5.2.1、计数器初值计算

定时器工作时必须给计数器送计数器初值,这个值是送到TH 和TL 中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C 和计数初值设定为TC 可得到如下计算通式:

TC=M—C

式中,M 为计数器摸值,该值和计数器工作方式有关。

在方式0时M 为213 ;

在方式1时M 的值为216;

在方式2和3为28

5.2.2、计算公式

T=(M -TC )T 计数

或TC=M-T/T 计数

T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主

脉冲频率为TCLK12MHZ ,经过12分频

方式0 TMAX=213 *1微秒=8.192毫秒

方式1 TMAX=216 *1微秒=65.536毫秒

显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.

5.2.3、1秒的方法

我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,

然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。

5.2.4、相应程序代码

(1)主程序

定时器需定时50毫秒,故T0工作于方式1。 初值:

TC=M-T/ T计数 =216 -50ms/1us=15536=3CBOH

ORG 1000H

START: MOV TMOD, #01H ; 令T0为定时器方式1

MOV TH0, #3CH ;装入定时器初值

MOV TL0, #BOH ;

MOV IE, #82H ;开T0中断

SEBT T RO ;启动T0计数器

MOV RO, #14H ; 软件计数器赋初值

LOOP: SJMP $ ;等待中断

(2)中断服务子程序

ORG 000BH

AJMP BRT0

ORG 00BH

BRTO:DJNZ R0,NEXT

AJMP TIME ; 跳转到时间及信号灯显示子程序

DJNZ :MOV R0,#14H ;恢复R0值

MOV TH0, #3CH ;重装入定时器初值

MOV TL0, #BOH ;

MOV IE, #82H

RET1

END

5.3、软件延时

MCS-51的工作频率为2-12MHZ ,我们选用的8031单片机的工作频率为6MHZ 。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

具体的延时程序分析:

DELAY:MOV R4,#08H 延时1秒子程序

DE2:LCALL DELAY1

DJNZ R4,DE2

RET

DELAY1:MOV R6,#0 延时125ms 子程序

MOV R5,#0

DE1: DJNZ R5,$

DJNZ R6,DE1

RET

MOV RN,#DATA 字节数数为2 机器周期数为1

所以此指令的执行时间为2ms

DELAY1 为一个双重循坏 循环次数为256*256=65536 所以延时时间=65536*2=131072us 约为125us

DELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒 由于单片机的运行速度很快其他的指令执行时间可以忽略不计。

5.4、时间及信号灯的显示

5.4.1、8051并行口的扩展

8051虽然有4个8位I/O端口, 但真正能提供借用的只有P1口, 因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/O端口,显然8031的端口是不够,需要扩展。

扩展的方法有两种:(1)借用外部RAM 地址来扩展I/O端口;(2)采用I/O接口新片来扩充。我们用8255并行接口信片来扩展I/O端口。

5.4.2、显示原理:

当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。

5.4.3、8255 PA口输出信号接信号灯:

由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。

5.4.4、8255输出信号与数码管的连接:

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮则显示为8

采用共阴级连接:

其中 PC0\PB0-a,

PC1\PB1-b,

PC2\PB2-c,

PC3\PB3-d,

PC4\PB4-e,

PC5\PB5-f,

PC6\PB6-g

PC7\PB7 -SP接地

5.4.5、8255与8051的连接:

用8051的P0 口的 p0.7 连接8255的片选信号cs 我们用8031的地址采用全译码方式,当p0.7 =0 时片选有效, 其他无效, p0.1 p0.1 用于选择8255端口

P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0

A7 A6 A5 A4 A3 A2 A1 A0

1 X X X X X 0 0 00H为8255 的PA 口 1 X X X X X 0 1 01H 为8255的PB 口 1 X X X X X 1 0 02H 为8255的PC 口 1 X X X X X 1 1 03H 为8255的控制口 由于8051是分时对8255和储存器进行访问所以8051的P0口不会发生冲突

5.5、程序设计

5.5.1、流程图如图所示

图9 程序流程图

5.5.2、程序源代

ORG 0000H ;主程序的入口地址

LJMP MAIN ;跳转到主程序的开始处

ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址

LJMP T0_INT ;跳转到中断服务程序处

ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H

MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断

MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1

MOV TH1,#00H ;T1计数器清零

MOV TL1,#00H

SETB TR1 ;启动T1计时器

SETB EX1 ;允许INT1中断

SETB IT1 ;选择边沿触发方式

MOV DPTR ,#0003H

MOV A, #80H ;给8255赋初值,8255工作于方式0 MOVX @DPTR, A

AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转

MOV A,P1

JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间

MOV R0,#00H ;R0清零

MOV R0,A ;存入东西方向绿灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

RED: MOV A,P1

ANL A,#7FH ;P1.7置0

MOV R7,#00H ;R7清零

MOV R7,A ;存入东西方向红灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

;-------------------------------------------

N0: SETB TR0 ;启动T0计时器

MOV 76H,R7 ;红灯时间存入76H

N00: MOV A,76H ;东西方向禁止,南北方向通行

MOV R3,A

MOV DPTR,#0000H ;置8255A 口,东西方向红灯亮,南北方向绿灯亮

MOV A,#0DDH

MOVX @DPTR, A

N01: JB P2.0,B0

N02: SETB P3.0

CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行

;------黄灯闪烁5秒程序------

N1: SETB P3.0

MOV R3,#05H

MOV DPTR,#0000H ;置8255A 口,东西,南北方向黄灯亮 MOV A,#0D4H

MOVX @DPTR,A

N11: MOV R4,#00H

N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

N13: MOV DPTR,#0000H ; 置8255A 口,南北方向黄灯灭

MOV A,#0DDH

MOVX @DPTR,A

N14: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

CJNE R3,#00H,N1 ;闪烁时间达5秒则退出

;------------------------------------------------------------ N2: MOV R7,#00H

MOV A,R0 ;东西通行,南北禁止

MOV R3,A

MOV DPTR,#0000H ; 置8255A 口,东西方向绿灯亮,南北方向红灯亮

MOV A,#0EBH

MOVX @DPTR,A

N21: JB P2.0,T03

N22: CJNE R3,#00H,N21

;------黄灯闪烁5秒程序------

N3: MOV R3,#05H

MOV DPTR,#0000H ;置8255A 口,东西,南北方向黄灯亮 MOV A,#0E2H

MOVX @DPTR,A

N31: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

N32: MOV DPTR,#0000H ; 置8255A 口,南北方向黄灯灭

MOV A,#0EBH

MOVX @DPTR,A

N33: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

CJNE R3,#00H,N3 ;闪烁时间达5秒则退出

SJMP N00

;------闯红灯报警程序------

B0: MOV R2,#03H ;报警持续时间3秒

B01: MOV A,R3

JZ N1 ;若倒计时完毕,不再报警

CLR P3.0 ;报警

CJNE R2,#00H,B01 ;判断3秒是否结束

SJMP N02

;------1秒延时子程序-------

N7: RETI

T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms 的初值 MOV TH0,#0F1H

INC R4

INC R5

CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序

MOV R5,#00H ;R5清零

DEC R3 ;倒计时初值减一

DEC R2 ;报警初值减一

T01: ACALL DISP ;调用显示子程序

RETI ;中断返回

;------显示子程序------

DISP: JNB P2.4,T02

DISP1: MOV B,#0AH

MOV A,R3 ;R3中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS2: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

RET

;------东西方向车流量检测程序------

T03: MOV A,R3

SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量 JZ N3

JB P2.0,T03

INC R7

CJNE R7,#64H,E1

MOV R7,#00H ;中断到100次则清零

E1: SJMP N22

;------东西方向车流量显示程序------

T02: MOV B,#0AH

MOV A,R7 ;R7中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS3: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS4: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

LJMP N7

;------延时4MS 子程序----------

DELAY: MOV R1,#0AH

LOOP: MOV R6,#64H

NOP

LOOP1: DJNZ R6,LOOP1

DJNZ R1,LOOP

RET

;------字符表------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

原件清单

8051单片机一片

8255并行通用接口芯片一片

74LS07两片

共阴极的七段数码管两个

红、黄、绿发光二极管各4个

开关键盘

按钮两个

排阻两个(8个0.3k 电阻),43k 、4.3k 各一个,0.1k 、0.3k 各两个 二极管三个

22nF 一个、30pF 两个

晶体管(6M )1个

双位8字数码管4个

7805三端稳压电源一个

总结

本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA 口输出,显示时间直接通过8255的PC 口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现 。

通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

参考文献

1 余孟尝. 数字电子技术基础简明教程. 高等教育出版社,2006年

2 杨光友,朱宏辉. 单凭微型计算机原理及接口技术. 中国水利水电出版社,2002年

3曹柏荣等. 单片机原理及应用技术. 高等教育出版社,2004年

4张天凡. 完全手册51单片机C 语言开发详解. 电子工业出版社,2008

毕业设计说明书(论文)

课题名称: 交通信号灯控制电路设计(单片机)

航空电子设备维修 专业 081331班

学生姓名 黄波 学号 27

指导老师 贺国灿 技术职称______________

2011年 03 月 16 日

毕业设计(论文)任务书

学生姓名:黄波 班级:081331

1. 毕业设计(论文)题目:

2. 毕业设计(论文)使用的原始资料数据及设计技术要求:

1、单凭微型计算机原理及接口技术

2、单片机原理及应用技术

3、数字电子技术

采用MSC-51系列单片机8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了车流控制通行系统

3. 毕业设计(论文)工作内容及完成时间:

东西方向通行时间为80秒,南北方向通行时间为60秒,黄灯闪烁5秒。硬件采用8051单片机一片,8255并行通用接口芯片一片,74LS07两片,共阴极的双位七段数码管4个, 7805三端稳压电源一个,红、黄、绿交通灯各3个,软件采用汇编编程实现。

日期:自2010年12月15日至2011年3月16日

指导老师评语:

________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

指导老师:贺国灿 系主任:姚卫华

目录

摘要 .......................................................... 4

关键词. ....................................................... 4

1、引言 ....................................................... 5

2、单片机概述 ................................................. 5

3、芯片简介 ................................................... 5

3.1、MSC-51芯片简介 ......................................... 6

3.2、8255芯片简介 ........................................... 9

3.3、74LS373简介 ........................................... 10

4 系统硬件设计 .............................................. 10

4.1、交通管理的方案论证 . .................................... 10

4.2、系统硬件设计 . .......................................... 11

4.2.1、系统总框图如下: ................................... 11

4.2.2、交通灯硬件线路图 ................................... 11

4.2.3、系统工作原理 ....................................... 11

5、控制器的软件设计 .......................................... 12

5.1、每秒钟的设定 . .......................................... 12

5.2、计数器硬件延时 . ........................................ 12

5.2.1、计数器初值计算 ..................................... 12

5.2.2、计算公式 ........................................... 12

5.2.3、1秒的方法 ......................................... 12

5.2.4、相应程序代码 ....................................... 13

5.3、软件延时 . .............................................. 13

5.4、时间及信号灯的显示 . .................................... 14

5.4.1、8051并行口的扩展 ................................... 14

5.4.2、显示原理: ......................................... 14

5.4.3、8255 PA口输出信号接信号灯: ........................ 14

5.4.5、8255与8051的连接: ................................ 15

5.5、程序设计 . .............................................. 16

5.5.1、流程图如图所示 ..................................... 16

5.5.2、程序源代 ........................................... 17

原件清单 ..................................................... 23

总结 ......................................................... 24

参考文献 ..................................................... 25

摘要

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了车流控制通行系统。通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA 口输出,显示时间直接通过8255的PC 口输出至双位数码管);

关键词:单片机 8051 8255 交通灯

1、引言

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。

电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。

1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

2、单片机概述

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。

3、芯片简介

3.1、MSC-51芯片简介

MCS-51单片机内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

·中央处理器:

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

·数据存储器(RAM)

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM 只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

图1

·程序存储器(ROM):

8051共有4096个8位掩膜ROM ,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

·并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、 P1、P2或P3) ,用于对外部数据的传输。 ·全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步

移位器使用。

·中断系统:

8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路:

8051内置最高频率达12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL 的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。

下图是MCS-51系列单片机的内部结构示意图2。

图2

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直插DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外

置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3

图3

Pin9:RESET/Vpd 复位信号复用脚,当8051通电,时钟电路开始工作,在

RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC 指向0000H ,P0-P3输出口全部为高电平,堆栈指针写入07H ,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从0000H 地址开始执行程序。然而,初始复位不改变RAM (包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd 还是一复用脚,V cc 掉电其间,此脚可接上备用电源,以保证单片机

内部RAM 的数据不丢失。

4

·Pin30:ALE/当访问外部程序器时,ALE(地址锁存) 的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。 如果单片机是EPROM ,在编程其间,将用于输入编程脉冲。 ·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU 读入并执行。

·Pin31:EA/Vpp 程序存储器的内外部选通线,8051和8751单片机,内置

有4kB 的程序存储器,当EA 为高电平并且程序地址小于4kB 时,读取内部程序存储器指令数据,而超过4kB 地址则读取外部指令数据。如EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA 端必须接地。

在编程时,EA/Vpp 脚还需加上21V 的编程电压。

3.2、8255芯片简介

8255可编程并行接口芯片简介:

8255可编程并行接口芯片有三个输入输出端口,即A 口、B 口和C 口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A 口、B 口作为输入输出的数据端口。C 口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A /B配合使用,可以用作控制信号输出或作为状态信号输入。

8255可编程并行接口芯片方式控制字格式说明:

8255有两种控制命令字;一个是方式选择控制字;另一个是C 口按位置位/复位控制字。其中C 口按位置位/复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述,需要时用户可自行查找有关资料。 方式控制字格式说明如表1:

1

D7:设定工作方式标志,1有效。

D6、D5:A 口方式选择

0 0 —方式0

0 1 —方式1

1 ×—方式2

D4:A 口功能 (1=输入,0=输出)

D3:C 口高4位功能 (1=输入,0=输出)

D2:B 口方式选择 (0=方式0,1=方式1)

D1:B 口功能 (1=输入,0=输出)

D0:C 口低4位功能 (1=输入,0=输出)

8255可编程并行接口芯片工作方式说明:

方式0:基本输入/输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。

方式1:选通输入/输出方式。这时A 口或B 口的8位外设线用作输入或输出,C 口的4条线中三条用作数据传输的联络信号和中断请求信号。 方式2 :双向总线方式。只有A 口具备双向总线方式,8位外设线用作输入或输出,此时C 口的5条线用作通讯联络信号和中断请求信号。 3.3、74LS373简介

74LS373 是一种带三态门的8D 锁存器,其管脚示意图如下示:

其中:1D-8D 为8个输入端。

1Q-8Q为8个输出端。

LE 为数据打入端:当LE 为“1”时,锁存器输出

状态同输入状态;当LE 由“1”变“0”时,数据

打入锁存器

OE=0时,三态门打开;

时,三态门关闭,输出高阻。

4 系统硬件设计

4.1、交通管理的方案论证

东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案如表2。

表2说明:

(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南

北道为绿灯,此道车辆通过,行人禁止通行。时间为60秒。

(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。

(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为80秒。 东西方向车流大 通行时间长。

(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和

车辆就能安全畅通的通行。

(5)此表可根据车流量动态设定红绿灯初始值。

4.2、系统硬件设计

选用设备:8031单片机一片,8255并行通用接口芯片一片,74LS07两片,共阴极的七段数码管两个,双向晶闸管若干,7805三端稳压电源一个,红、黄、绿交通灯各两个,开关键盘、连线若干。

4.2.1、系统总框图如下:

图6

4.2.2、交通灯硬件线路图

见附录一

4.2.3、系统工作原理

(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统

(2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC 口显示每个灯的燃亮时间。

(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。

(4) 通过8051单片机的P3.0位来控制系统是工作或设置初值,当. 牌位0就对系统进行初始化,为1系统就开始工作。

(5)红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进行报警,3S 后然后恢复正常。

(6)增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。

(7)绿灯时间倒计时完毕,重新循环。

5、控制器的软件设计

5.1、每秒钟的设定

延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

5.2、计数器硬件延时

5.2.1、计数器初值计算

定时器工作时必须给计数器送计数器初值,这个值是送到TH 和TL 中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C 和计数初值设定为TC 可得到如下计算通式:

TC=M—C

式中,M 为计数器摸值,该值和计数器工作方式有关。

在方式0时M 为213 ;

在方式1时M 的值为216;

在方式2和3为28

5.2.2、计算公式

T=(M -TC )T 计数

或TC=M-T/T 计数

T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主

脉冲频率为TCLK12MHZ ,经过12分频

方式0 TMAX=213 *1微秒=8.192毫秒

方式1 TMAX=216 *1微秒=65.536毫秒

显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.

5.2.3、1秒的方法

我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,

然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。

5.2.4、相应程序代码

(1)主程序

定时器需定时50毫秒,故T0工作于方式1。 初值:

TC=M-T/ T计数 =216 -50ms/1us=15536=3CBOH

ORG 1000H

START: MOV TMOD, #01H ; 令T0为定时器方式1

MOV TH0, #3CH ;装入定时器初值

MOV TL0, #BOH ;

MOV IE, #82H ;开T0中断

SEBT T RO ;启动T0计数器

MOV RO, #14H ; 软件计数器赋初值

LOOP: SJMP $ ;等待中断

(2)中断服务子程序

ORG 000BH

AJMP BRT0

ORG 00BH

BRTO:DJNZ R0,NEXT

AJMP TIME ; 跳转到时间及信号灯显示子程序

DJNZ :MOV R0,#14H ;恢复R0值

MOV TH0, #3CH ;重装入定时器初值

MOV TL0, #BOH ;

MOV IE, #82H

RET1

END

5.3、软件延时

MCS-51的工作频率为2-12MHZ ,我们选用的8031单片机的工作频率为6MHZ 。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

具体的延时程序分析:

DELAY:MOV R4,#08H 延时1秒子程序

DE2:LCALL DELAY1

DJNZ R4,DE2

RET

DELAY1:MOV R6,#0 延时125ms 子程序

MOV R5,#0

DE1: DJNZ R5,$

DJNZ R6,DE1

RET

MOV RN,#DATA 字节数数为2 机器周期数为1

所以此指令的执行时间为2ms

DELAY1 为一个双重循坏 循环次数为256*256=65536 所以延时时间=65536*2=131072us 约为125us

DELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒 由于单片机的运行速度很快其他的指令执行时间可以忽略不计。

5.4、时间及信号灯的显示

5.4.1、8051并行口的扩展

8051虽然有4个8位I/O端口, 但真正能提供借用的只有P1口, 因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/O端口,显然8031的端口是不够,需要扩展。

扩展的方法有两种:(1)借用外部RAM 地址来扩展I/O端口;(2)采用I/O接口新片来扩充。我们用8255并行接口信片来扩展I/O端口。

5.4.2、显示原理:

当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间 ,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值 ,重新进入循环。

5.4.3、8255 PA口输出信号接信号灯:

由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。

5.4.4、8255输出信号与数码管的连接:

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮则显示为8

采用共阴级连接:

其中 PC0\PB0-a,

PC1\PB1-b,

PC2\PB2-c,

PC3\PB3-d,

PC4\PB4-e,

PC5\PB5-f,

PC6\PB6-g

PC7\PB7 -SP接地

5.4.5、8255与8051的连接:

用8051的P0 口的 p0.7 连接8255的片选信号cs 我们用8031的地址采用全译码方式,当p0.7 =0 时片选有效, 其他无效, p0.1 p0.1 用于选择8255端口

P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0

A7 A6 A5 A4 A3 A2 A1 A0

1 X X X X X 0 0 00H为8255 的PA 口 1 X X X X X 0 1 01H 为8255的PB 口 1 X X X X X 1 0 02H 为8255的PC 口 1 X X X X X 1 1 03H 为8255的控制口 由于8051是分时对8255和储存器进行访问所以8051的P0口不会发生冲突

5.5、程序设计

5.5.1、流程图如图所示

图9 程序流程图

5.5.2、程序源代

ORG 0000H ;主程序的入口地址

LJMP MAIN ;跳转到主程序的开始处

ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址

LJMP T0_INT ;跳转到中断服务程序处

ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H

MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断

MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1

MOV TH1,#00H ;T1计数器清零

MOV TL1,#00H

SETB TR1 ;启动T1计时器

SETB EX1 ;允许INT1中断

SETB IT1 ;选择边沿触发方式

MOV DPTR ,#0003H

MOV A, #80H ;给8255赋初值,8255工作于方式0 MOVX @DPTR, A

AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转

MOV A,P1

JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间

MOV R0,#00H ;R0清零

MOV R0,A ;存入东西方向绿灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

RED: MOV A,P1

ANL A,#7FH ;P1.7置0

MOV R7,#00H ;R7清零

MOV R7,A ;存入东西方向红灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

;-------------------------------------------

N0: SETB TR0 ;启动T0计时器

MOV 76H,R7 ;红灯时间存入76H

N00: MOV A,76H ;东西方向禁止,南北方向通行

MOV R3,A

MOV DPTR,#0000H ;置8255A 口,东西方向红灯亮,南北方向绿灯亮

MOV A,#0DDH

MOVX @DPTR, A

N01: JB P2.0,B0

N02: SETB P3.0

CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行

;------黄灯闪烁5秒程序------

N1: SETB P3.0

MOV R3,#05H

MOV DPTR,#0000H ;置8255A 口,东西,南北方向黄灯亮 MOV A,#0D4H

MOVX @DPTR,A

N11: MOV R4,#00H

N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

N13: MOV DPTR,#0000H ; 置8255A 口,南北方向黄灯灭

MOV A,#0DDH

MOVX @DPTR,A

N14: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

CJNE R3,#00H,N1 ;闪烁时间达5秒则退出

;------------------------------------------------------------ N2: MOV R7,#00H

MOV A,R0 ;东西通行,南北禁止

MOV R3,A

MOV DPTR,#0000H ; 置8255A 口,东西方向绿灯亮,南北方向红灯亮

MOV A,#0EBH

MOVX @DPTR,A

N21: JB P2.0,T03

N22: CJNE R3,#00H,N21

;------黄灯闪烁5秒程序------

N3: MOV R3,#05H

MOV DPTR,#0000H ;置8255A 口,东西,南北方向黄灯亮 MOV A,#0E2H

MOVX @DPTR,A

N31: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

N32: MOV DPTR,#0000H ; 置8255A 口,南北方向黄灯灭

MOV A,#0EBH

MOVX @DPTR,A

N33: MOV R4,#00H

CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

CJNE R3,#00H,N3 ;闪烁时间达5秒则退出

SJMP N00

;------闯红灯报警程序------

B0: MOV R2,#03H ;报警持续时间3秒

B01: MOV A,R3

JZ N1 ;若倒计时完毕,不再报警

CLR P3.0 ;报警

CJNE R2,#00H,B01 ;判断3秒是否结束

SJMP N02

;------1秒延时子程序-------

N7: RETI

T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms 的初值 MOV TH0,#0F1H

INC R4

INC R5

CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序

MOV R5,#00H ;R5清零

DEC R3 ;倒计时初值减一

DEC R2 ;报警初值减一

T01: ACALL DISP ;调用显示子程序

RETI ;中断返回

;------显示子程序------

DISP: JNB P2.4,T02

DISP1: MOV B,#0AH

MOV A,R3 ;R3中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS2: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

RET

;------东西方向车流量检测程序------

T03: MOV A,R3

SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量 JZ N3

JB P2.0,T03

INC R7

CJNE R7,#64H,E1

MOV R7,#00H ;中断到100次则清零

E1: SJMP N22

;------东西方向车流量显示程序------

T02: MOV B,#0AH

MOV A,R7 ;R7中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS3: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS4: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

LJMP N7

;------延时4MS 子程序----------

DELAY: MOV R1,#0AH

LOOP: MOV R6,#64H

NOP

LOOP1: DJNZ R6,LOOP1

DJNZ R1,LOOP

RET

;------字符表------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

原件清单

8051单片机一片

8255并行通用接口芯片一片

74LS07两片

共阴极的七段数码管两个

红、黄、绿发光二极管各4个

开关键盘

按钮两个

排阻两个(8个0.3k 电阻),43k 、4.3k 各一个,0.1k 、0.3k 各两个 二极管三个

22nF 一个、30pF 两个

晶体管(6M )1个

双位8字数码管4个

7805三端稳压电源一个

总结

本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A 为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA 口输出,显示时间直接通过8255的PC 口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现 。

通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

参考文献

1 余孟尝. 数字电子技术基础简明教程. 高等教育出版社,2006年

2 杨光友,朱宏辉. 单凭微型计算机原理及接口技术. 中国水利水电出版社,2002年

3曹柏荣等. 单片机原理及应用技术. 高等教育出版社,2004年

4张天凡. 完全手册51单片机C 语言开发详解. 电子工业出版社,2008


相关内容

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...

  • 单片机毕业论文题目
  • PLC电路在备用自动投入中 PLC在变电站变压器自动化中的实现 VHDL电路设计 变频恒压供水控制系统的研究 超声波测距模块的设计 车辆牌照图像识别算法研究与实现 城市交通决策支持系统 出租车计费系统的设计 串口通信控制器 串口通讯 – 单片机程序控制语音播放 单片机串行通信发射部分设计 单片机的多 ...

  • 毕业设计-基于单片机的智能交通灯控制系统的设计
  • 智能交通灯控制系统的设计 上海交通大学 学 生 姓 名 学 号 专 业 (班 级) 测试计量技术及仪器 B0903592 1090359019 1090359020 皮文苑 胡文涛 课 程 名 称 智 能 仪 器 设 计 任 课 教 师 丁 国 清 学院名称 电子信息与电气工程学院 1 基于单片机的 ...

  • 单片机题目毕业设计
  • mcu002 ARM硬件电路板设计之外围接口电路研究mcu003 CDMA通信系统中的接入信道部分进行仿真与分析[doc格式+45页+毕业论文1.6万] mcu004 CDMA通信系统中的接入信道部分进行仿真与分析[论文+45页+1.7万+doc] mcu005 CDMA系统的研究与MATLAB仿真 ...

  • 基于单片机的交通信号灯
  • 二○一六-二○一七学年第一学期 电子信息工程系 电子产品策划与设计 报告书 班 级: 课程名称: 学生姓名: 学 号: 指导教师: 二○一六年十二月 基于单片机的交通信号灯 一.设计要求 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新.初始状态为状态1,南北方向 ...