专业课程设计 校正版.docx
《专业课程设计 校正版.docx》由会员分享,可在线阅读,更多相关《专业课程设计 校正版.docx(42页珍藏版)》请在冰豆网上搜索。
专业课程设计校正版
基于51单片机的交通灯设计
组员:
蔡余敏、覃珍、李海浪、于小艳指导教师:
王彩霞
摘要:
交通信号灯是城市交通安全、有序、快速运行的重要保障。
本文设计了一种基于单片机的交通信号灯控制系统。
该系统模拟现实中十字路口的通行指示,倒计时和紧急车辆强行通过等功能。
采用STC89C52芯片来设计交通灯控制电路,结合七段共阴极数码管显示时间的模块,交通灯显示模块,晶振电路,复位电路以及按键电路等模块组成。
通过软件仿真与硬件调试,实现红、黄、绿灯燃亮时间以及双位数码管显示倒计时,三种颜色灯交替点亮以及紧急情况下的中断处理功能。
本系统性价比高,实用性强,操作简单,功能全面,有广泛的应用前景。
关键词:
交通信号灯;STC89C52单片机;紧急通行;中断处理
Abstract:
Thetrafficlightsareanimportantguaranteeofcitytrafficsafety,orderandrapidrunning.Thispaperdesignsatrafficsignallampscontrolsystem,whichisbasedonMCU.Thesystemsimulatesthefunctionsofthetrafficindication,countingdownandemergencyvehiclespassingatrealcrossroads.STC89C52chipdeviceisdesignedwiththetrafficlightscontrolcircuit,combinedwithcommoncathodesevensegmentsdigitaltubedisplaytimemodule,trafficlightsdisplaymodule,crystalscircuit,resetcircuitandkeycircuitmodules.Bysoftwaresimulationandhardwaredebugging,thefunctionshavebeenachieved,whichincludered,yellow,andgreenlightsbrightening,on-offdigitaltubedisplayingtimecountdown,aswellas3kindsofcolorlampslighteningalternatelyandinterruptprocessingfunctionofemergencies.Thissystemiscost-effective,strongpracticability,simpleoperation,fullyfunctional.Ithasabroadapplicationprospect.
Keywords:
trafficsignallamp;MCUSTC89C52;emergencyaccess;interruptprocessing
1总体设计思路
1.1设计背景
自从1858年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。
今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。
道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。
现在交通系统已不能满足经济发展的需求。
由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。
在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。
并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。
中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。
智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。
使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。
1.2设计目的及思路
1.2.1设计目的
了解交通灯管理的基本工作原理,熟练掌握STC89C52的工作原理,熟悉STC89C52单片机并行接口的各种工作方式和应用,并了解计数器/定时器的工作方式,掌握多位LED显示问题的解决。
1.2.2设计思路
(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。
(2)确定系统交通控制的总体设计,包括,十字路口具体的通行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示。
(3)进行显示电路,灯状态电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。
(4)进行软件系统的设计,对于本系统,本人采用C语言编写程序,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。
1.3交通灯显示时序及状态转换的理论分析
图1.1所示为红绿灯转换的状态图。
S2
S1
S4
S3
图1.1红绿灯状态转换图
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换。
2方案比较、设计与论证
2.1总体设计方案
根据十字路口交通灯的要求,可将本系统分为三个模块,第一模块是控制模块,主要负责整个系统的控制和运算,从而使各模块正常工作,第二个模块是显示模块包括LED灯和数码管;第三个模块是电源模块,给各模块提供电源,让各模块工作。
其系统设计结构如图2.1所示。
图2.1系统设计结构图
2.2控制模块选择方案
方案一:
由计数器74LS161级联组成,配合译码器和秒脉冲信号发生器等器件组成交通灯系统,整个系统简单,控制简单,调试容易等优点。
方案二:
采用单片机STC89C52作为控制器。
单片机运算能力强,软件编程灵活,自由度大。
在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,使用时容易掌握;采用STC89C52单片机稳定可靠、应用广泛、通用性强。
方案比较:
采用方案一来实现十字路口交通灯控制系统非常方便,电路结构简单,控制单一,但整个系统性能不是很高,倒计时不是非常精确,如果要求系统能设置不同工作时间不容易,因而对于完成题目较困难,而方案二完全能实现设计要求,容易掌握,利于编程,易控制,I/O接口很多,易于扩展外围电路,价格便宜,故选择方案二。
2.3电源模块方案
为使模块稳定工作,须有可靠电源。
因此考虑了两种电源方案:
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源,使用电池盒供电。
该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我选择第二种方案。
2.4显示界面方案
2.4.1倒计时显示界面方案
该系统要求完成倒计时功能。
只需显示数字,基于上述原因,我考虑了二种方案:
方案一:
采用全数码管显示。
这种方案只显示有限的符号和数码字符,简单,方便。
方案二:
采用点阵式LED显示。
这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
综上所述,我选择第一种方案,四个路口采用两个二位共阴极数码管。
2.4.2状态灯显示
该系统要求完成状态灯显示的功能。
求于要求简单,我们把各个路口的红灯、绿灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需三个状态灯,一个共有的绿灯,一个共有的红灯,一个共有的黄灯。
如图2.2所示。
北
B
○○○
○○
A○○A
○○
○○○
B
图2.2状态灯显示
3硬件电路设计
3.1系统总体硬件方案论证
本设计以单片机为控制中心,采用模块化设计,共分以下几个功能模块:
单片机控制系统、状态显示模块、倒计时模块、电源模块。
经上述各模块的方案选择与论证,十字路口交通灯控制系统的控制芯片选用单片机STC89C52作为整个系统的核心控制器件,主要负责整个系统工作的控制和运算,从而使各模块正常工作;采用七段LED数码管和LED灯作为显示器件,用七段LED数码管完成倒计时显示,用LED灯作为状态灯指示功能;以电池组供电作为系统电源部分,可对各个模块供电且便于演示。
单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。
它由按键电路、复位电路、晶振电路等组成。
具体硬件框图,如下图3.1所示。
图3.1硬件设计框图
3.2STC89C52单片机简介
STC89C52RC是STC89系列单片机中应用较为广泛的一种型号,芯片内部有8KB的闪速存储器FlashROM。
内部的8KB存储器用于存放可编程控制器监控程序。
STC89C52RC单片机的40条引脚按功能来分,可以分为3部分,电源及时钟引脚、控制引脚和输入/输出引脚,如图3.2所示。
图3.289C52单片机引脚图
89C52单片机引脚功能介绍:
(1)主电源及时钟引脚
此类引脚包括电源引脚Vcc、Vss、时钟引脚XTAL1、XTAL2。
Vcc(40脚):
接+5V电源,为单片机芯片提供电能。
Vss(20脚)接地。
XTAL1(18脚)在单片机内部,它是一个反向放大器的输入端,该放大器构成了片内的振荡器,可提供单片机的时钟控制信号。
XTAL2(19脚)在单片机内部,接至上述振荡器的反向输出端。
(2)控制引脚
此类引脚包括RESET(即RSR/VPD)、ALE、PSEN、EA,可以提供控制信号,有些具有复用功能。
RSR/VPD(9脚):
复位信号输入端,高电平有效,当振荡器运行时,在此引脚加上两个机器周期的高电平将使单片机复位(REST)。
复位后应使此引脚电平保持为不高于0.5V的低电平,以保证单片机正常工作。
掉电期间,此引脚可接上备用电源(Vpp),以保持内部RAM中的数据不丢失。
当Vcc下降到低于规定值,而VPD在其规定的电压范围内(5±0.5V)时,VPD就向内部RAM提供备用电源。
ALE/PROG(30脚):
ALE为地址锁存允许信号。
当单片机访问外部存储器时,ALE(地址锁存允许)输出脉冲的下降沿用于锁存16位地址的低8位。
即使不访问外部存储器,ALE端仍有周期性正脉冲输出,其频率为振荡器频率的1/6。
但是每当访问外部数据存储器时,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲。
ALE端可以驱动8个LSTTL负载。
PSEN(29脚):
程序存储器允许输出控制端。
此输出为单片内访问外部程序存储器的读选通信号。
在从外部程序存储器取指令(或取常数)期间,每个机器周期均PSEN两次有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不会出现。
PSEN同样可以驱动8个LSTTL负载。
EA(31脚):
EA功能为内外程序存储器选择控制端。
当EA端保持高电平时,单片机访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时将自动转向执行外部程序存储器内的程序。
(3)输入/输出引脚
此类引脚包括P0口、P1口、P2口和P3口如表格3-1所示。
P0(P0.0~P0.7)是一个8位三态双向I/O口,当不访问外部存储器时,做通用I/O口使用,用于传送CPU的输入/输出数据,当访问外部存储器时,此口为地址总路线低8位及数据总路线分时复用口,可带8个LSTTL负载。
P1(P1.0~P2.7)是一个8位准双向I/O口(作为输入时,口锁存器置1),带有内部上拉电阻,可带4个LSTTL负载。
P2(P2.0~P2.7)是一个8位准双向I/O口,与地址总路线高8位复用,可驱动4个LSTTL负载。
P3(P3.0~P3.7)是一个8位准双向I/O口,除此之外每位还具有第二功能。
表3-1P3口功能表
P3口各个位的第二功能
P3口的位
第二功能
说明
P3.0
RXD
串行数据接收口
P3.1
TXD
串行数据发射口
P3.2
INT0
外部中断0输入
P3.3
INT1
外部中断1输入
P3.4
T0
计数器0计数输入
P3.5
T1
计数器1计数输入
P3.6
WR
外部RAM写信号
P3.7
RD
外部RAM读信号
STC89C52内部结构图:
图3.3STC89C52内部结构图
3.3单片机最小系统
3.3.1时钟电路
图3.4时钟电路图
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为11MHz,电容应尽可能的选择陶瓷电容,电容值约为30μF。
在焊接电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证振荡器稳定和可靠地工作。
3.3.2复位电路
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。
复位电路如图3.5所示。
图3.5复位电路图
3.4显示电路
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,点亮显示器的方法有静态和动态两种。
我们的用的是动态,所谓动态显示,就是轮流点亮各位显示器,该方法只需一个8位段输出口和一个8位扫描输出,后者的作用是依次接通各位LED。
动态显示需要较大驱动电流,故在输出口尚需接加驱动器。
显示器的亮度既同驱动电流有关,也同点亮时间与间隔时间的比例有关。
调整电流和时间参数,可实现亮度较高且较稳定的显示。
显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
本系统采用的是两位共阴极数码管,如图3.6所示。
图3.6两位共阴极数码管引脚图
3.5紧急通车电路模块
为了实现此功能,利用单片机中断达到目的。
利用一个手动按钮开关接至单片机外部中断0,同时在软件设计时将其设定为最高优先级,当其按下时,四方全为红灯,当其计时完了之后,回到原来的位置进行执行。
再利用一个手动按钮接至单片机外部中断1当其按下时,如果是东西道是红灯,而南北道是绿灯,则将其置为东西是绿灯,南北是红灯;如果是东西道是绿灯,而南北道是红灯,则将其置为东西是红灯,南北是绿灯。
两种情况都是执行完后,回到断点处继续执行。
3.6总电路图
图3.7交通灯总原理图(Multisim软件图)
总体接线说明:
(1)交通信号灯指示电路部分,STC89C52芯片的P1.0~P1.5(引脚1~6)接6个470Ω的限流电阻,然后在依次分别接到南北方向的绿(上左下右)、黄(上中下中)、红(上右下左),东西方向的绿(左下右上)、黄(左中右中)、红(左上右下)色的LED指示灯(共阳级接法);
(2)STC89C52芯片的RST(引脚9)接复位电路;
(3)按键电路部分,STC89C52芯片的P3.0(RXD)、P3.1(TXD)、P3.2(
)即引脚10、11、12分别接3个微动开关;
(4)STC89C52芯片的XTAL2、XTAL1、VSS,即引脚18、19、20接晶振电路;
(5)STC89C52芯片的P2.0~P2.3(引脚21~24)接4个1KΩ的电阻,然后分别接到4个三极管的基极b,集电极c均接地,4个发射极e分别依次接到东西方向数码显示器D1(引脚8)、D2(引脚7)和南北方向的数码显示器的D1(引脚8)、D2(引脚7);
(6)STC89C52芯片的
(引脚31)和复位电路的VCC相连;
(7)倒计时显示部分,STC89C52芯片的P0.0~P0.6(引脚39~33)接7个470Ω的电阻,然后均接到VCC电源端,同时STC89C52芯片的P0.0~P0.6(引脚39~33)分别依次直接接到所有数码显示器的a、b、c、d、e、f、g(即引脚10、9、1、4、3、6、5),DP(引脚2)置空;
(8)STC89C52芯片的VCC(引脚40)接电源正极,所有接地端均接电源负极。
3.7各元器件选择及其功能介绍
表3.2元器件列表
序号
元件名称
型号
数量/个
用途
1
单片机
89C52
1
控制核心
2
晶振
11MHZ
1
晶振电路
3
电容
30pF
2
晶振电路
4
电解电容
10uF
1
复位电路
5
电阻
10K
1
复位电路
6
发光二极管
LED
12
红、黄、绿灯
7
USB数据线
1
接入电源
8
电阻
470Ω
6
LED
9
电阻
470Ω
7
数码管电路
10
电阻
1KΩ
4
数码管驱动
11
数码管
GC-3461BS
2
显示电路
12
按键
4
按键电路
13
三极管PNP
8550
4
数码管驱动电路
14
电池盒
5#干电池
3
提供电源
4软件部分的设计
4.1程序流程图
4.1.1程序总流程图
图4.1交通灯程序总流程图
本设计采用C语言进行软件编程。
文件中包含了初始化函数init()、显示函数display()、键盘扫描Keyscan()、中断处理timer0()interrupt1和延时delay()等子程序块;主函数通过直接或间接的调用各个子程序块,使整个交通信号灯控制系统实现红、黄、绿灯燃亮时间以及双位数码管显示倒计时,三种颜色灯交替点亮以及紧急情况下的中断处理功能。
4.1.2子程序流程图
采用C语言进行软件编程,包含了初始化函数init()、显示函数display()、键盘扫描Keyscan()、中断处理timer0()interrupt1和延时delay()等子程序块;各个子程序块的设计流程图见附录一。
4.2程序代码
根据程序流程图中的软件设计思路,采用C语言编写程序代码。
先建立文件,然后在文件中编写主程序块及各个子程序块的代码,主函数通过直接或间接的调用各个子程序块,使整个交通信号灯控制系统实现红、黄、绿灯燃亮时间以及双位数码管显示倒计时,三种颜色灯交替点亮以及紧急情况下的中断处理功能。
程序代码的具体内容见附录二。
5结果与分析
5.1软件仿真与结果分析
5.1.1Proteus的仿真结果
图5.1Proteus的仿真结果
5.1.2各状态仿真结果
(1)复位状态
轻按【复位】按钮后,东西方向通行(绿灯亮),数码管显示从20秒开始倒计时;同时,南北方向禁行(红灯亮),数码管显示从23秒开始倒计时,如图5.2所示。
图5.2复位状态显示结果
(2)正常通行状态
轻按【正常通行】按钮后,交通信号灯正常工作,即按交通信号灯的状态转换规律进行变换。
若中间发生过紧急情况,则按紧急处理之前继续运行,如图5.3所示。
图5.3正常通行状态显示结果
(3)南北通行状态
轻按【南北通行】按钮后,表示发生A类紧急情况需进行应急处理,交通信号灯东西方向强制禁行(亮红灯),南北方向强制通行(绿灯亮)疏通车流,四个方向倒计时一直显示99秒,如图5.4所示。
图5.4南北通行状态显示结果
(4)东西通行状态
轻按【东西通行】按钮后,表示发生B类紧急情况需进行应急处理,交通信号灯南北方向强制禁行(亮红灯),东西方向强制通行(绿灯亮)疏通车流,四个方向倒计时一直显示99秒,如图5.5所示。
图5.5南北通行状态显示结果
5.1.3红绿灯状态转换过程
S1:
东西通行,南北