智能交通灯的设计方案Word文档下载推荐.docx
- 文档编号:19233828
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:25
- 大小:229.17KB
智能交通灯的设计方案Word文档下载推荐.docx
《智能交通灯的设计方案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《智能交通灯的设计方案Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
1.由单片机、按键、发光二极管、共阳数码管、三极管设计而成。
2.按键说明:
设置键、加键、减键、紧急模式键,单独一个按键为复位按键。
3..单片机型号:
STC89C52.
4.可以设置东西、南北的倒计时时间。
5.紧急模式:
当消防车、救护车等特殊车辆通行时按下;
紧急模式键:
全部亮红灯,待紧急车辆通过后,再恢复后再退出。
6.夜间模式:
4个方向黄灯闪烁。
7.可以按键设置交通灯东西、南北的倒计时时间,第一次按设置键是设置东西方向的时间,第二次按设置键是设置南北方向的时间,再按加减键就可以设置对应的时间。
8.设定的参数具有掉电保存,保存在STC单片机的部,上电无需重新设置。
9.东西和南北方向各有两个数码管分别显示时间、东西和南北的时间相差5秒,这5秒为黄灯闪烁的时间。
10.当有特殊情况时,可以按紧急模式进行调整。
11.第一次按紧急键4个方向全部亮红灯(禁止通行)
12.第2次东西南北4个方向黄灯闪烁(夜间模式)
13.第3次南北绿灯亮东西红灯亮(南北优先通行)
14.第4次南北红灯亮东西绿灯亮(东西优先通行)
15.再按一次回到正常显示,不同的模式适合不同的交通情况(如夜间模式,有交通事故的时候)
16.可以实现特种车辆优先通行或交通事故应急处理。
二系统硬件设计
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;
②器件的通用性或易选购性;
③软件编程的易实现性;
④系统其它功能及性能指标;
因此硬件设计至关重要。
现从各功能模块的实现逐个进行分析探讨。
(一)总体设计
本设计以单片机为控制核心,采用模块化设计,共分以下几个功能模块:
单片机控制系统、键盘及状态显示、倒计时模块等。
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。
它由单片机振荡电路、复位电路等组成。
系统采用双数码管倒计时计数功能,最大显示数字99。
友好的人机界面、灵活的控制方式、优化的物理结构是本设计的亮点。
(二)单片机的基本结构
AT89S52单片机是一款低功耗、低电压、高性能CMOS8位单片机,片含8KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEL公司的高密度,非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-51兼容,片的FLASH存储器允许在系统可改编程序或用常规的非易失性存储编程器来编程。
因此,AT89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域[1]。
AT89S52具有以下主要性能:
1.8KB可改编程序FLASH存储器;
2.全表态工作:
0~24HZ;
3.256X8字节部RAM;
4.32个外部双向输入,输出(I、O)口;
引脚说明如图2-2。
VCC:
电源电压。
图2单片机引脚图
(三)单片机外围电路设计
1复位电路设计
MCS-51的复位输入引脚RST为MCS-51提供了初始化的手段,可以使程序从指定处开始执行,在MCS-51的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则MCS-51循环复位,只有单RET由高电平变成低电平以后,MCS-51才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路。
图3复位电路图
2时钟电路设计
MCS-51的时钟可以由两种方式产生,一种是部方式,利用芯片部的振荡电路;
另外一种为外部方式,本论文根据实际需要和简便,采用部振荡方式,MCS-51部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶体或瓷谐振器一起构成了一个自激振荡器。
MCS-51虽然有部振荡电路,但要形成时钟,必须外接元件,所以实际构成的振荡时钟电路,外接晶振以及电容C1和C2构成了并联谐振电路接在放大器的反馈回路中,对接电容的值虽然没有严格的要求,但电容的大小会影响振荡频率的高低,振荡器的稳定性,起振的快速性和温度的稳定性。
晶振的频率可在1.2MHZ~12MHZ之间任选,电容C1和C2的典型值在20pf~100pf之间选择,由于本系统用到定时器,为了方便计算,采用了12MHZ的晶振,采用电容选择30pf。
图4时钟电路图
3显示模块电路设计
该模块由共阳LED数码管组成,利用数码管的动态扫描原理,由三极管进行锁存,当控制数码管的IO口P20和P21为低电平时(及三极管基极为低电平),则三极管导通,VCC通三极管给数码管供电,则数码管被点亮,利用数码管点亮的余辉和人眼的视觉暂留原理,则看起来数码管是同时被点亮的。
图5显示电路图
从设计完成的任务与要求来看,显示通行时间必须用二位数码管,从节省硬件资源的角度考虑,可采用扫描的方式来处理,对于7段数码管,占用7个单片机的I/O口,另外设置2个电子开关对2位显示进行配合,占用2个I/O端口,十字路口共需4组红绿灯,加上转换黄灯,一共是12只灯,须用12个端口进行控制,加上两个方向的紧急通行按钮,占2个I/O端口和一个蜂鸣器端口,因此实际占用的单片机I/O口为24个,为此,我们可以选用51系列单片机中的ATAT89S52来作为中央处理器。
这款单片机的I/O口作为输出时,具有较大的吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O口就可以直接驱动,能简化硬件电路的设计。
4单片机的硬件调试
第一步为目测,单片机应用系统电路全部手工焊接在洞洞板上,因此对每一个焊点都要进行仔细的检查。
检查它是否有虚焊、是否有毛剌等。
第二步为万用表测试,先用万用表复核目测中认为可疑的连线或接点,查看它们的通断状态是否与设计规定相符,再检查各种电源线与地线之间是否有短路现象。
第三步为加电检查。
当系统加电时,首先检查所有插座或器件引脚的电源端是否有符合要求的电压值,接地端电压值是否接近零,接固定电平的引脚端是否电平正确。
第四步是联机检查。
在对硬件电路调试过程中,还遇到了不少问题,第一次把所有的元件都焊上去后,都准备调试了,才发现正负电源的插针离得太近了,不容易接电源,本不该犯的错误,这些都是由于自己的粗心大意造成的,所以说,做任何事情都必需经过“三思而后行”,来不得半点的马虎,否则浪费了时间和精力
三交通信号灯控制系统的设计
交通信号灯由红灯、绿灯、黄灯组成。
红灯表示禁止通行,绿灯表示准许通行,黄灯表示警示。
交通信号灯分为机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。
交通信号灯用于道路平面交叉路口,通过对车辆、行人发出行进或停止的指令,使各同时到达的人、车交通流尽可能减少相互干扰,从而提高路口的通行能力,保障路口畅通和安全。
因此必须合理的设计路口主干道的系统。
(一)十字路口交通信号灯具体的控制要求
(1)交通信号灯分布于东南西北,每个路口均有三个。
南北方向绿灯和东西方向的绿灯不能同时亮;
如果同时亮,则应自动立即关闭信号灯系统,并立即发出报警信号。
系统工作后,首先南北红灯亮并维持30s;
与此同时,东西绿灯亮,并维持25s时间,到25s时,东西绿灯熄灭。
在东西绿灯熄灭时,东西黄灯亮并维持5s,然后东西黄灯熄灭,东西红灯亮,同时南北红灯熄灭,南北绿灯亮;
东西红灯亮并维持30s;
与此同时,南北绿灯亮并维持15s;
然后,南北绿灯熄灭南北绿灯熄灭时,南北黄灯亮维持5s后熄灭;
同时南北红灯亮,东西绿灯亮。
至此,结束一个工作循环,如下交通信号灯变化表:
交通信号灯变化表
东西
绿灯亮
黄灯亮
红灯亮
25S
5S
20S
南北
30S
15S
(2)在交通信号灯亮和闪烁的同时,路口设有两位七段码的显示器倒数计时,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。
以便于司机和行人能够在有限的时间准确的通行。
(二)十字路口交通信号灯示意图
交通信号灯共有12盏,每个路口各有红,黄,绿三盏,具体分布如下图所示:
四交通信号灯控制系统程序编制
(一)软件设计流程
软件总体设计主要完成各部分的软件控制和协调。
本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对
键盘进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。
交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;
通过定时也可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间。
其流程图如图所示。
图4-1主程序框图
(二)交通灯定时器模块
AT89S52单片机部有3个定时器T0,T1和T2,本次设计中使用T0工作在方式1,即16位定时器,定时50ms,20次中断产生秒信号,从而控制红绿灯的点亮时间。
工作方式寄存器TMOD用来设置T0、T1的工作方式。
这次实习中设置TMOD=0x01,即T0工作于方式0(16位定时器)。
部定时器/计数器用作定时器时,是对机器周期计数,每个机器周期的长度是12个振荡周期。
定时常数的设置可用一下方式计算:
机器周期=12/12MHz=1us
(65536-定时常数)*1.0us=50ms
所以定时常数是50000。
五结论
本论文介绍了一种基于AT89S52单片机的交通灯的设计方法,本论文完成了系统的硬件设计与制作,详细介绍了系统硬件设计的过程,并结合软件系统完成了整个系统的软、硬件联调,系统工作良好,实现了基本功能。
通过本次设计,巩固了我学习过的专业知识,也使我把理论与实践从真正意义上相结合了起来,锻炼了借助互联网络搜集、查阅相关文献资料和组织材料的综合能力,从中我也认识到自己的不足之处,我会在日后的学习中加以改进与提高。
经过这次课程设计,我在各方面都有很大的提高。
学到了很多不曾学过的东西,也使我学会了更好地利用一些资源和工具如图书馆及一些软件查阅资料。
在设计过程中也遇到很多的困难,遇到一些原理性不懂的时候就要去有针对性地查找资料或者请教知道老师和其他同学,然后加以吸收利用,提高了自己的应用能力,扩充了自己的知识储备,同时提高了动手能力。
参考文献
[1]勇.数字电路[M].电子工业.2004
[2]子文.单片机原理及应用[M].电子科技大学.2006
[3]华东.单片机原理与应用(第2版)[M].电子工业.2006.8
[4]胡汉才.单片机原理及其接口技术[M].清华大学,2006.
[5]精虎.电路设计与制版Protel99入门与提高[M].人民邮电,2004.
[6]风强,兰婵丽.单片机语言C51应用实战集锦[M].电子工业.,2001.
[7]顾曙敏.单片机与串行时钟DS1307的接口设计[J].现代电子技术,2003,26(14)85-87.
[8]晓燕.基于8051单片机的交通灯控制系统设计与模拟[J].职业技术学院学报,2007年03期.
[9]毅,许飞,王学飞.基于单片机的交通灯智能控制系统[J].中国高新技术企业,2009年第15期.
附件一:
总体原理图
附件二:
源程序代码
#include<
reg52.h>
//调用单片机头文件
#defineucharunsignedchar//宏定义"
uchar"
代替"
unsignedchar"
。
#defineuintunsignedint//宏定义"
uint"
用来定义无符号整型数。
#include"
eeprom52.h"
//数码管段选定义0123456789
ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
//ABCDEF不显示
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
//断码
uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
ucharsmg_i=4;
//显示数码管的个位数
//数码管位选定义
sbitsmg_we1=P2^0;
//数码管位选定义
sbitsmg_we2=P2^1;
sbitsmg_we3=P3^6;
sbitsmg_we4=P3^7;
chardx_s=0;
//东西南北倒计时变量
sbitdx_red=P2^4;
//东西红灯
sbitdx_green=P2^3;
//东西绿灯
sbitdx_yellow=P2^2;
//东西黄灯
sbitnb_red=P2^7;
//南北红灯
sbitnb_green=P2^6;
//南北绿灯
sbitnb_yellow=P2^5;
//南北黄灯
ucharflag_jtd_mode;
//交通灯的模式根据时间
bitflag_1s=0;
bitflag_500ms;
bitflag_dx_nb;
//东西南北模式
ucharflag_5m_value;
uchari;
ucharflag_alarm;
//模式
uchardx_time=30,nb_time=20;
//东西、南北的时间
ucharflag_jdgz;
//交通管制
/***********************数码位选函数*****************************/
voidsmg_we_switch(uchari)
{
switch(i)
{
case0:
smg_we1=0;
smg_we2=1;
smg_we3=1;
smg_we4=1;
break;
case1:
smg_we1=1;
smg_we2=0;
case2:
smg_we3=0;
case3:
smg_we4=0;
}
}
/******************把数据保存到单片机部eeprom中******************/
voidwrite_eeprom()
SectorErase(0x2000);
byte_write(0x2000,dx_time);
byte_write(0x2001,nb_time);
byte_write(0x2058,a_a);
/******************把数据从单片机部eeprom中读出来*****************/
voidread_eeprom()
dx_time=byte_read(0x2000);
nb_time=byte_read(0x2001);
a_a=byte_read(0x2058);
/**************开机自检eeprom初始化*****************/
voidinit_eeprom()///开机自检eeprom初始化
read_eeprom();
//先读
if(a_a!
=1)//新的单片机初始单片机问eeprom
a_a=1;
dx_time=30;
nb_time=20;
write_eeprom();
//保存数据
/********************************************************************
*名称:
delay_1ms()
*功能:
延时1ms函数
*输入:
q
*输出:
无
***********************************************************************/
voiddelay_1ms(uintq)
uinti,j;
for(i=0;
i<
q;
i++)
for(j=0;
j<
110;
j++);
display()
数码管显示
voiddisplay()
uchari;
smg_i;
{
P0=0xff;
//消隐
smg_we_switch(i);
//位选
P0=dis_smg[i];
//段选
delay_1ms(3);
}
/*********************定时器0、定时器1初始化******************/
voidtime0_init()
EA=1;
//开总中断
TMOD=0X11;
//定时器0、定时器1工作方式1
ET0=1;
//开定时器0中断
TR0=1;
//允许定时器0定时
//ET1=1;
//开定时器1中断
//TR1=1;
//允许定时器1定时
/*********************交通灯处理函数*********************************/
voidjiaotongdeng_dis()
if(flag_1s==1)
flag_1s=0;
if(dx_s==0)
{
if(flag_dx_nb==1)
dx_s=nb_time;
//南北时间
else
dx_s=dx_time;
//东西时间
flag_dx_nb=~flag_dx_nb;
}
dx_s--;
dis_smg[0]=smg_du[dx_s%10];
dis_smg[1]=smg_du[dx_s/10];
dis_smg[2]=smg_du[dx_s%10];
dis_smg[3]=smg_du[dx_s/10];
/***********************南北时间*********************************/
if(flag_dx_nb==0)
if(dx_s>
5)
{
dx_red=1;
//灭
dx_green=0;
//亮
dx_yellow=1;
//灭
nb_red=0;
//亮
nb_green=1;
nb_yellow=1;
flag_5m_value=0;
}elseif(dx_s<
=5)//当小于5秒时黄灯要闪了
dx_green=1;
if(flag_500ms==0)
{
dx_yellow=0;
//亮
}
else
dx_yellow=1;
//灭
}
/***********************东西时间*********************************/
if(flag_dx_nb==1)
dx_red=0;
nb_red=1;
nb_green=0;
if(flag_500ms==0)//黄灯闪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 交通灯 设计方案