51单片机红绿灯课程设计.docx

上传人:b****6 文档编号:4475535 上传时间:2022-12-01 格式:DOCX 页数:15 大小:19.33KB
下载 相关 举报
51单片机红绿灯课程设计.docx_第1页
第1页 / 共15页
51单片机红绿灯课程设计.docx_第2页
第2页 / 共15页
51单片机红绿灯课程设计.docx_第3页
第3页 / 共15页
51单片机红绿灯课程设计.docx_第4页
第4页 / 共15页
51单片机红绿灯课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

51单片机红绿灯课程设计.docx

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

51单片机红绿灯课程设计.docx

51单片机红绿灯课程设计

 

1电源供给方案

 

为使模块坚固工作,须有靠谱电源。

所以考虑了两种电源方案:

方案一:

采纳独立的稳压电源。

此方案的长处是坚固靠谱,且有各样成熟电路可供采纳;弊端是各模块都采纳独立电源,会使系统复杂,

 

且可能影响电路电平。

 

方案二:

采纳单片机控制模块供给电源。

改方案的长处是系统简洁简要,节俭成本;弊端是输出功率不高。

综上所述,选择方案二。

 

2显示界面方案

 

该系统要求完成倒计时功能。

鉴于上述原由,我考虑了二种方案:

方案一:

采纳数码管显示。

这类方案只显示有限的符号和数码字符,简单,方便。

方案二:

采纳点阵式LED显示。

这类方案固然功能兴旺,并可方便的显示各样英文字符,汉字,图形等,但实现复杂,成本较高。

 

综上所述,选择方案一。

 

3输入方案:

 

设计要求系统能调理灯亮时间,并可办理紧迫状况,我研究了两种方

 

案:

方案一:

采纳8155扩展I/O口及键盘,显示等。

 

该方案的长处是:

使用灵巧可编程,而且有RAM,及计数器。

若用该

 

方案,可供给好多I/O口,但操作起来稍显复杂。

 

方案二:

直接在I/O口线上接上按键开关。

 

因为该系统关于交通灯及数码管的控制,只用单片机自己的I/O口就

 

可实现,且自己的计数器及RAM已经够用。

 

综上所述,选择方案二。

 

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

 

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

其详细状态以以以下列图所示。

说明:

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

 

交通状态从状态1开始变换,直至状态6今后循环至状态1,循环往复,即以以以下列图:

 

图1交通状态

 

本系统采纳MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器。

实现以下功能:

 

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

 

闪耀6次。

今后,南北绿灯亮,东西红灯亮,方向开始通车,时隔

 

24s,南北黄灯闪耀6次,今后又切换成东西方向通车,这样重复。

 

当发生交通不测(中止产生)时,所有亮红灯,进行交通事故的办理。

 

当事故办理完成(再次按中止键),从头按上述方式工作。

 

当南北路口的流量大时,可以增添南北路口亮绿灯的时间,当东

 

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

 

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

 

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

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

说明:

0表示灭,1表示亮。

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

 

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

(论文)

 

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

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

 

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

在此过程中随时经过键盘调用急停按键和时间调理中止。

交通灯系统硬件设计

 

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

 

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

 

 

页5

 

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

 

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

 

口的灯,共12个LED灯。

 

系统框架图

 

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

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

(系统构造框图:

图)

 

MSC-51芯片简介

 

MCS-51单片机内部构造

 

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

 

8051单片机包括中央办理器、程序存储器(ROM)、数据存储器(RAM)、准时/计数器、并行接口、串行接口和中止系统等几大单元及数据总线、地点总线和控制总线等三大总线,此刻我们分别加以说明:

 

·中央办理器:

 

中央办理器(CPU)是整个单片机的核心零件,是8位数据宽度的办理

 

器,能办理8位二进制数据或代码,CPU负责控制、指挥和调动整个

 

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

 

·数据存储器(RAM)

 

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是一致编址的,专用寄存器只好用于寄存控制指令数据,用户只

 

能接见,而不可以用于寄存用户数据,所以,用户能使用的RAM只有

 

128个,可寄存读写的数据,运算的中间结果或用户定义的字型表。

 

LED显示数码管

 

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

此中7个长条形的发光管排

 

列成“日”字形,另一个圆点形的放光管在显示器的右下角作为显示

 

小数点用,它能显示各样数字及部分英文字母。

LED显示器有两种不

 

同的形式:

一种是8个发光二极管的阳极都连在一同的,称为共阳极

 

LED显示器如图2-2所示;另一种是8个发光二极管的阴极都连在一

 

起的,称为共阴极LED显示器

 

晶体振荡器

 

石英晶体振荡器的特色是振荡频次正确、电路构造简单、频次易调整,

 

作用是为系统供给基本的时钟信号。

我们在晶体某一方向加一电场,

 

进而在与此垂直的方向产活力械振动,有了机械振动,就会在相应的垂直面上产生电场,进而使机械振动和电场互为因果,这类循环过程向来连续到晶体的机械强度限制时,才达到最后坚固,这类压电谐振的频次即为晶体振荡器的固有频次。

 

附录

 

原程序代码

 

#include<>

 

#defineuintunsignedint//宏定义

 

#defineucharunsignedchar//宏定义

 

ucharaa,cc,NBshi,NBge,DXshi,DXge,NBtemp,DXtemp;//定义变量

 

sbitNBR=P3^0;//南北红灯

 

sbitNBY=P3^1;//南北黄灯

 

