用单片机控制交通灯设计.docx
《用单片机控制交通灯设计.docx》由会员分享,可在线阅读,更多相关《用单片机控制交通灯设计.docx(12页珍藏版)》请在冰豆网上搜索。
用单片机控制交通灯设计
基于单片机控制交通灯设计
摘要:
本文集中论述了如何使用AT89C51单片机来实现交通灯模拟控制系统,该系统能具体根据实际车流量的情况进行实时控制和管理东西和南北方向的交通灯实时切换,并通过单片机控制数码管显示其对应的准确时间。
该系统采用的是点亮发光二极管模拟交通灯的实际情况。
系统具有实用实时性强、操作简单、扩展性能较好价格便宜等特点。
关键词:
单片机;AT89C51;数码管;交通灯;模拟控制
一引言
现今大小城市中红绿灯安装在各个街道口上,已成为疏导交通车辆最常见和最有效的也是不可缺少的工具,这一方法和技术其实早在19世纪就已经出现了。
1858年,在英国伦敦的主要街头就已经安装了一种以燃煤气为光源的红、蓝两色的机械扳手式信号灯,用以指挥马车的顺利有序通行,这可能就是世界上最早的交通信号灯了。
从那以后经过不断地发展,这种简单的交通信号灯方法技术逐渐演变成现在的通用的城市交通信号灯控制系统,红灯亮表示“停止”,绿灯亮表示“通行”,黄灯是警告信号。
交通信号灯的出现,使交通得以顺畅的运行,它对于疏导交通流量、分辨交通方向、提高道路通行能力减少交通事故有不可代替的作用。
如今有很多方法可以实现交通信号灯的控制,但传统的交通灯控制电路一般由数字电路构成,电路相当复杂而且体积大、成本高不利于普遍使用。
现在随着单片机技术的发展和广泛应用可以采用单片机来实现控制交通灯的任务,不但可以轻松解决上述问题,而且还具有了显示时间的功能,非常的方便和实用。
本文就是介绍一种采用51系列单片AT89C51为中心器件来设计的交通灯控制系统,下面就设计过程及关键技术作一些具体介绍。
该文将主要为硬件和软件两部分来介绍如何用AT89C51实现该交通灯控制系统的。
其中硬件系统设计包括:
交通灯方案的设计和系统硬件的设计两部分。
软件系统包含:
延时时间的设计和时间显示的设计以及中断切换程序设计三部分。
最后介绍测试方法和结果做出详细总结以及一些个人体会。
二方案比较、设计与论证
1电源提供方案:
为使模块稳定工作,须有可靠电源。
我们考虑了两种电源方案。
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2显示界面方案:
该系统要求完成倒计时、状态灯等功能。
基于上述原因,我们考虑了三种方案:
方案一:
完全采用数码管显示。
这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:
完全采用点阵式LED显示。
这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:
采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。
这种方案既满足系统功能要求,又减少了系统实现的复杂度。
权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
3输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:
方案一:
采用8155扩展I/O口及键盘,显示等。
该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在IO口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
三控制器硬件系统设计
1.交通灯方案设计
设A、B两干道交于一个十字路口,各干道有一组红(L1与L4为红灯)、黄(L2与L5为黄灯)、绿(L3与L6为绿灯)三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为A、B两干道的公共停车时间。
指示灯燃亮的方案设计见图一和表1。
图一交通灯设计方案
表1指示灯控制方案及时间显示过程
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
控制码
状态
说明
时间
显示
空
空
空
空
空
绿灯
黄灯
红灯
0
0
0
0
0
1
0
0
04H
A线行
B线止
25秒
0
0
0
0
0
0
1
0
02H
A线警
B线止
5秒
0
0
0
0
0
0
0
1
01H
A线止
B线行
25秒
0
0
0
0
0
0
1
0
02H
A线止
B线警
5秒
2.系统硬件设计
(1)选用设备
AT89C51芯片一片,74LS04一片,共阳极的七段数码管两个,红、黄、绿发光二极管各4个,开关键盘、连线若干。
系统总框图如图二所示。
图二硬件系统总框图
(2)交通灯控制线路图(见图三)
(3)系统工作原理
1)编程设置好交通灯初始时间,通过编程器写入89C51单片机系统。
2)由89C51单片机的定时器每秒钟通过P1口输送交通
图三交通灯控制线路图
信号信息,显示红、绿、黄灯的燃亮情况;由P0、P2口显示每个灯的燃亮时间。
3)通过89C51单片机的RESET位来控制系统是工作或设置初值,为0就对系统进行初始化,为1系统就开始工作;通过AT89C51单片机的P3.2,P3.3位来控制系统东西、南北方向切换,当P3.2为0切换东西方向为绿灯,P3.3为0切换南北方向为绿灯。
四控制器的软件设计
系统软件的设置主要包含延迟时间设计、显示程序设计以及中断切换程序设计。
其中延迟时间设计方法有两种:
一种是采用软延时的方法;另一种是利用MCS-51内部定时器产生溢出中断来确定1秒的时间。
本系统采用后一种方法,其优势是延时时间精确,不易发生时间叠加导致故障,从而引起死机。
具体方案设计如下:
1.延时时间的设计
(1)定时器初值计算
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL上的。
它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此可以把计数器记满为零所需的计数值设定为C和计数初值设定为Tc可得到如下计算公式:
Tc=M-C式中,M为计数器总值,且在方式1时M为216,(在方式0时M的值为213,在方式2和3为28)
由此可知:
当工作于方式1时,定时时间最长,所以将定时器工作于方式1,即M=216=65536;同时设定单片机的主脉冲频率fosc=12MHz,根据公式T=(M-Tc)×T计数得出:
当定时器工作于方式1时:
Tmax=216×1μs=65.536ms显然1秒钟已经超过了计数器的最大定时时间,所以只有采用定时器和软件相结合的办法才能解决问题。
(2)软件计时1秒的方法
在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒。
这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零,若为零表示1秒已到可以返回到输出时间显示程序。
(3)定时器计时参考程序代码
<1>主程序定时器需定时50毫秒,故T0工作于方式1。
<2>中断服务子程序初值:
Tc=M-T/T计数=216-50ms/1us=15536=3CB0H—ORG000BH
ORG1000H—AJMPBRT0
START:
MOVTMOD,#01H—BRT0:
DJNZR0,NEXT
MOVTH0,#3CH—AJMPTIME
MOVTL0,#B0H—DJNZ:
MOVR0,#14H
MOVIE,#82H—MOVTH0,#3CH
SETBTR0—MOVTL0,#B0H
MOVRO,#14H—MOVIE,#82H
LOOP:
SJMP$—RETI
2.时间显示的设计
当信号灯按照给定的变化规律进行运行时,同时用2位数码管进行30s递减时间显示,分别从P0、P2口输出LED显示器的数值,达到显示时间的目的。
当定时时间为1秒时,程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,依次把所有的灯色的时间显示完后在重新给时间计数器赋初值,重新进入循环(见图四)。
图四数码管时间显示
时间显示参考程序如下:
DISP:
DEC2AH
MOVA,2AH
MOVB,#0AH
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,B
MOVCA,@A+DPTR
MOVP2,A
RET
TABLE:
DB0C0H0F9H0A4H0B0H99H92H
82H0F8H80H90H
3.中断切换程序的设计
(1)切换程序流程图(见图五)
图五切换程序流程
(2)根据图5,做出参考程序如下:
LAMP:
JBP3.3,LAMP1;P3.3控制南北方向切换为绿灯
MOVP1,#04H
LAMP1:
JBP3.2,LAMP2;P3.2控制东西方向切换为绿灯
MOVP1,#01H
LAMP2:
JBP3.4,LPP
LCALLCLOCK
LPP:
AJMPLAMP
五测试、数据及结果分析
1.状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,K1和K2分别给端口送高电平和低电平,通电即可检测。
2.数码管的测试
将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。
3.整体电路测试
系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认140秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。
六结论与体会
本系统采用MSC-51系列单片机89C51为中心器件来设计交通灯控制器,实现了能根据实际车流量通过89C51芯片的P1口设置红、绿灯燃亮时间的功能,显示时间直接通过P0、P2输出。
系统设计简便、实用性强、操作简单、程序设计简便。
系统不足之处不能控制车的左转、右转以及自动根据车流改变红绿灯时间等。
这是由于系统设置、本身地理位置以及车流量情况所致,如果需要,亦可以设计扩充原系统来实现。
由于使用的是单片机作核心控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯效率还不是很高等等,这需要在实践中进一步完善。
通过这次的课程设计,使我对单片机有了更深的认识,从理论和实践上都得到了很大的提高,所以这次设计的完成让我学到了很多东西。
首先,丰富了自己的知识面,学到了以前没能学通的东西,具体了解了怎样去完成一个电路的设计:
从方案图、流程图、电路图等入手。
从课程设计中,学到了单片机AT89C51的内部结构及其工作原理,了解了时钟电路和控制电路的工作原理,巩固了汇编语言的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。
使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次课程设计的最大收获。
七参考文献
[1]李广弟.单片机基础[M].北京航空航天大学出版社.2001.
[2]何立民.单片机应用技术选编[M].北京航空航天大学出版社.2004.
[3]何立民.单片机应用技术大全[M].北京航空航天大学出版社.1994
[4]张毅刚.单片机原理及接口技术[M].哈尔滨:
哈尔滨工业大学出版社.1990
[5]谭浩强.单片机课程设计[M].清华大学出版社.1989
[6]蒋汝根钱丹浩.基于AT89C51单片机的交通灯模拟控制系统[J].无锡商业职业技术学院学报.2006.12(6卷6期)
[7]张虔铭.用单片机控制交通灯[M].成都电子科大.2002
[8].杨恢先黄辉先.单片机原理及应用[M]国防科技大学出版.2003.3
[9].黄智伟朱卫华.单片机与嵌入式系统应用[M].南华大学.2005.3
[10].MicrelInc.QwikRadioTMLowPowerUHFReceiver[A].2001.8