基于单片机的交通控制灯的设计与实现.docx

上传人:b****6 文档编号:8442808 上传时间:2023-01-31 格式:DOCX 页数:26 大小:450.83KB
下载 相关 举报
基于单片机的交通控制灯的设计与实现.docx_第1页
第1页 / 共26页
基于单片机的交通控制灯的设计与实现.docx_第2页
第2页 / 共26页
基于单片机的交通控制灯的设计与实现.docx_第3页
第3页 / 共26页
基于单片机的交通控制灯的设计与实现.docx_第4页
第4页 / 共26页
基于单片机的交通控制灯的设计与实现.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

基于单片机的交通控制灯的设计与实现.docx

《基于单片机的交通控制灯的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通控制灯的设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。

基于单片机的交通控制灯的设计与实现.docx

基于单片机的交通控制灯的设计与实现

交通控制灯

摘要

红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这一技术在19世纪就已出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。

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

红灯亮表示“停止”,绿灯亮表示“通行”。

1918年,又出现了带控制的红绿灯和红外线红绿灯。

带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。

红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。

红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。

绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。

左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。

红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口

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

·中央处理器:

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

·数据存储器(RAM)

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

图2-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

 

图2-3

Pin9:

RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位,见下图4。

此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部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的编程电压。

 

摘要……………………………………………………………………………………………第一章交通信号灯硬件电路的设计

1.1交通信号灯的作用及工作原理…………………………………………………………1

第二章系统组成

2.1硬件控制线路图…………………………………………………………………………3

2.2器件和原理………………………………………………………………………………3

2.2.1什么是单片机……………………………………………………………………………4

2.2.2什么是单片机系统………………………………………………………………………5

2.3部分电路功能…………………………………………………………………………6

2.3.1晶振电路………………………………………………………………………………6

2.3.2复位电路………………………………………………………………………………6

2.3.3信号灯控制电路………………………………………………………………………6

2.4设计流程图……………………………………………………………………6

第三章交通信号灯软件的系统编程

3.1信号灯亮灭的定时功能…………………………………………………………………8

3.1.1单片机的定时器………………………………………………………………………8

3.1.2如何使用MCS_51单片机的定时器呢?

…………………………………………………8

3.1.3定时器数值的设置应该注意的事项……………………………………………………8

3.1.4定时1ms的程序代码…………………………………………………………………9

3.251单片机的中断系统…………………………………………………………………9

3.2.1中断系统的概念………………………………………………………………………9

3.2.2单片机的终端系统的作用…………………………………………………………9

3.2.3如何实现单片机的中断……………………………………………………………9

3.3软件流程图…………………………………………………………………………10

第四章系统仿真

4.1PRETUES软件的介绍………………………………………………………………14

第五章调试及检测

5.1硬件调试………………………………………………………………………………21

5.1.1最小系统的调试………………………………………………………………21

5.1.2故障点的分析…………………………………………………………………21

5.2软件调试及问题解决…………………………………………………………………22

第六章结束语

6.1文总结………………………………………………………………………………23

6.2工作展望………………………………………………………………………………23

参考文献………………………………………………………………………24

致谢……………………………………………………………………………………………26

第一章交通信号灯硬件电路的设计

1.1交通信号灯的作用及工作原理

1.1.1道路交通控制的作用主要表现为以下几个方面:

  

改善交通秩序,增加交通安全。

减少交通延误,提高经济效益。

  

降低污染程度,保护生态环境。

节省能源和土地消耗。

交通信号灯由红灯、绿灯、黄灯组成。

红灯表示禁止通行,绿灯表示准许通行,黄灯表示警示。

交通信号灯分为机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。

交通信号灯用于道路平面交叉路口,通过对车辆、行人发出行进或停止的指令,使各同时到达的人、车交通流尽可能减少相互干扰,从而提高路口的通行能力,保障路口畅通和安全。

(1)机动车信号灯。

由绿黄红三种颜色的灯组成,绿灯亮时,准许车辆通行,但转弯车辆不得妨碍被放行的直行车辆、行人通行;黄灯亮时,已越过停止线的车辆可继续通行;红灯亮时,禁止车辆通行。

(2)车道信号灯。

车道信号灯由绿色箭头灯和红色叉形灯或红色箭头灯组成,绿色箭头灯亮时,准许本车道车辆按指示方向通行;红色叉形灯或红色箭头灯亮时,禁止本车道车辆通行。

(3)人行横道信号灯。

人行横道信号灯由绿灯和红灯组成,绿灯亮时,准许行人通过人行横道;红灯亮时,禁止行人进入人行横道,但是已经进入人行横道的,可以继续通过或者在道路中心线处停留等候第一章交通信号灯硬件电路的设计

1.1.2道路交通信号灯的工作原理如下:

设计一个十字路口交通灯自动控制电路。

设:

a--------南北方向绿灯接通;

b--------东西方向绿灯接通;

c--------南北方向红灯接通;

d--------东西方向红灯接通;

e--------南北方向黄灯接通;

f--------东西方向黄灯接通。

工作顺序为A→B→C→D→A,要求各状态的工作时间如下图所示。

绿灯-(25s)-黄灯--(5s)-红灯--(30s)--绿灯--(循环)

 

第二章系统组成

2.1硬件控制线路图

2.2器件和原理

所需硬件电路的名称

规格

数量

单片机芯片MSC-52

1

晶振

12M

1

电容

22pF

2

电解电容

10uF

2

电阻

220

6

排阻

220

1

共阴数码管

共阴

4

发光二极管

红黄绿

各两个

开关

1

MAX232

1

电容

1uF

4

串口

1

电阻

10K

1

2.2.1什么是单片机

单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:

CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

 单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

 早期的单片机都是8位或4位的。

