基于单片机的交通灯控制系统Word格式.docx
《基于单片机的交通灯控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯控制系统Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两个旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;
另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
1.2、设计的目的
通过课程设计培养同学们的系统设计能力,提高以下能力的训练:
(1)调查研究,分析问题的能力。
(2)使用设计手册,技术规范的能力。
(3)查阅中外文献的能力。
(4)制定设计方案的能力。
(5)计算机应用的能力。
(6)使用绘图软件绘图的能力。
(7)技术经济指标的分析能力。
(8)掌握单片机系统中扩展简单基本I/O接口的方法。
(9)掌握简单程序的设计方法。
(10)掌握模拟交通灯控制的实现方法。
(11)掌握外部中断的基本使用方法。
(12)掌握中断处理程序的编程方法。
(13)掌握键盘的接口方法。
(14)了解LED的接法。
1.3、设计意义
交通灯是城市交通的重要指挥系统,与人们的日常生活密切相关。
随着经济的快速发展,城市中的车辆逐渐增多,交通拥堵和堵塞现象日趋严重,引起交通事故频发,环境污染加剧等一系列问题,因此设计一个灵活、稳定、便捷的多功能交通灯控制系统具有必要性和现实性。
本次设计的意义在于通过对具体的控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。
在实践设计过程中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
2单片机控制交通灯的硬件设计
2.1、硬件功能的设计
硬件部分由8031单片机、8255可编程外设接口、红黄绿LED灯、电阻、按钮、74LS373锁存器、74LS138译码器等部件组成。
1、用二极管显示红绿黄等;
2、用数码管显示十字路口两个方向的剩余时间;
3、用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭;
4、用按键设置两个方向的通行时间(绿灯点亮时间)和暂缓黄灯通行时间(黄灯点亮的时间)
2.2.硬件原理图
2.3主要器件简介
2.3.1、8031单片机简介
Intel公司于1980年推出了第二代单片机,即MCS-51系列单片机,这是一位高性能的单片机,与MCS-48系列相比,MCS-51系列单片机无论在片内程序存储器、数据存储器、输入/输出的功能、种类和数量上还是在系统的扩展功能、指令系统的功能等方面,都有很大加强,常用的MCS-51系列单片机有两种类型产品:
8051/8751、8031。
8031和8751的结构与8051基本相当同,其主要差别反映在存储器的配置上的不同。
8051内部没有4KB的掩膜ROM程序存储器,而8751则是以4KB的EPROM代替了8051内部4KB的掩膜ROM。
由于8051的程序是Intel公司预先为用户烧制的、含有专门用途的程序,因而较难推广。
而8751相对来说价格较高。
如果将8031外界一片EPROM电路,它将相当于8051,其具有价格低廉、功能强、使用灵活等特点,因而易于推广使用。
本次设计中采用8031.
其内部包括:
8位中央处理器CPU;
片内振荡器及时钟电路;
128BRAM;
4KBROM;
21个特殊功能寄存器;
四个8位并行I/O端口(共32跟I/O线);
一个双全串行通道;
可寻址各64KB的外部数据、程序存储器空间的控制电路;
两个16位的定时器/计数器;
五个中断源、两个优先级嵌套中断结构。
相比较而言,8031片内无程序存储器,因此,在构成最小系统时,不仅要外接晶体振荡器和复位电路,还应在外扩展程序存储器。
8051/8751片内有4KB的ROM/EPROM,因此,只需要外接晶体振荡器和复位电路就可以构成最小系统。
此次设计中选用8031单片机为核心硬件,8031单片机最小应用系统由下述几部分组成:
微处理器:
8031;
外接程序存储器(EPROM):
2716(或2732);
地址锁存器:
74LS373;
时钟电路;
复位电路。
时钟电路如下:
图2-1时钟电路
晶振电路如下:
图2-2晶振电路
微处理器、外接程序存储器、地址锁存器三部分之间用地址/数据线连接,P0口的8根线:
P0.7~P0.0分时地用用作数据线或低8位地址线,P2口的8根线用作高8位地址线。
8031微处理器的功能是对EPROM进行读操作,对内部RAM进行读写操作,通过片内的I/O端口还可以直接与外围设备连接。
外部程序存储器可以采用EPROM芯片2716(2K)或2732(4K)。
作为寻址线,地址线的低8位A7~A0是由P0口的P0.7~P0.0经地址锁存器(74LS373)与EPROM芯片的低8位地址线引脚相连的。
片选信号接地,所以只要有寻址信息即选中该片EPROM。
2716的寻址范围0000H~07FFH。
而2732的寻址范围是0000H~0FFFH。
在执行读取数据操作的过程中,地址信息必须一直保持。
8031单片机最小系统中,数据线和低8位的地址线是分时地共用P0口的8根线,地址所存器选通信号的作用是选通地址锁存器,将P0.7~P0.0上的低8位地址锁存到地址锁存器中。
外部程序存储器的选通信号的作用是当8031单片机访问外部程序存储器是,选通外部程序存储器,读取存储单元的数据到P0口,供8031单片机读取。
控制线的作用就是在8031单片机系统对扩展外部RAM进行读写操作时,作为CPU的读、写脉冲输出线。
8031引脚图如下:
图2-38031引脚图
引脚功能的介绍:
1、主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地。
2、外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;
对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;
对XHMOS,此引脚应悬浮。
3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±
0.5V)内,VPD就向内部RAM提供备用电源。
②ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
③PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
④EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
单片机各口的应用:
P1口负责控制交通灯,P0口负责给8255a传送数据以及给锁存器传递8255a的地址,P2口为8255a的地址以及选择8255a,P3口负责控制按键;
2.3.2、8255可编程外设接口简介
8255是一种可编程的并行I/O接口芯片,它有24条I/O引脚,分A、B两大组(每组十二条引脚),允许分组编程,工作方式分为0、1和2三种。
使用8255可实现以下功能:
并行输入或输出多位数据;
实现输入数据数据所存和输出数据缓存;
提供多个通信接口联络控制信号(如中断请求,外设准备好及选通等);
通过读取状态字可实现程序对外设的查询。
8255的引脚图如下:
图2-4可编程外设接口8255的引脚图
8255有三个8位并行口:
端口A、端口B和端口C。
他们都可以作为输入或输出工作方式,但功能上有着不同的特点。
1)端口A:
一个8位数据输出锁存和缓冲器;
2)端口B:
一个8位数据输入/输出、锁存/缓存器;
一个8位数据输入缓冲器
3)端口C:
一个8位数据输出锁存/缓存器;
一个8位数据输入缓存器(输入没有锁存)。
通常端口A或B作为输入/输出数据端口,而端口C作为控制或状态信息端口,它在“方式字”控制下,可以分成两个四位的端口,每个端口包含一个四位锁存器。
它们可分别与端口A和B配合使用,作为控制信号输出或状态信号输入,也可单独使用。
8255共有三个输入输出和一个内部控制寄存器口,共四个端口,用A0、A1来加以选择,其功能表见表2-1。
表2-18255端口选择表
CS
A1
A0
RD
WR
D7~D0数据传送方向
1
端口A→数据总线
端口A←数据总线
端口B→数据总线
端口B←数据总线
端口C→数据总线
端口C←数据总线
无效
数据总线→8255控制寄存器
×
数据总线为高阻
表2-1-2为8255A方式控制选择字:
D7
D6
D5
D4
D3
D2
D1
D0
控制字
标识位
A口
方式选择
I/O选择
C高4位
B口
C低4位
1:
方式控制
0:
C位操作
00:
方式0
01:
方式1
10:
方式2
1:
IN
0:
OUT
表2-1-28255A方式控制选择字
8255A各口的应用:
PA负责传输南北向数码管的值,PB负责传输东西向数码管的值,PC负责控制东西向、南北向数码的暗灭,控制寄存器(假设为PD)负责控制8255a的工作方式,此系统中值为0x80,即无条件传输方式.
8255可编程并行接口芯片工作方式说明:
方式0:
基本输入/输出方式。
适用于三个端口中的任何一个。
每一个端口都可以用作输入或输出。
输出可被锁存,输入不能锁存。
方式1:
选通输入/输出方式。
这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。
方式2:
双向总线方式。
只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通讯联络信号和中断请求信号。
2.2.3、74LS373简介
74LS373时常用的地址锁存器芯片,它是实质是一个带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要接一块74LS373芯片。
其功能引脚图如下:
图2-574LS373引脚图
LE由高变低时,输出端8位信息被锁存,直到LE端再次有效。
当三态门使能信号OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,输出悬空。
当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0~Q7状态与输入端D1~D7状态相同;
当C发生负的跳变时,输入端D0~D7数据锁入Q0~Q7。
51单片机的ALE信号可以直接与74LS373的C连接。
2.2.4、74LS138译码器简介
74LS138为3线—8线译码器,共有54/74S138和54/74LS138两种线路结构型式,其中74LS138译码器的工作原理如下:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低
电平译出。
74LS138的作用:
利用G1、/(G2A)和/(G2B)可级联扩展成24线译码器;
若外接一个反相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
其引脚图如下:
图2-574LS138译码器功能图
2.2.5、LED显示器接口
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管分为供阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,他便能点亮,而共阳极就是将八个LED的阳极连在一起。
数码管有静态显示和动态显示两种形。
动态是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低,当显示器位数较多时,一般采用动态显示方法。
动态显示程序清单如下:
ORG
0100H
MAIN:
MOV
R3,#00H
;
字型码初始地址
LOOP:
DPRT,#TABLE
字型码送数据指针
A,R3
A,@A+DPTR
P1,A
送显示
R4,#0E8H
循环显示某个字符1S
DELAY:
ACALL
DISPLAY
显示
DJNZ
R4,#DELAY
延时显示时间示到继续
INC
R3
显示下个字符
CJNE
R3,#0AH,LOOP
示显示到9续续
AJMP
MAIN
返回主程序
DISPLAY:
MOV
R1,#08H
共显示8位LED
R5,#00H
从第一位开始显示
DISP:
A,R5
P3,A
送地址数据
DELAY1
送位显示15MS
R5
指向下一位LED
R1,DISP
8位未显示完继续
RET
DELAY1:
R6,#10H
延时子程序
LOOP1:
R7,#38H
LOOP2:
R7,LOOP2
R6,LOOP1
TABLE:
DB
0C0H,0F9H,0A4H,0B0H,99H
9