基于AT89S51单片机控制的交通灯设计Word文档格式.docx

上传人:b****5 文档编号:17604589 上传时间:2022-12-07 格式:DOCX 页数:18 大小:676.74KB
下载 相关 举报
基于AT89S51单片机控制的交通灯设计Word文档格式.docx_第1页
第1页 / 共18页
基于AT89S51单片机控制的交通灯设计Word文档格式.docx_第2页
第2页 / 共18页
基于AT89S51单片机控制的交通灯设计Word文档格式.docx_第3页
第3页 / 共18页
基于AT89S51单片机控制的交通灯设计Word文档格式.docx_第4页
第4页 / 共18页
基于AT89S51单片机控制的交通灯设计Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于AT89S51单片机控制的交通灯设计Word文档格式.docx

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

基于AT89S51单片机控制的交通灯设计Word文档格式.docx

2系统设计要求与整体规划

2.1基础设计要求

1)设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,两个方向能根据车流量大小自动调节通行时间,车流量大,通行时间长,车流量小,通行时间短。

2)每次绿灯变红灯时,要求黄灯先亮5S,才能变换运行车辆。

3)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。

4)同步设置人行横道红、绿灯指示。

2.2系统规划

我们将系统设计成可分离单独工作的主控制机与客户端的形式,但是和传统的C/S模式不一样的是,每个终端机可以脱离主控制机而独立工作。

即使主控制机停止工作,或者由于某种原因不能正常工作,各终端机也可以照常稳定的工作。

各个终端机负责管理路口的多个信号灯。

为了方便我们称主控制机为主系统,各个终端机称为子系统。

控制系统的总框图如图2-1示

 

2.3方案论证和比较

1)智能交通灯的研究现状

目前设计交通灯的方案有很多,有应用CPLD设计实现交通信号灯控制器方法;

有应用PLC实现对交通灯控制系统的设计;

有应用单片机实现对交通信号灯设计的方法。

目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。

加上一个倒计时的显示计时器来控制行车。

对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在缺点:

两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;

另一车道为副干道,车辆较少,放行时间应该短些

2)智能交通灯的设计方案及改进措施

针对道路交通拥挤,交叉路口经常出现拥堵的情况。

利用单片机控制技术,提出了软件和硬件设计方案及改进措施:

根据各道路路口车流量的大小自动调节通行时间。

由于AT89S51单片机自单带有2计数器,6个中断源,能满足系统的设计要求。

用单片机设计不但设计简单,而且成本低,用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。

系统构图如图2-2所示:

图2-2系统结构框图

3AT89S51单片机简介

3.1单片机概述

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:

中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。

它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

3.2AT89S51单片机的主要性能参数和主要引脚

3.2.1主要性能参数

与单片机产品兼容8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:

0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

3.2.2AT89S51芯片内部结构简介

·

中央处理器:

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

·

数据存储器(内部RAM):

数据存储器用于存放变化的数据。

AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。

程序存储器(内部ROM):

程序存储器用于存放程序和固定不变的常数等。

通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。

AT89S51内部配置了4KB闪存。

定时/计数器(ROM):

定时/计数器用于实现定时和计数功能。

AT89S51共有2个16位定时/计数器。

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

8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。

每个口都由1个锁存器和一个驱动器组成。

它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。

全双工串行口:

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

时钟电路:

时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。

中断系统:

中断系统的作用主要是对外部或内部的终端请求进行管理与处理。

AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。

图3-2是AT89S51系列单片机的内部结构示意图。

图3-2AT89S51系列单片机的内部结构示意图

3.2.3主要引脚功能

AT89S51引脚图如图3-1所示:

VCC:

电源电压

GND:

P0口:

P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。

作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

P1口:

Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

Flash编程和程序校验期间,Pl接收低8位地址。

表1具有第二功能的P1口引脚

端口引脚

第二功能:

P1.5

MOSI(用于ISP编程)

P1.6

P1.7

P2口:

P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。

Flash编程或校验时,P2亦接收高位地址和其它控制信号。

P3口:

P3口是一组带有内部上拉电阻的8位双向I/0口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。

作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:

表2具有第二功能的P1口引脚

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

/INT0(外中断0)

P3.3

/INT1(外中断1)

P3.4

T0(定时/计数器0外部输入)

P3.5

T1(定时/计数器1外部输入)

P3.6

/WR(外部数据存储器写选通)

P3.7

/RD外部数据存储器读选通)

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。

DISRT0位缺省为RESET输出高电平打开状态。

ALE/

当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。

程序储存允许(

)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次

