交通灯毕业设计论文.docx
- 文档编号:4324645
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:21
- 大小:169.11KB
交通灯毕业设计论文.docx
《交通灯毕业设计论文.docx》由会员分享,可在线阅读,更多相关《交通灯毕业设计论文.docx(21页珍藏版)》请在冰豆网上搜索。
交通灯毕业设计论文
目录
摘要1
第1章设计方案3
1.1单片机交通灯电路概述3
1.2设计任务3
1.3方案介绍4
1.3.1方案表格显示5
第2章硬件设计5
2.1AT89C51单片机的介绍6
2.1.1AT89C51单片机的时钟6
2.1.2AT89C51单片机的片内并行接口6
2.1.3AT89C51单片机串行口7
2.1.4定时器/计数器7
2.1.5AT89C51单片机的中断系统8
2.2硬件框架图8
2.3数码显示管9
2.3.1八段LED显示器9
2.3.2数码显示管图样10
2.4交通控制灯10
2.5晶体振荡器11
2.6复位电路12
第三章交通灯系统软件设计12
3.1程序设计构思12
3.2各部分程序设计13
3.2.1延时程序设计13
3.2.2数码显示管倒计时程序13
3.2.3LED灯点亮程序14
3.2.4中断程序15
参考文献18
附录19
附录一交通灯电路原理图19
附录二原程序代码20
摘要
当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。
道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。
现在交通系统已不能满足经济发展的需求。
由于生活水平的提高,人们对交通运输的安全性及服务水
平提出了更高的要求。
在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。
并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。
中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。
智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。
使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。
第1章设计方案
1.1单片机交通灯电路概述
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机AT89C51为中心器件来设计交通灯控制器,实现了通过89C51芯片的P3口控制十字路口红,黄,绿三个灯的点亮;以及紧急通道的开通。
P0、P1和P2口同时用作控制东西、南北方向的两位数码管显示。
本系统只在基础交通灯上加了一个紧急通道开关,其实用性只适合中小型城市,使用范围小,还有待改进。
1.2设计任务
东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
红灯的设计时间为40秒,黄灯为5秒,绿灯为34秒。
设A道和B道的车流量相同。
1.3方案介绍
BB
东西红灯亮东西绿灯亮
A
(车辆禁止通行)(车辆可直线行驶和左转弯)
南北绿灯亮南北红灯亮
(可以直线行驶和左转弯)(车辆禁止通行)
图1图2
B
A东西红灯亮
(紧急车辆通行状态)
南北红灯亮
图3
由上面三幅图可以知道,图1为东西(A)红灯、南北(B)绿灯状态下的正常通行状态,当南北(B)为绿灯状态时,南北方向的车辆可以通过并且可左转弯;图2同图1一样是属于正常通行状态,不过是东西(A)为绿灯、南北(B)红灯;图3为紧急车辆通行状态,当遇到紧急车辆需要通过的时候,四周红灯全亮,紧急车辆可以从十字路口通行。
1.3.1方案表格显示
此方案是定位于中小城市使用的交通灯,因此,在车流量上面,四周车辆的流量基本是相同的,所以不用考虑车流量。
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
设东西道比南北道的车流量相同,指示灯燃亮的方案如表1。
34s
5s/40s
34s
5s/40s
······
东西道路
绿灯亮
黄灯亮
红灯亮
红灯亮
······
南北道路
红灯亮
红灯亮
绿灯亮
黄灯亮
······
表1
由上图可以看出交通灯的点亮只有4种状态;
(1)东西绿灯亮34s,南北红灯亮34s。
(2)东西黄灯亮5s,南北红灯亮40s。
(3)南北绿灯亮34s,东西红灯亮34s。
(4)南北黄灯亮5s,东西红灯亮40s。
通过以上4种状态的循环,就可以用来控制十字路口上的车辆和行人的安全通过。
另外,还有一点,紧急通道的使用,也就是当有110,120,119等紧急事件发生时,需要使十字路口的红灯全部点亮,等紧急车辆通行过后,交通灯恢复到正常状态。
第2章硬件设计
此设计采用的是AT89C51单片机为内部控制芯片,外部接有按键中断电路以及复位电路以外,还有4个两位数码管,用以倒计时和4个路口的灯,共12个LED灯。
2.1AT89C51单片机的介绍
2.1.1AT89C51单片机的时钟
51系列单片机内由一个反相放大器构成振荡器,可以由它产生时钟。
时钟可以由两种方式产生:
内部方式和外部方式两种。
(1)内部方式:
一些新型的51系列单片机可采用内部的电路来产生时钟,不需外接任何元件就可产生时钟信号,称为内部时钟,但是内部时钟由于没有高精度的石英晶振荡器稳频,精度低,主要用于对事件精度要求不高的场合。
(2)外部方式:
可以通过XTAL1和XTAL2接入外部时钟。
现在的51系列单片机多数可以稳定在40MHz或更高,当时钟频率高于24MHz时,应采用外部时钟,因为通常频率较高的石英晶体都是泛音振荡器,把它接到单片机的XTAL1和XTAL2上,由于没有辅助选频电路产生的时钟只能是基频,例如使用33MHz的石英晶体,可能产生16.5MHz的时钟。
2.1.2AT89C51单片机的片内并行接口
51单片机有四个8位的并行接口,记作P0、P1、P2和P3,共32根I/O线,实际上它们映射为四个专用寄存器(SFR)。
每个口主要由四部分构成:
端口锁存器、输入缓冲器、输出驱动器和引至芯片外的端口引脚。
作输出时数据可以锁存,作输入时数据可以缓冲。
但这四个通道的功能不完全相同。
四个接口在进行I/O操作时,特性基本相同:
(1)作为输出口用时,内部带锁存器,可以直接和外设相连,不必外加锁存器。
(2)作为输入口用时,有两种工作方式,即所谓读端口和读引脚。
(3)在端口作为外部输入线,也就是读引脚时,要先通过指令,把端口锁存器置1,然后再实行读引脚操作,否则就可能读入出错。
这四个接口特性上的差别主要是P0、P2口和P3口有第二功能,而P1口则只用作I/O。
在这里特别要提到的是P0口,P0口在驱动TTL电路时能带八个LSTTL门,但驱动MOS电路时若作为地址/数据总线,可以直接驱动,而作为I/O口时,需外接上拉电阻。
(本设计的P0口便是用作I/O使用)
2.1.3AT89C51单片机串行口
单片机内部有一个可编程的、全双工的串行接口,它有4种工作模式可变的波特率能够方便地完成与其他微处理器和微机的串行通信,同时还可实现串并转换实行I/O口德扩展。
2.1.4定时器/计数器
51系列单片机内部有两个16位可编程定时器/计数器,记为T0和T1,它们都是由16个触发器构成,故最大计数模值为65535。
可编程时指工作方式由指令来设定,即可做计数器,也可做定时器。
并且计数(定时)的范围也可以由指令来设置。
这种控制功能是通过定时器/计数器方式控制寄存器TCOM来完成的。
定时器在计到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。
在计数状态下同样也可以申请中断。
定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。
在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。
计数工作时,时钟脉冲(计数脉冲)由T0和T1(即P3.4和P3.5)输入。
2.1.5AT89C51单片机的中断系统
51系列单片机的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INT0和INT1(即P3.2和P3.3)输入,输入方式可以是电平触发(低电平有效),也可以是边沿触发(下降沿有效)。
两个定时器中断请求时当定时器溢出时向CPU发出的,即当定时器由状态全1转为全0时产生的。
第五个中断请求是由串行口发出的,串行口每发送完一个数据或接受完一个数据,就可产生一次中断申请。
2.2硬件框架图
图2-1
2.3数码显示管
2.3.1八段LED显示器
八段LED显示器由八个发光二极管组成。
其中7个长条形的发光管排列成“日”字形,另一个圆点形的放光管在显示器的右下角作为显示小数点用,它能显示各种数字及部分英文字母。
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称为共阳极LED显示器如图2-2所示;另一种是8个发光二极管的阴极都连在一起的,称为共阴极LED显示器如图2-3所示。
GND(共阳极)
图2-2
+5V(共阴极)
图2-3
图2-4(8段LED数码显示管)
2.3.2数码显示管图样
图2-4
2.4交通控制灯
交通灯是采用4对红、黄、绿三色LED灯来表示。
以低电平有效。
其由P3口除P3.2、P3.3两个端口以为的所有端口控制。
如下图2-5:
2.5晶体振荡器
石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整,作用是为系统提供基本的时钟信号。
我们在晶体某一方向加一电场,从而在与此垂直的方向产生机械振动,有了机械振动,就会在相应的垂直面上产生电场,从而使机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限制时,才达到最后稳定,这种压电谐振的频率即为晶体振荡器的固有频率。
振荡器特性,XTAL1和XTAL2分别为反向放大器的输入和输出。
该反晶体向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
在XTAL1和XTAL2引脚上外接定时元件就能构成自激振荡电路。
定时元件通常采用石英晶体和电容组成的并联谐振电路。
电容器C1和C2主要起频率微调作用,如图2-6。
图2-6
2.6复位电路
89C51的复位时由外部的复位电路来实现的。
复位引脚RST通过一个施密特触发器用来抑制噪声,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
本设计是采用上电自动复位,上电自动复位时通过外部复位电路的电容充电来实现的。
只要VCC的上升时间不超过1ms,就可以实现自动上电复位。
时钟频率用12MHz时C取20PF。
图2-7
第三章交通灯系统软件设计
3.1程序设计构思
通过硬件电路图可以得出软件设计分为以下几个部分:
(1)数码显示管倒计时程序。
(2)LED灯的点亮、熄灭程序。
(3)延时程序。
(4)中断程序。
3.2各部分程序设计
3.2.1延时程序设计
延时程序,在整个程序里面的作用,起到的作用就是,在上一句命令与下一句命令之间,上一句命令执行完后,间隔一段时间再执行下面一句命令。
中间的时间差,就是延时程序所起到的作用。
在C语言中,延时程序,就是一种利用循环执行一段命令,利用执行时间来起到延时的功能。
本设计的延时程序时参考使用的。
如下:
voiddelay(uintz)//带参数的延时函数
{
ucharx,y;//定义两个变量
for(x=z;x>0;x--)//循环延时
for(y=110;y>0;y--);//循环延时
}
3.2.2数码显示管倒计时程序
本设计倒计时可参考1.3.1方案表格显示,由于是在十字路口,那么东西、南北方向的灯亮的时间各不相同,东西灯亮的时间一样,南北灯亮的时间一样。
那么,就只能分开写东西、南北数码显示管倒计时程序了。
然而在之间,还有一个黄灯,黄灯亮的时间只有5秒。
所以最后得出的程序写法就是东西、南北方向的数码显示管倒计时程序应该分开来写。
然后利用函数调用来实现显示。
如下为东西方向的显示程序。
(南北亦同)
voidfenjieDX()//东西数码管显示数字的分解函数
{
DXshi=DXtemp/10;
DXge=DXtemp%10;
DXtemp--;
}
voiddisplayDX(ucharDXshi,ucharDXge)
{
//东西十位
P2=0xfb;
P1=table[DXshi];
delay(5);
//东西个位
P2=0xf7;
P1=table[DXge];
delay(5);
}
3.2.3LED灯点亮程序
这部分程序是最好写的,就是东西、南北方向的灯交替点亮,可参看1.3.1方案表格显示。
下面为部分程序:
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秒,东西亮绿灯35秒
{
DXY=1;
DXG=0;
DXR=1;
NBY=1;
NBG=1;
NBR=0;
DXtemp=34;
}
3.2.4中断程序
在本次的设计中,man函数中的if(cc==82)这个判断语句中的cc是用来控制数码显示管与LED点亮的。
另外还有一个紧急通道的中断,此中断为外部中断。
这里就只粘贴部分的程序出来,如下:
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秒,东西亮绿灯35秒
{
DXY=1;
DXG=0;
DXR=1;
NBY=1;
NBG=1;
NBR=0;
DXtemp=34;
}
···········································
下面为紧急通的中断程序
voidJJZD()interrupt0//紧急中断程序,南北东西都亮红灯
{
DXY=1;
DXG=1;
DXR=0;
NBY=1;
NBG=1;
NBR=0;
displayNB(0,0);//南北数码管都显示0
displayDX(0,0);//东西数码管都显示0
cc=0;//重最开始显示
}
参考文献
[1] 李朝青.单片机原理及接口技术(简明修订版).
杭州:
北京航空航天大学出版社,1998。
[2] 李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994。
[3]胡文金,单片机应用技术实训教程,重庆大学出版社,2005年2月。
[4]胡辉《单片机原理与应用》,中国水利出版社,2007。
[5]刘守义《单片机应用技术》,西安电子科技大学出版社。
附录
附录一交通灯电路原理图
附录二原程序代码
#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
voidinit();//初始化子程序的申明
voiddisplayNB(ucharNBshi,ucharNBge);//显示子程序的申明
voiddelay(uintz);//延时子程序的申明
voidfenjieNB();//南北数码管显示数字的分解函数
voidfenjieDX();//东西数码管显示数字的分解函数
voidmain()
{
init();//初始化子程序
while
(1)
{
if(cc==82)//循环一次结束
{
cc=0;//从新进行下一次循环
}
}
}
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)//南北继续亮红
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 毕业设计 论文