交通灯控制系统Word格式.docx
《交通灯控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
AT89S52;
数码管;
光敏电阻器
Abstract
ThistopicmainlyintroducesthetrafficlightcontrolsystembasedonAT89S52.Thedesignconsistsoftwoparts,hardwareandsoftware.Thehardwarepartbysinglechipmicrocomputerminimumsystemmodule,redyellowgreendisplaymoduleatnight.SoftwareismainlywritteninClanguage,throughdigitaltubedisplaytheredlight,yellowlight,greenlighttimingtime.
Duringthedayandnightmodeinthedesignoftheexchange.joinedthephotosensitiveresistorincontrolcircuit,usingphotosensitiveresistanceoftheincidentlightintensity,resistancedecreased;
Thecharacteristicsofincidentlightisweak,theresistanceincrease.Makesthecontrolcircuitofphotosensitiveresistancewithchangeofthelightintensityandchangesitsresistance,inordertocontrolpatternofalternatingpatternduringthedayandnight.
Keywords:
Trafficlights;
AT89S52;
Digitaltube;
Photosensitiveresistor
1绪论
单片微型计算机,简称单片机,是将微处理器、存储器和输入输出接口电路集成在一块集成芯片上。
自20世纪70年代问世以来,单片机以其极高的性价比,受到人们的重视。
更是因其具有体积小、重量轻、抗干扰能力强、工作环境要求不高、价格低廉、可靠性高、开发较为容易等一系列优点,使其广泛应用于智能生产和工业自动化上。
1.1交通灯控制系统的简介
本次的课题设计,就是通过利用AT89S52单片机来设计模拟交通灯的控制系统,利用C语言进行程序的编写,控制交通灯的亮灭:
在白天时,接通电源后,红灯、黄灯、绿灯有序的进行一定时间的亮暗,其亮暗的时间由数码管显示,由C语言所编写的程序控制,以此引导车辆的通行;
其次,在夜间到来时,由于车辆较少,所以交通灯控制系统进入夜间的工作模式,红灯和绿灯熄灭,黄灯亮灭亮灭的闪烁状态,且数码管显示数字为00。
在本次设计中,为了方便模拟白天与夜晚的显示情况,在控制电路中使用了光敏电阻器,利用了光敏电阻的入射光强,电阻减小;
1.2交通灯系统的发展现状及趋势
随着社会经济的发展,城市交通问题越来越被人们的所关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
所以,如何采用合适的控制方法,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
1.3交通灯系统的研究意义
随着科技的不断进步,信息化程度的不断提高,人们生活发生翻天覆地的变化,对于代步工具的要求也是随之攀升。
路上的车流量不断的增加。
交通灯系统控制着道路上车子的通行,在传统的交通灯控制系统中,白天工作之后,夜间的工作须用人工来进行操作,而不能自动的进入夜间的工作模式。
而在本设计中,利用光敏电阻器的特性控制电路的工作,从而达到智能判别白天和黑夜的目的。
2交通灯系统的硬件电路设计
2.1系统的构成
本次课题设计中,主要是由单片机最小系统、数码管显示模块和红黄绿灯显示模块组成。
在本设计中,数码管的显示时间反应了其相应红黄绿灯的亮灭时间,其次,在夜间显示模块时,数码管显示00,系统结构框图如2-1所示:
图2-1:
整体的系统框图
2.2复位电路
单片机中的复位电路如图2-2所示:
图2-2:
上电复位电路
在单片机中,复位电路有两种方式:
上电自动复位和按钮复位。
在本次设计中,采用的是上电自动复位方式。
其工作原理就是通过外部复位电路给电容C3充电加至RST引脚一个短的高电平信号,此信号随着Vcc对电容C3的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C3的充电时间。
2.3时钟电路
单片机时钟电路如图2-3所示:
图2-3:
时钟电路
AT89C51芯片中的引脚XTAL1和XTAL2是芯片内部震荡电路的输入端和输出端,这两个引脚连接石英晶体和微调电容,构成一个稳定的自激振荡器。
因此,在本设计中XTAL1,XTAL2的引脚上外接石英晶体和电容,构成一自激振荡电路。
构成晶体可以在1.2~12MHz之间任选,电容可以在20~60pF之间选择,其中,电容的大小会影响振荡器频率的高低以及振荡器的稳定性。
在本设计中选用的电容为33pF,晶振为12MHz。
2.4白天工作模式设计
在白天工作模式中,交通灯系统的工作状态是:
在接通电源后,南北方向的红灯亮,东西方向的绿灯亮,同时数码管开始进行倒计时显示,时间为30秒;
30秒时间结束后,南北、东西方向的黄灯开始1秒间隔的进行亮灭,呈闪烁状,时间持续5秒;
之后,南北方向的绿灯亮,东西方向的红灯亮,这样的循环下去。
其中,交通灯的分布情况如图2-4所示:
图2-4:
交通灯的分布情况
在此电路中,红黄绿三灯使用的是LED发光二极管,在普通的发光二极管内注入不同的稀有气体,接通点亮后,从外观看上去就是不同颜色的光。
2.5夜间模式设计
本次课题设计中,夜间模式是为了模拟在夜间时的交通状态,由于夜晚车辆较少,深夜甚至无车通行,所以在夜间时交通灯控制系统的工作状态状态也与白天的工作状态有所不同。
进入夜间工作模式后,所有的灯的工作状态是相同,以此达到闪烁的效果,同时LED数码管的显示时间为00。
利用白天与黑夜光强弱的变换,使得交通灯控制系统能够完成白天与黑夜的工作状态的转变,电路如图2-5所示:
图2-5:
模式转换电路
在本次设计中,为了模拟智能判别白天与黑夜,利用光敏电阻进行控制。
此电路中,运用了电压比较器进行电压的输出。
R14与R16的阻值不变,因此,两个电阻之间的电位不会发生改变,而光敏电阻器LDR随着光照强度的改变,其电阻值也随着改变,即LDR1与R15之间的电位变化。
在此电路中,利用LM358N组成一个电压比较器,即LM358N中3脚电位高于2脚电位,输出高电平;
若3脚电位低于2脚电位,输出低电位。
而电路中,光敏电阻器是由半导体的光电效应制成的电阻,其电阻值是随着入射光的强弱的改变而改变的,所以光敏电阻器又被称为光电导探测器,在本设计中采用的是负温度系数的光敏电阻器,即入射光强,电阻值减小,入射光弱,电阻值增大。
2.6数码管显示部分设计
本次的课题设计是交通灯控制系统。
其设计目的就是利用三种颜色的灯,模拟道路的交通状况,以便能提高十字路口交通灯的工作效率和保持道路的畅通。
因为十字路口分为两个干道,一个为主干道,一个为次干道,在每个干道的两侧,每侧都有红黄绿三色的灯。
其中,红灯亮的时候,代表的是车辆禁止通行;
黄灯亮的时候,代表的是车辆等待;
绿灯亮的时候,代表的是车辆可以通行。
在本次课题设计时,要保证主干道、次干道两侧分别显示相同颜色的灯,而显示灯亮的时间,则由数码管进行显示。
在这里,由数码管来提示各个颜色灯所亮的时间,不过,这里采用的是倒计时,各个灯亮的时间由C语言所编写的程序进行控制。
2.6.1LED数码管
LED数码管是由发光二极管作为显示字段的数码型显示器件。
图2-6:
LED数码管
a)外形和引脚b)共阴极结构c)共阳极结构
LED数码管因电路的连接方式不同分为共阴极型和共阳极型两种。
其中,共阴极型数码管就是将各段发光二极管的负极连接在一起,作为公共端并接地,其余各段接控制端,其余段的某段接高电平时发光,接低电平时不发光,控制某几个笔段发光情况,以此显示数字,如图2-6b所示。
共阳极型数码管就是将各段发光二极管的正极连接在一起,作为公共端,某笔段接低电平时发光,高电平时不发光,如图2-6c所示。
2.6.2数码管显示原理
在此电路当中,选用的是共阴极LED数码管,其中定义数码管显示时,运用了LED数码管的编码方式,其中按小数点的是否计算在内可分为七段码和八段码;
按公共端的连接方式可分为共阴字段码和共阳字段码,其中,计小数点的共阴字段码和共阳字段码互为反码。
而在电路中的数码管,则选用的是,其编码方式为共阳极段码,0——9段选码为:
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90。
所用数码管如图2-7所示:
图2-7:
数码管
数码管的显示有分为静态显示和动态显示。
静态显示就是无论有多少个数码管都在同一时间点亮;
动态显示就是无论在任何时刻只有一个数码管处于点亮状态,即单片机采用“扫描”方式控制着数码管的点亮。
本次设计中数码管显示主要采用动态显示方式。
其中,动态显示就是将所有位数码的段选线并联在一起,由位选线控制哪个数码管有效从而显示。
而在此设计中,利用单片机中的P3.0和P3.1对数码管进行位选控制。
两位同时显示是利用发光二极管的余辉和人眼的视觉暂留作用,使人视觉感到各位同时显示。
3交通灯系统的软件部分设计
本设计主要是以AT89C51为核心的交通灯系统设计。
其中,数码管显示模块主要是显示红黄绿灯亮起的时间,而红灯、黄灯和绿灯的亮暗则指引人们有序的通行;
夜间模式后,则只有黄灯呈亮灭亮灭状态,且数码管显示00。
3.1设计的总流程图
系统程序设计的总流程框图如3-1所示:
图3-1:
总流程框图
本设计中,在白天时,交通灯处于正常的工作状态,接通电源后,先是南北方向的红灯亮,相应的东西方向的则是绿灯亮,在亮起30秒后,东西南北方向都进入黄灯亮灭亮灭的闪烁状态,在持续5秒的时间以后,东西方向的红灯亮,而南北方向的则是绿灯亮。
在进入夜间以后,电路进入夜间工作模式,红灯和绿灯都处于不亮的状态,只有黄灯处于亮灭亮灭的闪烁状态。
而白天模式与夜间模式的转换,则是利用了光敏电阻的特性,入射光强,则电阻值小;
入射光弱,则电阻值大,以此来控制两种状态的转换。
3.2白天模式程序的设计
白天工作模式的工作流程框图如图3-2所示:
图3-2:
白天工作模式的流程图
在白天时,道路上的车流量增大,交通灯系统处于白天工作模式,接通电源后,首先是南北方向的红灯亮,相应的东西方向的则是绿灯亮,即南北方向的车辆禁止通行,东西方向的车辆允许通行;
而在亮起30秒后,东西南北方向都进入黄灯亮灭亮灭的闪烁状态,两个道路的车辆都禁止通行;
在持续5秒的时间之后,东西方向的红灯亮,而南北方向的则是绿灯亮,即东西方向的车辆禁止通行,南北方向的车辆允许通行。
在程序设计中,利用了while语句对工作模式流程进行了选择,即while(guangqiang==0)
时,此时程序执行白天工作模式的流程。
其中,在宏定义时,已对各端口的控制进行了定义:
VD10指代的是东西方向的红灯,VD11指代的是东西方向的黄灯,VD12指代的是东西方向的绿灯,VD13指代的是南北方向的红灯,VD14指代的南北方向的黄灯,VD15指代的是南北方向的绿灯。
取其中白天模式中,南北红灯亮,东西绿灯亮的程序如下所示:
VD13=0;
//南北红
VD12=0;
//东西绿
VD10=VD11=VD14=VD15=1;
//其余灯强制灭
number=30;
for(i=30;
i>
0;
i--)//30秒
{
delay_1ms(800);
number--;
}
在白天模式中,黄灯呈亮灭亮灭的闪烁状态,且其时间为5秒,其程序设计如下:
VD14=0;
//南北黄
VD11=0;
//东西黄
VD10=VD12=VD13=VD15=1;
number=5;
for(i=5;
i--)//5秒
VD14=~VD14;
VD11=~VD11;
3.3夜间模式程序的设计
夜间工作模式的工作流程框图如图3-4所示:
图3-4:
夜间工作模式的流程图
在进入夜间后,由于电路中光敏电阻器的特性影响,夜间模式的电路接通,因程序的设定,即while(guangqiang==1),开启了夜间模式的工作状态。
红灯和绿灯都处于熄灭的状态,只有黄灯一直处于亮灭亮灭的闪烁状态。
其程序设定如下所示:
voidflash_led()//闪烁LED灯
{
number=0;
VD10=VD11=VD12=VD13=VD14=VD15=1;
//红灯、黄灯和绿灯强制熄灭
delay_1ms(800);
VD11=VD14=0;
//黄灯强制亮
}
3.4数码管显示程序的设计
数码管显示的流程框图如图3-5所示:
图3-5:
数码管显示流程图
在白天模式与夜间模式两种工作状态下,数码管的显示与其工作状态相对应。
在白天模式中,红灯亮的时间为30秒,黄灯亮的时间为5秒,绿灯亮的时间也为30秒;
在进入夜间模式后,红黄绿三色灯中,红灯和绿灯熄灭,只有黄灯处于亮灭亮灭的闪烁状态。
首先,在程序设计中,先对数码管的数字显示进行定义,即unsignedcharcodetab_shumaguan[]=//{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//1~~~~9段选码
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7F};
//0,1,2,3,4,5,6,7,8,9,点
而在灯亮灭的时间设定上,应先对定时器进行设定,其程序如下:
voidtimer0()interrupt1//10ms延时(12.0MHz)
TR0=0;
//关定时器T0
ET0=0;
//关定时器T0中断
TH0=0xf0;
//重装初值:
定时器T0的高8位赋初值
TL0=0x60;
定时器T0的低8位赋初值
display(number);
TR0=1;
//开定时器T0
ET0=1;
//开定时器T0中断
在正常的时间计数时,即30秒时间显示的程序如下所示:
number=30;
其中,delay_1ms(800)的程序设定如下所示:
voiddelay_1ms(unsignedints)
unsignedinta,b;
//16位数据a,b
for(a=0;
a<
s;
a++)//
for(b=0;
b<
120;
b++);
//120
4系统调试
图4-1:
交通灯显示
交通灯显示模块:
在白天模式时,接通电源后,先是南北方向的红灯亮,相应的东西方向的则是绿灯亮,在亮起30秒后,东西南北方向都进入黄灯亮灭亮灭的闪烁状态,在持续5秒的时间以后,东西方向的红灯亮,而南北方向的则是绿灯亮。
此模块显示了白天和夜间模式情况下,交通灯和数码管的工作状态。
图4-2:
夜间模式模块
此电路利用了负温度系数光敏电阻器的工作特点:
入射光强,电阻值减小,入射光弱,电阻值增大。
在白天时,光照强度大,光敏电阻由其特性,此电路中,运用了电压比较器进行电压的输出。
总结
本次设计基于最典型的51单片机技术的交通灯控制系统的设计与实现,介绍了基于AT89C51单片机微处理芯片与LED数码管的显示模块和交通灯控制系统的昼夜模式,由C语言程序控制的软硬件结合的设计。
在对此次设计的程序进行修改时,要把程序下载实际运行后,发现时间的不准或电路中的元器件的无法工作,能够提供合理的方案解决,同时能够在实际中合理的找出交通灯中各色的亮起时间。
这次毕业论文的设计,从开始准备资料到最后的定稿,我学到了很多不曾了解的知识,了解了80C51芯片和数码管等各类所需器件的更多的相关内容,巩固和加深对单片机知识的理解。
锻炼了分析、解决电子电路问题的实际本领。
参考文献
[1]孙宇尖.基于MSC-51单片机交通灯控制系统的[J].科技信息.2009(15).
[2]陈延奎.基于单片机的交通灯控制系统[J].重庆科技学院学报(自然科学版).2007(04).
[3]李琳.用单片机实现交通灯的控制[J].科技创业月刊.2008(11).
[4]郑建光,李永.基于AT89C51单片机的交通灯控制系统[J].自动化与仪器仪表.2008(06).
[5]肖传清.基于单片机控制交通灯的设计[J].赤峰学院学报.2013(22).
[6]吕宁.具有倒计时功能的单片机交通灯模拟控制系统设计[J].职业.2010(29).
[7]温欣玲,张玉叶.基于单片机及交通灯智能控制系统研究[J].微计算机信息.2007(29).
[8]宋海永.单片机在智能交通灯控制系统中的应用[J].电脑知识与技术.2010(15).
[9]V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J],2002.
[10]YeagerBrent.Howtotroubleshootyourelectronicscale[J]..PowderandBulkEngineering.1995.
致谢
光阴似箭,没有谁能阻止时间的悄然流逝,我的大学生活也在这不知不觉间即将画上句号。
在这即将毕业之际,经过我的一段时间的努力,我的毕业论文也随之完成。
本次论文的完成,对我而言是一种锻炼,在安排事情进度的把握方面有了很大提高,同时能更好的对自己进行约束。
本次课题设计是在指导老师的指导和支持下完成的。
感谢老师从论文的题目的选定、资料的搜集以及在论文资料的修改上所提的宝贵的意见和无私的帮助。
同时,在此次毕业设计过程中我对单片机的一些知识又有了重新的认识,实验技能有了很大的提高。
另外,我还要特别感谢一些同学对我论文修改上所提的一些意见,为我论文的完成提供了巨大的帮助。
最后,对此次帮助我的老师和同学表示真诚的谢意。
附录1:
硬件电路图
附录2:
软件部分设计
#include<
reg51.h>
sbitVD10=P1^0;
//西红=东红
sbitVD11=P1^1;
//西黄=东黄
sbitVD12=P1^2;
//西绿=东绿
sbitVD13=P1^3;
//南红=北红
sbitVD14=P1^4;
//南黄=北黄
sbitVD15=P1^5;
//南绿=北绿
sbitP30=P3^0;
sbitP31=P3^1;
sbitguangqiang=P3^3;
//光强度
unsignedintnumber;
//用于计时函数,记录秒数
unsignedcharcodetab_shumaguan[]=//{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsignedcharshumaguan_Select[]={0xFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
//{0x01,0x02,0x04,0x08,0x10,0x20};
//分别点亮第6,5,4,3,2,1号灯.
/**************函数名:
delay*************
*************延时函数1MS**************/
unsignedint