其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。

此后在8031上发展出了MCS51系列单片机系统。

基于这一系统的单片机系统直到现在还在广泛使用。

随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。

90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。

随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。

目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。

 单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。

事实上单片机是世界上数量最多的计算机。

现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。

而个人电脑中也会有为数不少的单片机在工作。

汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!

单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

2.2.2什么是单片机系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.

对51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路.

下面给出一个51单片机的最小系统电路图.

图3-1

复位电路:

由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍.

晶振电路:

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)

2.3部分电路功能

2.3.1晶振电路

2.3.2复位电路

2.3.3信号灯控制电路,LED及显示接口

1

发光二极管简称LED,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性

当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现,因此而发光。

当所有二极管都发出光时,大多数都不是很有效的。

在普通二极管里,半导体材料本身吸引大量的光能而结束。

发光二极管是由一个塑性灯泡覆盖集中灯光在一个特定方向。

由于不同材料的禁带宽度不同,所以由不同材料制成的发光二极管可发出不同波长的光。

另外,有些材料由于组分和掺杂不同,例如,有的具有很复杂的能带结构,相应的还有间接跃迁辐射等,因此有各种各样的发光二极管。

发光二极管在制作时,使用的材料有所不同,那么就可以发出不同颜色的光。

发光二极管的发光颜色有:

红色光、黄色光、绿色光、红外光等。

发光二极管的外形有:

圆形、长方形、三角形、正方形、组合形、特殊形等。

常用的发光二极管应用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。

使用LED作指示电路时,应该串接限流电阻,该电阻的阻值大小应根据不同的使用电压和LED所需工作电流来选择。

发光二极管的压降一LED的光学参数与pn结结温有很大的关系。

一般工作在小电流IF<10mA,或者10~20mA长时间连续点亮LED温升不明显。

因此我们选的二极管颜色为红色,黄色。

绿灯是通行信号,面对绿灯的车辆可以直行红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。

黄灯是警告,信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。

2.4设计流程图

图2.4.1

第三章交通信号灯软件的系统编程

3.1信号灯亮灭的定时功能

3.1.1单片机的定时器

在单片机应用系统中,实现定时的方法一般有以下三种:

  1:

软件定时:

让计算机执行一段程序来进行事件延时。

这个程序段本身份没有安排其他的执行目的,只是利用该程序段的执行花费的一个固定时间。

通过适当的选择指令和安排循环次数,可调节这段程序执行所需花费的时间的长短。

其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。

因此软件定时的时间不宜过长。

  2:

硬件定时:

利用硬件电路实现定时。

其特点是不占用CPU时间,通过改变电路元器件参数调来节定时,但使用不够灵活方便。

对于时间较长的定时,常用硬件电路来实现。

  3:

可编程定时器:

通过专用的定时计数器芯片来实现。

其特点是通过对系统时钟脉冲进行计数实现定时,定时的时间可通过程序的设定的方法改变,使用灵活方便。

也可实现对外部脉冲的计数功能。

单片机交通控制器的设计

当定时计数器设置为计数工作方式时,技术器对来自输入引脚T0和T1的外部信号计数,

外部信号的下降沿将触发计数。

最高检测频率为振荡频率的二十四分之一。

计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。

当设置了定时器的工作方式并启动定时器工作后,定时器就安倍设定的工作方式独立工作,不在占用CPU的操作时间,只有在计数器计满溢出时才能中断CPU当前的操作。

3.1.2定时器数值的设置应该注意的事项

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

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。

他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。

因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:

TC=M-C

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

在方式0时M为8196;在方式1时M的值为65536;在方式2和3为256。

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,则初始值TC=65536-50000

THO=(65536-50000)%256TL0=(65536-50000)/256

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

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

在中断服务子程序中,CPU先使软件计数器加1,然后判断它是否为20。

为20表示1秒已到可以返回到输出时间显示程序

3.1.3定时1ms的程序代码

voiddelay(unsignedintz)

{unsignedintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

3.251单片机的中断系统

3.2.1中断系统的概念

计算机在执行正常程序时,如果系统出现某些急需处理的异常情况和特殊请求,CPU会暂时中止正在执行的指令,转去对随机发生的更紧迫事件进行处理;处理完后,CPU会自动返回原来的程序继续执行。

3.2.2单片机的中断系统的作用

CPU响应中断申请时,首先使先级有效位置位,以阻止同级或低级的终端申请;然后把程序计数器PC的内容压入堆饯,再把与中断服务程序入口地址送到程序计数器PC;同时清除某些中断标志。

以上过程均由端系统自动完成。

3.2.3如何实现单片机的中断

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

中断源

MCS-51单片机的中断源共有5个,分为3类:

外部中断源,片内溢出中断源,串行口中断源。

外部中断源可以分为由片内P3.2引脚输入的INT0中断,以及由P3.3引脚输入的INT1中断。

片内溢出中断分为定时器T0中断和定时器T1中断。

串行口中断只有一个,片内串行数据的接收和发送中断。

这5个中断源在程序存储器中各有中断服务程序的入口地址,这个地址也称为矢量地址。

在CPU响应中断时,硬件自动形成各自的入口地址,由此进入中断服务程序,从而实现了正确的转移。

这些中断源的符号,名称,产生的条件和中断服务入口地址如图所

3.3软件流程图#include

unsignedinti=0,num=0,time=60;

unsignedcharge,shi;

unsignedintcodetable[10]={0x3f,0xXXX,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

voiddelay(unsignedint);

voiddisplay();

main()

{TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

EX0=1;

IT0=1;

while

(1)

{while(time!

=5)

{P1=0XF3;

if(num==20)

{time--;

num=0;

}

display();

}

while(time!

=2)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1