51单片机红绿灯课程设计文档格式.docx

上传人:b****1 文档编号:616435 上传时间:2023-04-29 格式:DOCX 页数:12 大小:53.66KB
下载 相关 举报
51单片机红绿灯课程设计文档格式.docx_第1页
第1页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第2页
第2页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第3页
第3页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第4页
第4页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第5页
第5页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第6页
第6页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第7页
第7页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第8页
第8页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第9页
第9页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第10页
第10页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第11页
第11页 / 共12页
51单片机红绿灯课程设计文档格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

51单片机红绿灯课程设计文档格式.docx

《51单片机红绿灯课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机红绿灯课程设计文档格式.docx(12页珍藏版)》请在冰点文库上搜索。

51单片机红绿灯课程设计文档格式.docx

由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用。

3.1单片机交通控制系统的通行方案设计

设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。

其具体状态如下图所示。

说明:

黑色表示亮,白色表示灭。

交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图2.1所示:

•8

丁绿黄

o

红绿黄

oo

红绿闘

•oo

tL

绿

tr

•OO

好立档•让好朋方也着副X

图1交通状态

本系统采用MSC-51系列单片机AT89C51作为中心器件来设计交

通灯控制器。

实现以下功能:

初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔24s,黄灯闪烁6次。

之后,南北绿灯亮,东西红灯亮,方向开始通车,时隔24s,南北黄灯闪烁6次,然后又切换成东西方向通车,如此重复。

当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。

当事故处理完毕(再次按中断键),重新按上述方式工作。

当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。

下面我们可以用图表表示灯状态和行止状态的关系如下

衣1交通状态及红绿灯状态

状态1

状态3

状态4

状态6

东西向

禁行

竽待变换

適行

等待变换

南北向

通行

等持交换

东西红灯

1

东四黄灯

东西録灯

南北红灯

南北绿灯

南北黄灯

东西南北四个路口均有红绿黄3灯和数码显示借2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。

状态及红绿灯状态如表1所示。

0表示灭,1表示亮。

3.3单片机智能交通灯控制系统的基本构成及原理

单片机设计智能交通灯控制系统,可用单片机直接控制交通信号灯的状态变化,实现倒计时、紧急情况处理与时间调整等功能。

LED数码菅显示

TT

图2系统的总体框圏

据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块、LED倒计时模块接受输出。

系统的总体框图如上所示。

单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码借上实时显示。

在此过程中随时通过键盘调用急停按键和时间调节中断。

交通灯系统硬件设计

此设计采用的是AT89C51单片机为内部控制芯片,外部接有按键中断电路以及复位电路以外,还有4个两位数码骨,用以倒计时和4个路口的灯,共12个LED灯。

四川信息职业技术学院毕业设计说明书(论文)

页5

第二章交通灯系统硬件设计

此设计采用的是AT89C51单片机为内部控制芯片,外部接有按键中断电路以及复位电路以外,还有4个两位数码骨,用以倒计时和4

个路口的灯,共12个LED灯。

2.1系统框架图

外部品体振荡屯路

电路板一块,AT89S51单片机一片,八段LED数码管四个。

发光二极借12个(4个绿的,4个红,4个黄的),8个电阻,2个电容,1个晶振,1个电解电容,1个按键开关。

(系统结构框图:

图2.1)

数码显不行AT89C51

按键复位电路

按键外部中析

LED灯

閤2.1

2.3.1MSC-51芯片简介

MCS-51单片机内部结构

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

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

•中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整

个单元系统协调的工作,完成运算和控制输入输出功能等操作。

•数据存储器(RAM)

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

8051内部结构

mwitanritaif

8051

2.2

2.3.2LED显示数码管

八段LED显示器由八个发光二极管组成。

其中7个长条形的发光管排列成“日”字形,另一个圆点形的放光管在显示器的右下角作为显示小数点用,它能显示各种数字及部分英文字母。

LED显示器有两种不同的形式:

一种是8个发光二极管的阳极都连在一起的,称为共阳极LED显示器如图2-2所示;

另一种是8个发光二极借的阴极都连在一起的,称为共阴极LED显示器

3.3晶体振荡器

石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整,作用是为系统提供基本的时钟信号。

我们在晶体某一方向加一电场,从而在与此垂直的方向产生机械振动,有了机械振动,就会在相应的垂直面上产生电场,从而使机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限制时,才达到最后稳定,这种压电谐振的频率即为晶体振荡器的固有频率。

附录

原程序代码

#include<

reg51.h>

#defineuintunsignedint//宏定义

#defineucharunsignedchar//宏定义