sbitNBG=P3^4;//南北绿灯

 

sbitDXY=P3^5;//东西黄灯

 

sbitDXG=P3^6;//东西绿灯

 

sbitDXR=P3^7;//东西红灯

 

ucharcodetable[]={

 

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

 

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

 

0x7f,0x6f};//数字的代码从0-9

 

//数字的代码从0-9

 

voidinit();//初始化子程序的声明

 

voiddisplayNB(ucharNBshi,ucharNBge);//显示子程序的申

 

明voiddelay(uintz);//延时子程序的声明

 

voidfenjieNB();//南北数码管显示数字的分解函数voidfenjieDX();//东

 

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

 

voidmain()

 

voidinit();//初始化子程序的声明

 

voiddisplayNB(ucharNBshi,ucharNBge);//显示子程序的声明

 

voiddelay(uintz);//延时子程序的声明

 

voidfenjieNB();//南北数码管显示数字的分解函数voidfenjieDX();//东西数码管显示数字的分解函数voidmain()

 

{

 

init();//初始化子程序while

(1){

 

if(cc==82)//循环一次结束{cc=0;//从头进行下一次循环

 

}

 

}

 

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

 

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

 

{ucharx,y;//定义两个变量for(x=z;x>0;x--)//循环延时

 

for(y=110;y>0;y--);//循环延时

 

}

 

voidinit()//初始化子程序{EA=1;//开总中止

 

ET0=1;//赞同准时器0中止EX0=1;//同不测面中止0中止TR0=1;//启

 

动准时器0

 

TMOD=0x01;//设置准时器0工作方式1

 

TH0=(65536-50000)/256;//给准时器的高8为赋初值

 

TL0=(65536-50000)%256;//给准时器的低8为赋初值

 

}

 

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

 

{NBshi=NBtemp/10;//将要显示的时间的十位赋给变量

 

NBge=NBtemp%10;//将要显示的时间的个位赋给变量

 

NBtemp--;

 

}

 

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

 

{DXshi=DXtemp/10;DXge=DXtemp%10;DXtemp--;

 

}

 

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

 

{

 

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

 

P0=table[NBshi];

 

delay(5);

 

//显示南北个位

 

P2=0xfd;

 

P0=table[NBge];

 

delay(15);

 

}

 

voiddisplayDX(ucharDXshi,ucharDXge){

 

//东西十位

 

P2=0xfb;

 

P1=table[DXshi];

 

delay(5);

 

//东西个位

 

P2=0xf7;

 

P1=table[DXge];

 

delay(5);

 

}

 

voidtimer0()interrupt1//准时器0的中止函数

 

{

 

TH0=(65536-50000)/256;//重装计数初值

 

TL0=(65536-50000)%256;//重装计数初值

 

aa++;

 

if(aa==20)//判断准时1分钟能否到

 

{

 

aa=0;//计数次数清0

 

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

 

{

 

DXY=0;//东西的黄灯亮

 

DXG=1;//东西的绿灯不亮

 

DXR=1;//东西的红灯不亮

 

NBY=1;//南北的黄灯不亮

 

NBG=1;//南北的绿灯不亮

 

NBR=0;//南北的红灯亮

 

DXtemp=5;//东西的黄灯亮5秒

 

NBtemp=40;//南北的红灯亮40秒

 

}

 

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

 

{

 

DXY=1;//东西的黄灯不亮

 

DXG=0;//东西的绿灯亮

 

DXR=1;//东西的红灯不亮

 

NBY=1;//南北的黄灯不亮

 

NBG=1;//南北的绿灯不亮

 

NBR=0;//南北的红灯亮

 

DXtemp=34;//东西的绿灯亮34秒

 

}

 

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

 

{

 

DXY=1;//东西的黄灯不亮

 

DXG=1;//东西的绿灯不亮

 

DXR=0;//东西的红灯亮

 

NBY=0;//南北的黄灯亮

 

NBG=1;//南北的绿灯不亮

 

NBR=1;//南北的红灯不亮

 

NBtemp=5;//南北的黄灯亮5秒

 

DXtemp=40;//东西的红灯亮40秒

 

}

 

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

40秒{

 

DXY=1;//东西的黄灯不亮

 

DXG=1;//东西的绿灯不亮

 

DXR=0;//东西的红灯亮

 

NBY=1;//南北的黄灯不亮

 

NBG=0;//南北的绿灯亮

 

NBR=1;//南北的红灯不亮

 

NBtemp=34;//南北的绿灯亮34秒

 

DXtemp=34;//东西的红灯亮40秒

 

}

 

fenjieNB();//调用南北分解函数

 

fenjieDX();//调用东西分解函数

 

cc++;//判断亮灯的变量自加1

 

}

 

displayNB(NBshi,NBge);//调用NB红灯40秒的显示程序

 

displayDX(DXshi,DXge);//调用DX黄灯5秒的显示程序

 

}

 

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

 

{

 

DXY=1;//东西的黄灯不亮

 

DXG=1;//东西的绿灯不亮

 

DXR=0;//东西的红灯亮

 

NBY=1;//南北的黄灯不亮

 

NBG=1;//南北的绿灯不亮

 

NBR=0;//南北的红灯亮

 

displayNB(0,0);//南北数码管都显示0

 

displayDX(0,0);//东西数码管都显示0

 

cc=0;//重最开始显示

 

}

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

当前位置:首页 > 高中教育 > 英语

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

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