基于单片机的模拟交通灯控制系统设计.docx
《基于单片机的模拟交通灯控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的模拟交通灯控制系统设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机的模拟交通灯控制系统设计
山东职业学院
毕业设计(论文)
题目:
模拟交通灯控制系统设计
系别:
信息工程系
专业:
计算机应用技术
班级:
计应0932
学生姓名:
指导教师:
完成日期:
2012年5月
山东职业学院毕业设计(论文)任务书
班级
计应0932
学生姓名
指导教师
设计(论文)题目
模拟交通灯控制系统设计
主要
研究
内容
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
主要技
术指标
或研究
目标
通过毕业设计,开发一个模拟的交通灯控制系统;并完成一份规范、完整的毕业设计任务说明书。
一、交通灯控制系统功能指标
1、初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。
延时10s后东西路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车。
延时10s后,南北路口的绿灯熄灭,黄灯开始闪耀。
闪耀若干次后,再切换到东西路口方向。
重复以上过程。
2、能够实现12个灯轮流亮,并且能够切换到4个路口黄灯同时闪烁。
二、开发过程指标
1、需求分析:
(1)任务要求:
对设计题目、设计目的和设计要求有充分了解。
(2)分析研究:
(A)收集资料、调查研究:
围绕课题收集有关的资料,查阅有关的文献及技术参数,收集有关的数据,并对用户的实际需求等进行调研,以能对所设计课题的功能和性能有全面和深入的了解。
(B)可行性分析:
学生在熟悉课题、调研、收集资料和数据的基础上,对设计课题进行可行性分析并形成相应的文档。
(C)数据流程图:
根据课题分析画出逻辑系统的图形表示。
2、系统结构设计:
(1)设计思想分析
(2)系统总流程设计,绘制结构总流程图(3)设计系统的主要界面
3、详细设计:
4、
(1)绘制Protel电路图
(2)按照硬件图在电路板上焊接好元器件,要求元器件布局合理(3)检查每部分硬件电路是否正常工作(4)设计模拟交通灯程序的程序流程图(5)编写模拟交通灯控制程序清单,通过仿真系统调试使程序具备要求功能。
5、系统实施、调试阶段:
(1)程序固化和调试。
(2)演示系统的制作
基本
要求
题目:
模拟交通灯的控制系统实现
工具要求:
单片机仿真实验箱,编程器擦除器,焊接工具等
要求撰写毕业设计任务说明书。
设计任务说明书要求要求观点明确,文字精炼。
主要参
考资料
及文献
[1]叶挺秀.应用电子学[M].杭州:
浙江大学出版社,1994
[2]朱承高.电工及电子技术手册[M].北京:
高等教育出版社,1990
[3]阎石.数字电子技术基础(第三版)[M].北京:
高等教育出版社,1989
[4]周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例[M].北京:
电子工业出版社,2006
[5]李朝青.单片机原理及接口技术(第三版)[M].北京:
北京航空航天大学出版社,2005
摘 要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时也带动着传统控制的日新月异更新。
在自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机AT89S52为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P2口设置红、绿灯燃亮时间的功能;显示时间直接通过单片机的P0、P3口输出,系统实用性强、操作简单、扩展性强。
关键词:
单片机 交通灯 控制器
第一章引言
当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!
电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。
左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。
红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!
第二章概要设计
设计思路
(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。
(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。
(3)进行显示电路,灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。
(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。
本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:
初始东西绿灯亮,南北红灯亮,东西方向通车。
延时27s,东西路口绿灯熄灭,黄灯闪烁3次。
黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。
当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。
当事故处理完毕(再次按中断键),重新按上述方式工作。
当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。
利用ProteusSP3仿真软件按下列要求绘制仿真实例
用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯
用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码
P3^1、P3^2、P3^4~~~P3^7控制数码管的位选
P2^0~~~P2^4接收中断信号并反馈给INT0接口进行中断处理
图2-1总体设计框图
单片机交通控制系统方案的比较、设计与论证
2.2.1电源提供方案
为使模块稳定工作,须有可靠电源。
因此考虑了两种电源方案:
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟
电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,
节约成本;缺点是输出功率不高。
综上所述,我选择第二种方案。
2.2.2显示界面方案
该系统要求完成倒计时功能。
基于上述原因,我考虑了二种方案:
方案一:
采用数码管显示。
这种方案只显示有限的符号和数码字符,简单,方便。
方案二:
采用点阵式LED显示。
这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
综上所述,我选择第一种方案。
2.2.3输入方案:
题目要求系统能调节灯亮时间,并可处理紧急情况,我研究了两种方案:
方案一:
采用8155扩展I/O口及键盘,显示等。
该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。
若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在I/O口线上接上按键开关。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
第三章硬件设计
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。
循环电路设计
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
89cs51单片机概述
MCS-51单片机内部结构:
89CS51是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
下图是80C51的基本结构1:
图3-180C51的基本结构
89CS51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。
*中央处理器:
8位CPU,含布尔处理器;时钟电路;总线控制逻辑。
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。
*数据存储器(RAM):
128KB数据存储器(RAM,可再扩64KB);特殊功能寄存器SFR。
89CS51内部有128个8位用户数及存储单元和128个寄存器单元,他们是统一编址的,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户自定义的字型表。
*程序存储器(ROM):
4KB的程序存储器(ROM/EPROM/Flash,可扩至64KB);89CS51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
*定时/计数器(ROM):
89CS51有两个16位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。
*并行输入输出(I/O)口:
89CS51共有4组8位I/O口(P0、P1、P2或P3),用于对外数据传输。
*全双工串行号:
89CS51内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
*中断系统:
89CS51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,客满著不同的控制要求,并具有2级优先级别选择。
*时钟电路:
89CS51内置最高频率高达12Hz的时钟电路,用于产生整个单片机运行的脉冲时序,但89CS51单片继续外置震荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
下图是MCS-51系列单片机的内部结构示意图2。
图3-2 89C51单片机内部结构
3.1.280C51单片机的时钟
(1)振荡器和时钟电路
80C51内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。
80C51的时钟产生方法有以下两种。
a内部时钟方式
利用芯片内部的振荡器,然后在引脚XTALl和XTAL2两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。
外接晶振时,Cl和C2的值通常选择为30pF左右;Cl、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在~12MHz之间选择。
为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚XTALl和XTAL2靠近。
图3-2 80C51时钟电路接线方法
b外部时钟方式
此方式是利用外部振荡脉冲接入XTALl或XTAL2。
HMOS和CHMOS单片机外时钟信号接入方式不同。
表3-180C51单片机外部时钟接入方法
芯片类型
接线方法
XTAL1
XTAL2
HMOS
接地
接片外时钟脉输入端(引脚需接上拉电阻)
CHMOS
接片外时钟脉冲输入端
悬空
MCS-51系统的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用
图3-2MCS-51系统的引脚配置
8951的抚慰方式可以自动复位,也可以是手动复位。
除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机内部RAM的数据不丢失。
在编程时,EA/Vpp脚还需加上21V的编程电压。
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。
现从各功能模块的实现逐个进行分析探讨。
80C51单片机的的封装和引脚
80C51系列单片机采用双列直插式(DIP).QFP44(QuadFlatPack)和LCC(LeadedChipCaiier)形式封装。
这里仅介绍常用的总线型DIP40封装。
如图3-4所示。
40个引脚按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚
(1)电源:
VCC-芯片电源,接+5V;VSS-接地端;
图3-480C51单片机的的封装和引脚
(2)时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
(3)控制线:
控制线共有4根,
ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
ALE功能:
用来锁存P0口送出的低8位地址
PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
PSEN:
外ROM读选通信号。
RST/VPD:
复位/备用电源。
RST(Reset)功能:
复位信号输入端。
VPD功能:
在Vcc掉电情况下,接备用电源。
EA/Vpp:
内外ROM选择/片内EPROM编程电源。
EA功能:
内外ROM选择端。
Vpp功能:
片内EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
(4)I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
图3-5上电复位电路图3-6上电+按键复位电路
复位状态:
初始复位不改变RAM(包括工作寄存器R0~R7)的状态,复位后80C51片内各特殊功能寄存器的状态如表所示,表中“x”为不定数。
寄存器
复位状态
寄存器
复位状态
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TH0
00H
BSW
00H
TL0
00H
SP
07H
TH1
00H
DPTR
0000H
TL0
00H
P0~P3
FFH
SCON
00H
IP
xx000000B
SBUF
xxxxxxxxB
IE
0x000000B
PCON
0xxx0000B
表3-2复位后的内部特殊功能寄存器状态
复位时,ALE和
成输入状态,即ALE=
=1,片内RAM不受复位影响。
复位后,P0~P3口输出高电平且使这些双向口皆处于输入状态,并将07H写入堆栈指针SP,同时将PC和其余专用寄存器清0。
此时,单片机从起始地址0000H开始重新执行程序。
所以,单片机运行出错或进入死循环时,可使其复位后重新运行。
LED循环说明
东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。
红灯禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。
25s
3s
2s
25s
3s
2s
东西通道
红灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
南北通道
绿灯亮
绿灯闪
黄灯亮
红灯亮
红灯亮
红灯亮
上表说明东西路口哈珀能够灯亮,南北路口绿灯亮,同时开始25s倒计时。
25s倒计时结束后开始5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。
完成一次这样的循环要30s。
30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。
电路图如图7所示。
图3-7循环计时电路图
第四章系统软件设计
硬件平台结构一旦确定,大的功能框架即形成。
软件在硬件平台上构筑,完成各部分硬件的控制和协调。
系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。
因此,软件是本系统的灵魂。
软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。
同时,对软件进行全面测试也是检验错误排除故障的重要手段。
程序流程图:
软件总体设计及流程图见图4-1,主要完成各部分的软件控制和协调。
其流程图如图4-1所示。
图4-1程序流程图
程序实现
如图3-7所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。
我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。
至于循环需要软件控制,程序如下。
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲1
TEMPEQU44H;显示码缓冲2
LED_G1BIT;东西路口绿灯
LED_Y1BIT;东西路口黄灯
LED_R1BIT;东西路口红灯
LED_G2BIT;南北路口绿灯
LED_Y2BIT;南北路口黄灯
LED_R2BIT;南北路口红灯
ORG0000H
LJMPSTART
ORG0003H
LJMPINTO0
ORG0100H
START:
MOVTMOD,#01H置T0工作方式1
MOVTH0,#3CH
MOVTLO,#0B0H
CLRTFO
SETBTRO启动T0
SETBEX0
SETBPX0设置外中断0高优先级
SETBEA
LOOP:
MOVR2,#20置1s计数初值
MOVR3,#20红灯亮20S
MOVSECOND1,#25东西路口计时显示初值25s
MOVSECOND2,#25南北路口计时显示初值25s
LCALLDISPLAY
LCALLSTATEL调用状态1
WAIT1:
JNBTF0,WAIT1查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,WAIT1判断1s到否?
未到继续状态1
MOVR2,#20置50ms计数初值
DECSECIND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT1状态1维持20s
MOVR2,#5置50ms计数初值
MOVR3,#3绿灯闪烁3s
MOVR4,#4闪烁间隔200ms
MOVSECOND1,#5东西路口计时显示初值5s
MOVSECOND2,#5南北路口计时显示初值5s
LCALLDISPLAY
WAIT2:
LCALLSTATE2调用状态2
JNBTF0,WAIT2查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR4,WAIT2判断200ms到否?
未到继续状态2
CPLLED_G1东西绿灯闪烁
MOVR4,#4闪烁200ms
DJNZR2,WAIT2判断1s到否?
未到继续状态2
MOVR2,#5置50ma计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT2状态2维持3s
MOVR2,#20置50ms计数初值
MOVR3,#2黄灯闪烁2s
MOVSECOND1,#2东西路口计时显示初值2s
MOVSECOND2,#2南北路口计时显示初值2s
LCALLDISPLAY
WAIT3:
LCALLSTATE3调用状态3
JNBTF0,#3CH查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT3判断1s到否?
未到继续状态3
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT3状态3维持2s
MOVR2,#20置50ms计数初值
MOVR3,#20红灯闪烁20s
MOVSECOND1,#25东西路口计时显示初值25s
MOVSECOND2,#25南北路口计时显示初值25s
LCALLDISPLAY
WAIT4:
LCALLSTATE4调用状态4
JNBTF0,WAIT4查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR