1、第 1 页 共 27 页 基 于 单 片 机 的 交 通 灯 设 计 第 2 页 共 27 页 摘要 : 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测 技术日益更新 。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软 硬 件结合,加以完善。 十字路口车辆 穿梭 ,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的 就 是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用 MSC-51 系列单片机 ATSC51 和可编程并行 I/O 接口芯片 8255A 为中心
2、器件来设计交通灯控制器,实现了能根据实际车流量通过 8051 芯片的 P1口设置红、绿灯燃亮时间的功能 ;红绿灯循环点亮,倒计时剩 5 秒时黄灯闪烁警示( 交通灯信号通过 PA 口输出 , 显示时间直接通过 8255 的 PC 口 输出 至双位数码管) ; 车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本 系统 实用性强 、 操作简单 、扩展 功能 强 。 关键词 : 单片机 交通灯 闯红灯 检测车流量 1 引言 当今 ,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在 19世纪就已出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红,
3、蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。 1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。 1869 年 1 月 2 日,煤气灯爆炸,使警察受伤,遂被取消。 电气启动的红绿灯出现在美国, 这种红绿灯由红绿黄三色圆形的投光器组成, 1914 年始安装于 纽约市 5 号大街的一座高塔上。红灯亮表示“停止”, 绿灯亮表示“通行”。 1918 年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便
4、变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少第 3 页 共 27 页 交通事故有明显效果。 1968 年,联合国道路交通和道路标志信号协定对各种信号灯的含 义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对
5、红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。 2 单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简 称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片 机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和 I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过 1、 2、 3、 3 代的发展,目前单片机正朝 着高性能和多品种方向发展,它们的 CPU 功能在增强,
6、内部资源在增多,引角的多功能化,以及低电压底功耗。 3 芯片简介 3.1 MSC-51 芯片简介 MCS-51 单片机内部结构 8051 是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051 单片机包含中央处理器、程序存储器 (ROM)、数据存储器 (RAM)、定时 /计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器: 中央处理器 (CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算
7、和控制输入输出功能等操作。 数据存储器 (RAM) 8051 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的 ,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。 第 4 页 共 27 页 图 1 程序存储器 (ROM): 8051 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。 定时 /计数器 (ROM): 8051 有两个 16 位的可编程定时 /计数器,以实现定时或计数产生中断用于控制程序转向。 并
8、行输入输出 (I/O)口: 8051 共有 4 组 8 位 I/O 口 (P0、 P1、 P2 或 P3),用于对外部数据的传输。 全双工串行口: 8051 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。 中断系统: 8051 具备较完善的中断功能,有两个外中断、两个定时 /计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。 时钟电路: 8051 内置最高频率达 12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。 单片机的结构有两种类型,一种是程序存储器和数
9、据存储器分开的形式,即哈佛(Harvard)结构,另 一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿 (Princeton)结构。 INTEL 的 MCS-51 系列单片机采用的是哈佛结构的形式,而后续产品 16 位的 MCS-96 系列单片机则采用普林斯顿结构。 下图是 MCS-51 系列单片机的内部结构示意图 2。 第 5 页 共 27 页 图 2 MCS-51的引脚说明: MCS-51 系列单片机中的 8031、 8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构,右图是它们的引脚配置, 40 个引脚中,正电源和地线两根,外置石英振荡
10、器的时钟线两根,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 个时钟周期以上的
11、高电平,系统即初始复位。初始化后,程序计数器 PC 指向0000H, P0-P3 输出口全部为高电平,堆栈指 针 写入 07H,其它专用寄存器被清 “0”。 RESET由高电平下降为低电平后,系统即从 0000H 地址开始执行程序。然而,初始复位不改 变RAM(包括工作寄存器 R0-R7)的状态, 8051 的初始态 。 第 6 页 共 27 页 8051 的复位方式可以是自动复位,也可以是手动复位,见下图 4。此外, RESET/Vpd还是一复用脚, Vcc 掉电其间,此脚可接上备用电源,以保证单片机内部 RAM 的数据不丢失。 图 4 Pin30:ALE/ 当访问外部程序器时, ALE(地
12、址锁存 )的输出用于锁存地址的低位字节。而访问内部程序存储器时, ALE 端将有一个 1/6 时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器, ALE 会跳过一个脉冲。 如果单片机是 EPROM,在编程其间, 将用于输入编程脉冲。 Pin29: 当访问外部程序存储器时,此脚输出负脉冲选通信号, PC 的 16 位地址数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU 读入并执行。 P in31:EA/Vpp程序存储器的内外部选通线, 8051 和 8751 单片机,内置有 4kB
13、的程序存储器,当 EA 为高电平并且程序地址小于 4kB 时,读取内部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的 8031,EA 端必须接地。 在编程时, EA/Vpp脚还 需加上 21V 的编程电压。 3.2 8255 芯片简介 8255 可编程并行接口芯片简介 : 8255可编程并行接口芯片有三个输入输出端口,即 A口、 B口和 C口,对应 于引脚 PA7PA0、 PB7 PB0 和 PC7 PC0。其内部还有一个控制寄存器,即控制口。通常 A 口、 B 口作为输入输出的数据端口。
14、C 口作为控制或状态信息的端口,它在方式字的控制下,可以分成 4 位的端口,每个端口包含一个 4 位锁存器。它们分别与端口 A配合使用,可以用作控制信号输出或作为状态信号输入。 8255 可编程并行接口芯片方式控制字格式说明 : 8255 有两种控制命令字;一个是方式选择控制字;另一个是 C口按位置位复位控制字。其中 C口按位置位复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述,需要时用 户可自行查找有关资料。 方式控制字格式说明如表 1: 表 1 D7:设定工作方式标志,D7 D6 D5 D4 D3 D2 D1 D0 第 7 页 共 27 页 1 有效。 D6、 D5: A口方式选择
15、 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 条线中三条用作数据传输的联
16、络信号和中断请求信号。 方式 2 :双向总线方式。只有 A口具备双向总线方式, 8 位外设线用作输入或输出,此时 C口的 5条线用作通讯联络信号和中断请求信号。 3.3 74LS373 简介 74LS373 是一种带三态门的 8D 锁存器,其管脚示意图如下示: 其中 : 1D-8D 为 8个输入端。 1Q-8Q 为 8个输出端。 LE 为数据打入端:当 LE 为“ 1”时,锁存器输出 状态 同输入状态;当 LE 由“ 1”变“ 0”时,数据 打 入锁存器 OE 为输出允许端:当 OE=0 时,三态门打开; 当 OE=1 时,三态门关闭,输出高阻。 4 系统 硬件设计 4.1 交通管理的方案论证
17、 东西 、 南北 两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为 东西 、 南北 两干道的公共停车时间。设 东西 道比 南北道的车流量大,指示灯燃亮的方案如表 2。 60S 5S 80S 5S 第 8 页 共 27 页 表 2 表 2 说明: ( 1)当 东西方向 为红灯, 此 道车辆禁止通行, 东西 道行人可通过; 南北 道为绿灯,此 道车辆通过,行人禁止通行。时间为 60 秒。 ( 2)黄灯闪烁 5 秒,警示车辆和行人 红、绿灯的状态即将切换 。 ( 3)当 东西
18、方向为 绿灯, 此 道车辆通行; 南北方向 为红灯, 南北 道车辆禁止通过,行人通行。时间为 80 秒。 东西方向 车流大 通行时间长 。 ( 4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。 ( 5)此表可根据车流量动态设定 红绿灯初始值。 4.2 系统硬件设计 选用设备 8031 单片机一片 选用设 备: 8031 弹片机一片, 8255 并行通用接口芯片一片, 74LS07 两片, MAX692看门狗一片, 共阴极的七段数码管两个双向晶闸管若干, 7805 三端稳压电源一个,红、黄、绿交通灯各两个,开关键盘、连线若干。 4 2 1 系统总框图如下 :
19、图 6 4 2 2 交通灯 硬件 线路图 东西 道 红灯亮 黄 灯亮 绿 灯亮 黄 灯亮 南北 道 绿 灯亮 黄 灯亮 红 灯亮 黄 灯亮 第 9 页 共 27 页 P1_0 (TIM2)2P1_1 (TIM2EX)3P1_24P1_35P1_46P1_5 (MOSI)7P1_6 (MISO)8P1_7 (SCK)9RESET10P3_0 (RXD)11P3_1 (TXD)13P3_2 (INT0)14P3_3 (INT1)15P3_4 (TIM0)16P3_5 (TIM1)17P3_6 ( WR )18P3_7 ( RD )19X2 (OUT)20X1 (IN)21GND22P2_0 (A8
20、)24P2_1 (A9)25P2_2 (A10)26P2_3 (A11)27P2_4 (A12)28P2_5 (A13)29P2_6 (A14)30P2_7 (A15)31PSEN32ALE / PROG33VPP / EA35P0_7 (AD7)36P0_6 (AD6)37P0_5 (AD5)38P0_4 (AD4)39P0_3 (AD3)40P0_2 (AD2)41P0_1 (AD1)42P0_0 (AD0)43VCC44NC12NC23NC34NC1AT89S52-24JI0.43Kwhite black0.1K0.1K5V1211.0592MHz30pF30pFS10.3K22uF5V
21、S24.3K1 2 3 4 5 6 7 816 15 14 13 12 11 1090.3K123456781615141312111090.3K1 2 3 4 5 6 7 816 15 14 13 12 11 1095VD27O15O39GND10O515D38O412O719D03D718D514O02D413D14VCC20D617OE1O26LE11O616SN74LS373N5VRED1GREEN2YELLOW2RED2YELLOW1GREEN10.3KA11A26f2g3e4d5c8DP7b9a10f2g3e4d5c8DP7b9a101OE11A121A241A361A48GND1
22、01Y4121Y3141Y2161Y118VCC202Y432Y352Y272Y192A1112A2132A3152A4172OE195V5V31 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2040 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2PB3PB4PB5PB6PB7VccD7D6D5D4D3D2D1D0RESETWRPA7PA
23、6PA5PA482555VA11A26RED5VVCC第 10 页 共 27 页 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 位来控
24、制系统是工作或设置初值,当 .牌位 0 就对系统进行初始化,为 1 系统就开始工作。 ( 5) 红灯倒计时时间, 当有车辆闯红灯时,启动蜂鸣器进行报警, 3S 后 然后恢复正常。 ( 6) 增加 每次绿灯 时间 车流量检测的功能 ,并且通过查询 P2.0 端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。 ( 7)绿灯时间倒计时完毕,重新循环。 控制器的软件设计 5.1 每秒钟的设定 延时方法可以有两种一中是利用 MCS-51内部定时器才生溢出中断来确定 1秒的时间,另一种是采用软延时的方法。 5.2 计数器硬件延时 5.2.1 计数器初值计算 定时器工作
25、时必须给计数器送计数器初值,这个值是送到 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 计数 或 T 计数 T 计数 是单片机时钟周期 的倍;为定时初值 如单片机的主脉冲频率为 ,经过分频 方式 213 微秒毫秒 方式 216 微秒毫秒 显然秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题 5.2.3 秒的方法