有效,即输出两个脉冲。

当访问外部数据存储器,没有两次有效的

信号。

/VPP:

外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。

F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。

XTAL1:

振荡器反相放大器及内部时钟发生器的输入端。

4智能交通灯方案的实现

根据设计任务和要求,可画出该控制器的原理框图,为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。

其中红灯(R)亮,表示禁止通行;

黄灯(Y)亮表示暂停;

绿灯(G)亮表示允许通行。

4.1系统总框图如图4-1:

图4-1系统总框图

4.2智能交通灯系统的组成

交通灯系统由四部分组成:

车检测电路,信号灯电路,时间显示电路,紧急转换开关。

4.3智能交通灯系统的工作原理

大家都明白,绿灯的放行时间与车辆通过数量不成正比。

比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。

因为这有一个起步的问题,还有一个黄灯等待问题。

也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。

我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。

通过一辆车的平均时间是1.25秒。

如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。

通过一辆车的平均时间只需1秒。

显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。

当然绿灯时间也不可能无限长,要考虑到让另一路口的等待时间不能过长。

人们总是希望在交通灯前等候的时间越短越好。

所以笔者设定了绿灯通行时间的上限为40秒。

在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。

当交叉路口双方车辆较多时通行时间设为40秒。

4.3.1车检测电路

用来判断各方向车辆状况,比如:

20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒,依此类推。

绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。

这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。

因为路上的车不可能突然增多,塞车都有一个累积过程。

这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。

本系统的特点是成本低,控制准确。

十字路口车辆通行顺序如图4-2所示:

图4-2十字路口车辆通行顺序

由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表3。

表3显示时间选择

车辆情况

本次该方向通行时间

下次该方向通行时间

南往北少车,北往南少车

20秒

40秒

南往北少车,北往南多车

南往北多车,北往南少车

南往北多车,北往南多车

东往西少车,西往东少车

东往西少车,西往东多车

东往西多车,西往东少车

东往西多车,西往东多车

4.3.2信号灯电路

信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图4-3。

每个路口的信号的的转换顺序为:

绿——>

黄——>

红绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。

红灯表示禁止通行。

绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。

图4-3交通信号灯运行状态

4.3.3时间显示电路

在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。

由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图4-4所示。

图4-4数码管连接方法

4.4交通灯控制线路如上图所示

5.系统软件设计

5.1控制器的软件设计

5.1.1每秒钟的设定

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

计数器硬件延时

.a计数器初值计算

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

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

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

TC=M-C

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

在方式0时M为213;

在方式1时M的值为216;

在方式2和3为28

.b计算公式

T=(M-TC)T计数

或TC=M-C/T计数

T计数是单片机时钟周期TCLK的12倍;

TC为定时初值

如单片机的主脉冲频率为TCLK12MHZ ,经过12分频

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

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

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

5.1.21秒的方法

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

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

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

相应程序代码

(1)主程序 

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

 初值:

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

ORG1000H

START:

MOVTMOD,#01H;

令T0为定时器方式1

MOVTH0,#3CH;

装入定时器初值

MOVTL0,#BOH  ;

MOVIE,   #82H;

开T0中断

SEBT TRO      ;

启动T0计数器

MOV RO,  #14H  ;

软件计数器赋初值

LOOP:

 SJMP$       ;

等待中断

(2)中断服务子程序

     ORG00BH     

AJMP BRT0

     ORG 00BH

BRT0:

DJNZR0,NEXT

      AJMPTIME;

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

DJNZ:

MOVR0,#14H ;

恢复R0值

  MOVTH0,#3CH;

重装入定时器初值

MOVIE,  #82H

      RET1

END

5.1.3软件延时

MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。

机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。

我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

具体的延时程序分析:

DELAY:

MOVR4,#08H延时1秒子程序

DE2:

LCALLDELAY1

DJNZR4,DE2

RET

DELAY1:

MOVR6,#0;

延时125ms子程序

MOVR5,#0

DE1:

DJNZR5,$

DJNZR6,DE1

MOVRN,#DATA;

字节数数为2,机器周期数为1

所以此指令的执行时间为2ms,而DELAY1为一个双重循坏循环次数为256*256=65536所以延时时间=65536*2=131072us约为125us。

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

5.2流程图如图5-1所示

图5-1交通灯的软件设计流程图

5.3程序源代码

ORG0000H

A_BITEQU20H;

用于存放南北十位数

B_BITEQU21H;

C_BITEQU22H;

用于存放东西十位数

D_BITEQU23H;

用于存放东西

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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