基于单片机的交通灯的设计和实现.docx
《基于单片机的交通灯的设计和实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯的设计和实现.docx(12页珍藏版)》请在冰豆网上搜索。
基于单片机的交通灯的设计和实现
单片机实训报告
——基于单片机的交通灯的设计和实现
班级:
计算机061
参加人员:
林传杰
学号:
*****
E-mail:
6实训心得…………………………………………………………………………………….11
1引言
今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。
道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。
现在交通系统已不能满足经济发展的需求。
由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。
在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。
并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。
中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。
智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。
使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。
2交通管理方案论证
2.1设计任务
东西(EW)、南北(SN)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行,黄灯闪烁表示离红灯亮还有5S时间(警告状态)。
本设计给两干道分配了20S和30S的时间选择,可以根据干道上行人车辆流量来分配长短不同的时间。
2.2方案介绍
把设计任务细化为四个状态,其对应状态如图:
整个交通灯控制由四个状态组成,可以用程序设计实现,也可用时序逻辑实现.以下方案就是分别用了这两种方法。
设计思想:
状态
主干道灯显示
次干道灯显示
00(30S)
绿灯
红灯
01(05S)
黄灯闪烁
红灯
10(20S)
红灯
绿灯
11(05S)
红灯
黄灯闪烁
说明:
1、按键1和2按下是定时20秒,弹起定时30秒;button1控制右边两位数码管显示,button2控制左边两位数码管显示;
2、按键3是当交叉路口发生交通事故时,紧急暂停通行;
3、按键旁边的红点点一下按键就一直处于按下状态;我设计的按键控制是开光转换按键,所以需要更改状态需要按键一直按下去,不过要等一个方向的工作结束才能生效;
比如:
开始右边两位显示30秒,接下去左边如果按键没按下,左边显示也是30秒,如果需要接下去左边显示20秒,就在右边30秒工作的时候将控制左边的按键按下;
想重新回到30秒就弹起按键就行了;
3交通灯系统硬件设计
3.1单片机概述
单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。
单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。
通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压、低功耗。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
它主要是作为控制部分的核心部件。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
3.2系统构成
电路板一块,AT89C51单片机一片,七段数码管四个。
发光二极管9个(红黄绿各三个,一组控制东西干道,一组控制南北干道,一组显示按键状态),三个按键(按键1控制东西干道时间,按键2控制南北干道时间,按键三控制紧急暂停通行),若干电阻。
系统结构框图
系统工作流程:
(1)开启中断控制,数码管循环显示;
(2)中断时间到,进入中断处理程序,重新给定时器赋初值,搜索按键状态,判断显示状态,赋值给各参数,控制哪些灯亮哪几位数码管显示;
(3)cnt加1,判断cnt是否等于20,确实1S时间到了,如果是sec减一;
(4)判断sec是否到达5s,确实是否给警告标志参数赋值;
(5)到达5s后程序判断sec等于0,确定更改状态;
3.3芯片选择与介绍
3.3.1AT89C51芯片
选用AT89C51芯片,其主要功能列举如下:
为一般控制应用的8位单片机
8051-basedFulllyStatic24MHzCMOScontrollerwith32I/OLines,2Timers/Counters,6Interrupts/2PriorityLevels,UART,Three-LevelProgramMemoryLock,4KBytesFlashMemory,128BytesOn-chipRAM
3.3.2输出信号与信号灯
要使行人能看见信号灯的情况,必须把P2口输出的信号降低,当P2某个端口为低电平,该支路指示灯亮(此处设计阴极接端口)。
LED灯的显示原理:
通过同名管脚上所加电平的高低来控制发光二极管是否点亮。
如下图:
而七段数码管的显示及与74HC164的连接显示不同的字形如SP,g,f,e,d,c,b,a管角上加上0FEH所以 SP上为0伏,不亮其余为TTL高电平,全亮则显示为8。
采用共阴极连接:
显示数值
dpgfedcba
驱动代码(16进制)
0
00111111
FEH
1
00000110
06H
2
01011011
5BH
3
01001111
4FH
4
01100110
66H
5
01101101
6DH
6
01111101
7DH
7
00000111
07H
8
01111111
7FH
9
01101111
6FH
驱动代码表
。
3.3.3交通灯控制线路图
DSN电路图已附上:
traffic_light.DSN
4交通灯软件设计
4.1程序设计流程图
略(word作图有点难度)
程序流程图
流程图说明:
图中定时器在每50ms中断一下,设置为循环20次(此时为1秒),每1秒以后,sec自动减1。
4.2延时的设定
延时方法可以有两种一种是利用AT89C51内部定时器的溢出中断来确定1秒的时间,另一种是采用软件延时的方法。
4.2.1计数器初值计算
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。
他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:
TC=M-C
式中,M为计数器模值,该值和计数器工作方式有关。
在方式0时M为213;在方式1时M的值为216;在方式2和3为28;
算法公式:
T=(M-TC)T计数或TC=M-T/T计数
T计数是单片机时钟周期TCLK的12倍;TC为定时初值
如单片机的主脉冲频率为TCLK12MHZ ,经过12分频
方式0 TMAX=213 *1微秒=8.192毫秒
方式1 TMAX=216 *1微秒=65.536毫秒
显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.
实现1秒的方法
我们采用在主程序中设定一个初值为20的软件计数器和使T1定时50毫秒.这样每当T1到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。
为0表示1秒已到可以返回到输出时间显示程序。
4.2.2相应程序代码
(1)定时器的设置
定时器需定时50毫秒,故T0工作于方式1。
voidinrupt(void)
{
TMOD=0x01;
TH0=-(50000/256);
TL0=-(50000%256);
ET0=1;
TR0=1;
EA=1;
}
程序的软件延时:
voiddelay(uintt)
{
uintdatai,j;
for(i=0;i{for(j=0;j<50;j++){;}}
}
4.3程序的主控制调用
中断服务子程序是主要的控制程序;
5实验平台
5.1实验平台
本人采用的是KeiluVision3单片机编程软件和proteus7电路图绘制软件。
开启计算机进入KeilC51编译器介面。
如下图:
以下是proteus7的主界面:
5.2实验步骤
5.2.1按系统需求绘制电路图
5.2.2编写程序
程序代码分为3个模块:
中断模块,中断处理模块,循环模块。
1.调试程序
打开Keil软件,新建工程;
选择芯片;
新建文档,保存文档为.c后缀文件;
把保存的文档加载到SourceGroup;
编写程序,每个功能逐渐编写;
编译程序,并生成hex文件;
打开proteus7,在芯片中加载hex文件;
(8)运行显示结果;
2.观察运行的结果,看第一个功能能否实现,如果出错则重新编写;如果成功就继续下个功能的编写,调试,直到想要的功能全部实现;
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文