ucharaa,cc,NBshi,NBge,DXshi,DXge,NBtemp,DXtemp;

//定义变量

sbitNBR=P3A0;

//南北红灯

sbitNBY=P3A1;

//南北黄灯

sbitNBG=P3A4;

//南北绿灯

sbitDXY=P3A5;

//东西黄灯

sbitDXG=P3A6;

//东西绿灯

sbitDXR=P3A7;

//东西红灯

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};

//数字的代码从0-9

//数字的代码从0-9

voidinit();

//初始化子程序的申明

voiddisplayNB(ucharNBshi,ucharNBge);

//显示子程序的申明voiddelay(uintz);

//延时子程序的申明

voidfenjieNBf);

//南北数码管显示数字的分解函

数voidfenjieDXO;

//东西数码骨显示数字的分解函数

voidmain()

//显示子程序的申明

voiddelay(uintz);

voidfenjieNBO;

//南北数码管显示数字的分解函数

voidfenjieDXf);

//东西数码管显示数字的分解函数

{

init();

//初始化子程序whilefl){

if(cc==82)//循环一次结束{cc=O;

//从新进行下一次循环

voiddelay(uintz)//带参数的延时函数

{ucharx,y;

//定义两个变量for(x=z;

x>

0;

x-)//循环延时

for(y=110;

y>

y-);

//循环延时

}

voidinit()//初始化子程序{EA=1;

//开总中断

ETO=1;

//允许定时器0中断EXO=1;

//允许外部中断0中断TRO=1;

//启动定时器0

TMOD=0x01;

//设置定时器0工作方式1

TH0=(65536-50000)/256;

//给定时器的高8为赋初值

TL0=(65536-50000)%256;

//给定时器的低8为赋初值

voidfenjieNBO//南北数码管显示数字的分解函数

{NEshANEtemp/]0;

〃将要显示的时间的十位赋给变量

NBge=NBtemp%10;

//将要显示的时间的个位赋给变量

NBtemp—;

voidfenjieDXf)//东西数码管显示数字的分解函数

{DXshi=DXtemp/10;

DXge=DXtemp%10;

DXtemp—;

voiddisplayNB(ucharNBshi,ucharNEge)//带参数的数码管显示函数

//显示南北十位P2=0xfe;

PO=table[NBshi];

delay(5);

//显示南北个位

P2=0xfd;

PO=table[NBge];

delay(15);

I

f

voiddisplayDX(ucharDXshi,ucharDXge){

//东西十位

P2=0xfb;

Pl=table[DXshi];

delay(5);

〃东西个位

P2=0xf7;

P1=table[DXge];

delay⑸;

voidtimerOQinterrupt1//定时器0的中断函数

//重装计数初值

aa++;

if(aa==20)//判断定时1分钟是否到

aa=O;

//计数次数清0

if(cc==O)//南北亮红灯40秒,东西亮黄灯5秒

DXY=O;

//东西的黄灯亮

DXG=1;

//东西的绿灯不亮

DXR=1;

//东西的红灯不亮

NBY=1;

//南北的黄灯不亮

NBG=1;

//南北的绿灯不亮

NBR=O;

//南北的红灯亮

DXtemp=5;

//东西的黄灯亮5秒

NBtemp=40;

//南北的红灯亮40秒

elseif(cc==6)//南北继续亮红灯40秒,东西亮绿灯34秒

DXY=1;

//东西的黄灯不亮

DXG=O;

//东西的绿灯亮

DXtemp=34;

//东西的绿灯亮34秒

elseif(cc==41)//南北亮黄灯5秒,东西亮红灯40秒

DXR=0;

//东西的红灯亮

NBY=0;

//南北的黄灯亮

NBR=1;

//南北的红灯不亮

NBtemp=5;

//南北的黄灯亮5秒

DXtemp=40;

//东西的红灯亮40秒

elseif(cc==47)//南北亮绿灯34秒,东西继续亮红灯40秒

nby=1;

NBG=O;

//南北的绿灯亮

NBtemp=34;

//南北的绿灯亮34秒

fenjieNBf);

//调用南北分解函数

fenjieDXf);

//调用东西分解函数

cc++;

//判断亮灯的变量自加1

displayNB(NBshi,NBge);

//调用NB红灯40秒的显示程序displayDX(DXshi,DXge);

//调用DX黄灯5秒的显示程序}

voidJJZD()interrupt0//紧急中断程序,南北东西都亮红灯

DXR=O;

displayNB(O,O);

//南北数码借都显示0

displayDX(O,O);

//东西数码借都显示0

cc=O;

//重最开始显示

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2