基于STC90C51单片机的智能交通灯设计Word文档格式.docx
- 文档编号:15168065
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:28
- 大小:204.68KB
基于STC90C51单片机的智能交通灯设计Word文档格式.docx
《基于STC90C51单片机的智能交通灯设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于STC90C51单片机的智能交通灯设计Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
(1)普通模式:
状态一:
宝田路通行阶段(宝田路及其人行道亮绿灯30秒、前进路及其人行道亮红灯30秒);
状态二:
黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯5秒);
状态三:
前进路通行阶段(前进路及其人行道亮绿灯30秒、宝田路及其人行道亮红灯30秒);
状态四:
返回到状态一。
(2)高峰期模式(设宝田路为主干道):
按下按键2(key2),开启高峰期模式;
宝田路通行阶段(宝田路及其人行道亮绿灯60秒、前进路及其人行道亮红灯30秒);
返回到状态一;
按键2释放,回到普通模式。
(3)紧急模式:
按下按键1(key1),开启紧急模式,所有道路及其人行道均红灯亮,数码管不显示。
释放按键1,回到普通模式。
3.2?
单片机交通控制系统的功能要求?
本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整功能和紧急情况全面禁行。
(1)倒计时显示?
倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。
驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。
倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的一种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择?
。
(2)时间的设置?
本设计中对时间进行了人为控制设置,正常情况下宝田路和前进路的绿灯通行与红灯禁行时间均设置为30秒、黄灯等待时间设置为5秒。
假设前进路为主干道,考虑到主干道在上下班高峰期车流量和人流量较大,人为增加开关K2。
当K2开启时,主干道前进路上绿灯通行时间和宝田路上的红灯禁行时间更改为60秒,其余设置均不变;
当K1关闭时,又恢复正常情况下的时间设置。
(3)紧急情况全面禁行
本设计中在紧急情况下增加了全面禁行状态,增加开关K1。
当K1开启时,宝田路和前进路及其各自人行道均量红灯禁行;
当K1关闭时,交通灯恢复正常状态。
4、详细设计—硬件设计
为了实现本设计要求的具体功能,选用STC90C51单片机及外围器件构成最小控制系统,10个发光二极管分别分成两组红黄绿和两组红绿灯构成信号灯指示模块,4个LED动态数码管构成各个方向倒计时显示模式,两个按键分别用来设置高峰期模式和紧急模式。
4.1、单片机系统设计
单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。
HC6800S整体结构视图:
STC90C51内部结构图:
STC90C51芯片引脚图:
4.2、LED数码管显示屏设计
LED动态数码管的显示原理为:
2位8段数码管电路采用“共阳”连接驱动代码,如右图所示。
段码和位码,段码即段选信号SEG,它负责数码管显示的内容,图中a~g、dp组成的数据(a为最低位,dp为最高位)就是段码。
位码即位选信号DIG,它决定哪个数码管工作,哪个数码管不工作。
LED数码管显示代码表如下表所示:
显示数值
dp,g,f,e,d,c,b,a
代码
01111111
0x3f
1
00000110
0x06
2
01011011
0x5b
3
01001111
0x4f
4
01100110
0x66
5
01101101
0x6d
6
01111101
0x7d
7
00001101
0x07
8
0x7f
9
01101111
0x6f
HC6800S开发板中动态数码管模块原理图如下图所示:
4.3、交通灯设计
HC6800S开发板中交通灯模块原理图如下图所示,宝田路红黄绿灯及其人行道上的红绿灯和前进路上的红黄绿灯由JP1控制,前进路人行道上的红绿灯由J22控制。
5、详细设计—软件设计
5.1、软件开发工具和环境
keilC51μVision6.12
5.2、软件总体设计
5.2.1总体结构流程图如下
NYYN
NYYN
5.2.2子结构软件设计
(1)普通模式
程序流程简图如下:
程序源代码如下:
while
(1){
if(S==71)
S=0;
/*宝田路通行,宝田路绿灯亮30秒*/
if(S<
31){
Data[0]=0x00;
Data[1]=0x00;
Data[2]=duan[(30-S)/10];
Data[3]=duan[(30-S)%10];
Data[4]=0x00;
Data[5]=0x00;
Data[6]=Data[2];
Data[7]=Data[3];
Display();
led=0xFF;
//将所有的灯都熄灭
RED00=1;
GREEN00=1;
GREEN10=0;
//宝田路人行道绿灯亮
GREEN11=0;
//宝田路绿灯亮
RED00=0;
//前进路人行道红灯亮
RED01=0;
//前进路红灯亮
}
/*黄灯阶段,5秒*/
elseif(S<
36){
Data[0]=0x00;
Data[2]=duan[(35-S)/10];
Data[3]=duan[(35-S)%10];
RED10=0;
//宝田路人行道红灯亮
YELLOW11=0;
//宝田路黄灯亮
YELLOW01=0;
//前进路黄灯亮
}
/*前进路通行,前进路绿灯亮30秒*/
66){
Data[2]=duan[(65-S)/10];
Data[3]=duan[(65-S)%10];
RED11=0;
GREEN00=0;
GREEN01=0;
/*黄灯阶段,5秒*/
else{
Data[2]=duan[(70-S)/10];
Data[3]=duan[(70-S)%10];
}}
(2)按键检测流程图如下:
N
Y
所需延时子函数源代码如下:
voiddelayms(){//延时子函数,延时约10ms
uinta,b;
for(a=10;
a>
0;
a--)
for(b=110;
b>
b--);
(3)紧急模式
N
/*按下按键1,开启紧急模式,所有红灯亮,数码管不显示*/
if(key1==0){
delayms();
//去抖延时
Data[2]=0x00;
Data[3]=0x00;
Data[6]=0x00;
Data[7]=0x00;
led=0xFF;
while(!
key1);
//按键1释放
keyscan();
(4)高峰模式
/*按下按键2,开启上下班高峰期模式,主干道宝田路绿灯时间为60秒*/
voidkeyscan(){
if(key2==0){
delayms();
//去抖延时
if(key2==0){
while
(1){
if(key2!
=0)break;
//当按键2释放,跳出循环
if(M==101)
M=0;
if(M<
61){
Data[2]=duan[(60-M)/10];
Data[3]=duan[(60-M)%10];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC90C51 单片机 智能 交通灯 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)