课程设计基于51单片机的交通灯设计文档格式.docx
- 文档编号:18760073
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:14
- 大小:180.60KB
课程设计基于51单片机的交通灯设计文档格式.docx
《课程设计基于51单片机的交通灯设计文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计基于51单片机的交通灯设计文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
关键字:
AT89C51控制系统;
实时采集;
智能化控制
Abstract
Aspeople'
ssocialactivitieshavebecomeincreasinglyfrequent,thepositionoftrafficishigherandhigherinpeople'
sdailylife,whilethetraditionaltrafficlighthasmanydefects,itsmaintenancecannotmeettherapiddevelopmentofcitytrafficdemand,sotheresearchofthetrafficlightsisnecessaryonarationaltheoryandpractice.
ThispaperintroducesatrafficsignalcontrolsystembasedonAT89C51microcontrollerwhichdetailedlydescribedtheuseofAT89C51'
shardwareconnection,softwareprogrammingandsystemflow,thecircuitofkeypartswerealsointroducedinthispaper.Thesystemusesadelaycircuit,SCMbuttonresetcircuitandclockcircuitdesignedthecrossroadstrafficlightcontrollereasily.
Thesimulationresultsshowthat,exceptthatthesystemcanshowthevariousstatesofthetrafficlights,completethecountdownfunction,italsocancollecttrafficdata,calculationandintelligentcontrol.Comparedwithtraditionaltrafficlightithasmorestrongpracticability,moresimpleoperation,expansionandstrongeradvantages,ithasobviouseffecttoeasetrafficflow,toimprovethetrafficcapacityoftheroad.
Keywords:
AT89C51controlsystemreal-timeintelligentcontrol
1引言
随着生活水平的逐渐提高,汽车进入家庭的步伐也加快了,城市汽车数量的增多,使得城市道路交通问题越来越重要。
交通信号灯的出现,使得交通得以有效管制,一旦某个路口的交通灯出现故障,就可能会导致严重的交通事故。
原来的交通灯信号控制大都采用继电器实现,存在很多缺陷,功能单一和维护量大使它远远不能满足目前的需求,因此对交通灯的研究是很有理论与实践的必要性的。
本文介绍了基于AT89C51单片机的交通信号灯的工作原理和设计方法。
该交通信号灯由单片机控制电路,显示电路和辅助电路构成,利用12MHz晶振提供时钟,可用按键调节当前车流量以控制下一个绿灯时长,并在LED上显示倒计时。
提高了分析、设计电路和软硬件开发的能力。
2设计方案及原理
2.1交通灯设计方案
本文是采用了以AT89C51单片机为核心的控制方案。
方案中通过遮光式的红外传感器来检测东西方向和南北方向的车流量大小,再经过一定的简单算法算出各方向上的红绿灯时间并在数码管显示器上显示倒计时,同时通过路口上的红绿灯的点亮与熄灭控制车辆的通行与停止。
另外,方案中还设计一个紧急车辆通行按键,每当有紧急车辆需要通过时,操作员按下按键,东西方向和南北方向上均为红灯,并发出警报禁止普通车辆的通行,先让紧急车辆通过。
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
2.2交通灯设计原理框图
图1交通灯基本原理框图
3硬件设计
本系统利用AT89C51单片机作为系统的核心控制部件,利用其定时器/计数器作为红外传感器的接收端,通过高低电平的变化来统计通过检测区域的车流量,并根据车流量数值的大小,经过一系列科学的算法来控制下一个绿灯的时长,减少了不必要的等待时间,也为车流量大的时候顺利通行提供方便。
待确定计时时长后,通过软件计时来控制接在P0端口的红绿灯的点亮与熄灭状态,并在8段共阴极数码管显示器(接在P1和P2端口)上显示倒计时。
系统的电路图主要由电源电路、复位电路、车流量检测电路、红绿灯显示电路、红绿灯时间倒计时电路以及紧急按键K1电路等电路组成。
系统原理图如图2所示:
图2系统原理图
3.1紧急开关电路
本文中的交通灯与传统交通灯比较,其特点之一就是紧急车辆通过功能。
当交通较为拥挤的时候,警车、救护车、消防车之类的紧急车辆很难顺利通行,而这很可能会造成某些重大生命财产的损失。
本文所设计的交通灯为改善此类状况特地添加了紧急车辆通过功能。
当有紧急车辆通过时,操作员可以闭合紧急开关K1,K1接在单片机的P3.1端口上,这样就产生了一个高电平。
而单片机通过软件程序检测到P3.1口为高电平后,再通过软件调用一段子程序,使东西和南北方向都为红灯,并接通蜂鸣器警告普通车辆禁止通行并靠边让出道路,先让紧急车辆通过。
待紧急车辆通过后,打开紧急开关,交通控制系统会恢复中断前的现场。
其电路原理图如图3所示:
图3紧急按键电路原理图
3.2红绿灯显示电路
交通灯最基本的功能是三种颜色灯的显示,每个路口均需红、黄、绿灯各一盏,东、西道上的两组同色灯蝉联在一起,南、北道的两组同色也彼此互联。
这6盏灯分别接在单片机的P0.0-P0.5口,如图4所示。
D1、D2、D3分别代表的是东西方向的绿、黄、红灯;
N1、N2、N3分别代表的是南北方向的绿、黄、红灯。
当东西方向为绿灯时,P0.0口输出低电平,绿灯D1点亮;
对应地,P0.6口也输出低电平,南北方向的红灯N3点亮。
当东西方向为红灯时,P0.2口输出低电平,红灯D3点亮;
对应地,P0.3口也输出低电平,南北方向的绿灯N1点亮。
而当东西方向和南北方向均为黄灯时,黄灯会以2HZ的频率闪烁(通过软件来实现的),提醒车辆的驾驶员注意红绿灯的转换。
红绿灯与单片机的接线图如图4所示:
图4红绿灯接线图
3.3倒计时显示电路
本文使用共阴极的7段数码管作为显示设备。
数码管常用的显示方法有动态显示和静态显示两种,此处以静态显示的方法显示。
各个路口上两个数码管,一个显示十位,一个显示个位。
时间的倒计时是通过软件来实行的。
倒计时显示电路连接图如图5:
图5显示电路
3.4振荡电路
AT89C51的XTAL1和XTAL2引脚分别为单极片内反相放大器的输入/输出端,其频率范围为1.2~12MHz。
XTAL2又是内部时钟发生器的输入端,这个内部反相器可与外部元件组成皮尔斯(Pierce)振荡器。
可用石晶振荡和陶瓷振荡,当采用石英晶体振荡器时,C=(30±
10)pF;
当采用陶瓷谐振振荡器时,C=(40±
10)pF[1]。
振荡器电路如图6所示:
图6晶体振荡器电路
3.5复位电路
本文中的单片机采用了外接的复位电路,并且采用了一种上电复位和手动复位的组合。
自动上电复位电路保证在上电开机时对89C51单片机进行正确的复位,手动复位可在上电复位基础上并接一个复位开关,这样既保证上电复位,又可手动复位。
单片机复位后,内部特殊功能寄存器复位后的状态为确定值。
复位后,PC=00H,这表明程序从0000H地址单元开始执行。
PSW=00H,表明选寄存器0组为工作寄存器组。
P0至P3=FFH,表明已向各端口写入1。
此时,各端口既可用于输入又可用于输出。
IE=0**00000B,表明各个中断均被关断。
复位电路图如图7所示:
图7复位电路
3.6车流量检测电路
本文用两个按键开关来模仿红外传感器检测车流量,K3为东西方向的红外传感器,K4为南北方向的红外传感器。
其连接电路如图8所示:
图8车流量检测电路
4软件设计
4.1程序流程图
本系统的程序就是用的c语言来编译的,下面是系统的主程序流程图:
图9程序流程图
4.2程序设计
程序见附录1。
5系统仿真
本系统的仿真实现主要用到了两个软件:
Proteus和Keil。
其中Proteus主要用来画电路图和仿真;
Keil主要用来编译调试,并把运行出来的*.C程序文件转化为*.HEX文件,以便于在Proteus仿真时将其导入单片机运行。
如图9是交通灯控制系统的仿真电路,当单片机上电复位时,东西方向的绿灯点亮,初始时间为60s;
相应的是南北方向的红灯点亮。
需要注意的是:
(1)软件Proteus中没有系统中所使用到的反射式红外光电传感器,所以在电路图中使用两个按钮开关BUTTON代替,来模仿车辆经过红外传感器检测区时产生的高低电平变化。
(2)LED灯D1、D2、D3分别代表的是东西方向的绿、黄、红灯;
(3)仿真中使用的数码管为7段码共阴数码管。
图10仿真结果
6总结
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计C语言的掌握方面都能向前迈了一大步。
本次课程设计的过程是艰辛的,不过收获却是很大的。
本次课程设计用到了许多单片机上所学的知识,使书本上所学的知识得到了实际应用,同时也发现了很多自己的不足之处。
经过多次查阅相关书籍和资料,一些自己不是很有把握的地方得到了补充,不仅完成了课程设计的任务,更增长了自己的知识面,填补了很多知识的空白之处,使我又有了新的长进,学到了新的知识。
通过本次的课程设计,使我学到了很多新的知识,经历了将理论转化为实践的过程,知道了如何让将所学的理论知识转化为生活中所常见的东西,所学知识得到了充分应用。
大学的课堂是给我们学习专业知识的,而我们更应该把自己所学到的书面知识应用到生活中去。
课程设计给了我们这样一个化理论为实践的机会,自己独立的完成这么一个任务,看起来很难,但当你深入到这个过程中去时,每一点点的成功都会让自己欣喜若狂,这是一个享受成功的过程,也是一个良好的学习机会。
当然,也遇到了很多困难,让我认识到了很多不足,我会在以后的学习生活当中不断磨练自己、完善自己,为自己以后的职业生活储备更多的知识,做一个生活的强者。
参考文献:
[1]韩克.柳秀山.冯明库.薛迎霄.电子技能与EDA技术[M],第1版,曁南大学,2004.12.
[2]江晓安.董秀峰.模拟电子技术[M],第2版,西安电子科技大学出版社,2005.1.
[3]清华大学电子学教研组.余孟尝.数字电子技术基础简明教程[M],第2版,高等教育出版社,2005.5.
[4]谭浩强.C程序设计[M],第3版,清华大学出版社,2005.7.
[5]周润景.袁伟亭.景晓松.Proteus在MCS-51和ARM7A系统中的应用百例[M],第1版,电子工业出版社,2006.10.
[6]王思明.张金敏.苟军年.张鑫.杨乔礼.单片机原理及应用系统设计[M],第1版,科学出版社,2012.9.
附录1
#include<
reg51.h>
#include<
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharshi,ge;
uintdx_cll,nb_cll,cll,i;
sbitjinji=P3^1;
sbitbaojing=P3^0;
voiddelay(uintz)//延时子程序4ms
{
uintx,y;
for(x=500;
x>
0;
x--)//循环500次
for(y=z;
y>
y--);
}
voiddisplay(ucharshi,ucharge,ucharx)//数码管显示子程序
P2=table[ge];
//显示个位
delay(x);
//调用延时程序
P1=table[shi];
//显示十位
voidtimer(ucharx,uchary)//显示倒计时程序
shi=x/10;
ge=x%10;
display(shi,ge,y);
uintsuanfa(intm)//车流量算法
uintx,y,z;
x=TL0|(TH1<
<
8);
y=TL1|(TH1<
if(x<
=5&
&
y<
=5)
return(20);
elseif((5<
x&
x<
60)||(5<
y&
45))
{
if(m==0)
return(x);
elseif(m==1)
return(y);
else
return(20);
}
elseif(x>
=60&
=45)
x=x-60;
y=y-45;
z=x-y;
x=x+60;
if(x>
90)
x=90;
if(y>
y=90;
voidjishuqi()
TMOD=0x55;
//初始化定时器/计数器T0、T1为计数模式,工作于方式1,二进制计数
TH0=0x00;
TL0=0x00;
//TH0,TL0清零
TH1=0x00;
TL1=0x00;
//TH1,TL1清零
TR0=1;
//启动T0计数
TR1=1;
//启动T1计数
EA=1;
//允许中断
voidint0()//紧急车辆通过程序
while(jinji==1)
P0=0xdb;
baojing=1;
P2=table[0];
P1=table[0];
baojing=0;
voidmain()
P3=0x00;
//P3口清零
dx_cll=60;
//给东西方向绿灯时间赋初值60s
while
(1)
jishuqi();
//计数器启动计数
for(;
dx_cll>
3;
dx_cll--)//东西方向绿灯倒计时,直至4s
{
P0=0xde;
//东西方向绿灯和南北方向红灯亮
timer(dx_cll,100);
//延时0.5s
while(jinji==1)//检测P3.1口是否为高电平
int0();
}
for(i=3;
i>
i--)//黄灯倒计时3s
while(jinji==1);
//检测P3.1口是否为高电平
int0()
P0=0xed;
timer(i,50);
P0=0xff;
//黄灯闪烁点亮
TR0=0;
TR1=0;
//计数器停止计数
i=1;
nb_cll=suanfa(i);
//算出南北方向绿灯的时间
nb_cll>
nb_cll--)//南北方向绿灯倒计时,直至4s
P0=0xf3;
//南北方向绿灯和南北方向红灯亮
timer(nb_cll,100);
while(jinji==1)//检测P3.1口是否为高电平
i=0;
dx_cll=suanfa(i);
//算出东西方向绿灯的时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 51 单片机 交通灯 设计