单片机交通灯设计论文.docx
《单片机交通灯设计论文.docx》由会员分享,可在线阅读,更多相关《单片机交通灯设计论文.docx(24页珍藏版)》请在冰豆网上搜索。
单片机交通灯设计论文
引言
在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时也带动着传统控制的日新月异更新。
在自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机AT89S52为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P2口设置红、绿灯燃亮时间的功能;显示时间直接通过单片机的P0、P3口输出,系统实用性强、操作简单、扩展性强。
目录
引言1
摘要2
目录3
一设计要求4
1.基本要求4
2.创新部分4
二交通管理的方案论证4
三总体方案设计5
1.系统框图5
2.工作原理5
3.计时控制方案6
4.显示控制方案6
四芯片的选择与简介7
1.MSC-51芯片资源简介7
2.单片机的引脚8
3.89S51单机的电源线9
4.89S51单片机的外接晶体引脚9
5.89S51单片机的控制线9
6.89S51单片机复位方式10
五系统电路设计11
1.电路原理图11
2.电源电路11
3.单片机最小系统12
4.显示部分12
5.信号灯部分13
六系统软件设计14
1.定时1秒的方法14
2.定时器初值计算14
3.主程序模块14
4.中断服务程序模块15
5.显示程序模块16
七结论17
八致谢18
九参考文献19
附录1:
程序清单20
一设计要求
1.基本要求
(1)运用所学的知识设计一个交通灯控制系统。
(2)上电的时候南北方向的红灯亮25秒;东西方向的绿灯亮20秒,绿灯秒闪2
秒,黄灯秒闪3秒。
再接下来东西方向的红灯亮25秒;南北方向的绿灯亮20秒,绿灯秒闪2秒,黄灯秒闪3秒。
如此循环。
2.创新部分
(1)各种信号灯所亮的时间由数码管显示出来。
(2)在允许加器件的情况下实现在上电时南北方向和东西方向显示不一样的时
间。
二交通管理的方案论证
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
设东西道比南北道的车流量大,指示灯燃亮的方案如表2。
60S
5S
80S
5S
……
东西道
红灯亮
黄灯亮
绿灯亮
黄灯亮
……
南北道
绿灯亮
黄灯亮
红灯亮
黄灯亮
……
表2说明:
(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。
时间为60秒。
(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。
时间为80秒。
东西方向车流大通行时间长。
(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。
(5)此表可根据车流量动态设定红绿灯初始值。
三总体方案设计
1.系统框图
交通灯控制的总体设计框图如图2.1所示。
图2.1
2.工作原理
由软件设置交通灯的初始时间,南北方向和东西方向各25秒,数码管的段码用不同的口线,东西方向的是用的P0口,南北的使用P3口,用单片机来控制各种信号灯的燃亮时间,通过单片机的P2口控制。
3.计时控制方案
利用MCS-51内部的定时器/计数器进行定时,配合软件延时实现到计时。
该方案节省硬件成本,切能够使读者在定时器/计数器的使用、中断及程序设计方面得到锻炼与提高,
4.显示控制方案
显示分为静态示和动态显示静态显示由于占用较多的接口,在单片机设计中常采用串行扩展来完成。
该方案占用接口资源多,显示亮度由保证,但硬件开销大,电路复杂,信息刷新速度慢,实用于并行接口资源较少以及对显示没有要求的场合。
LED动态显示硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,在该系统中由于单片机除了扫描89S51芯片外没有太多的实时测控任务,故选用动态扫描方式。
四芯片的选择与简介
1.MSC-51芯片资源简介
89S51是MCS-51系列单片机的典型产品,我们就这一代表性的机型进行系统的讲解。
89S51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
图3.1单片机内部结构示意图
(1)中央处理器
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
(2)数据存储器(RAM)
89S51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
(3)程序存储器(ROM)
89S51共有4KB掩膜ROM,最大可扩展64K字节,用于存放用户程序,原始数据或表格。
(4)定时/计数器:
89S51有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
(5)并行输入输出(I/O)口:
89S51共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
(6)中断系统
89S51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
2.单片机的引脚
89S51单片机内部总线是单总线结构,即数据总线和地址总线是公用的.89S51有40条引脚,与其他51系列单片机引脚是兼容的.这40条引脚可分为I/O接口线、电源线、控制线、外接晶体线4部分.89S51单片机为双列直插式封装结构,如图3.2所示.
图3.289S51引脚分配图
3.89S51单机的电源线
(1)VCC:
+5V电源线。
电源线
(2)GND:
接地线。
4.89S51单片机的外接晶体引脚
(1)XTAL1:
片内振荡器反相放大器的输入端和内部时钟工作的输入端。
采用内部振荡器时,它接外部石英晶体和微调电容的一个引脚。
(2)XTAL2:
片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端。
采用外部振荡器时,该引脚悬空。
外接晶体引脚。
5.89S51单片机的控制线
(1)RST:
复位输入端,高电平有效。
(2)ALE/PROG:
地址锁存允许/编程线。
(3)PSEN:
外部程序存储器的读选通线。
(4)EA/Vpp:
片外ROM允许访问端/编程电源端。
6.89S51单片机复位方式
单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态,在这种情况下都需要复位.复位的作用是使中央处理器CPU以及其他功能部件都恢复到一个确定的初始状态,并从这个状态重新开始工作.
89S51单片机的复位靠外部电路实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位.复位后,PC程序计数器的内容为0000H,片内RAM中内容不变.复位电路一般有上电复位、手动开关复位和自动复位电路3种,如图3.3所示.
a.上电复位电路b.手动复位电路c.自动复位电路
图3.3单片机复位电路
五系统电路设计
1.电路原理图
图3.2
2.电源电路
采用经市电变压,稳压的稳压电源电路图如图5.1所示
图5.1电源电路
220V市电经过降压后得到12V交流电,经二极管整流成脉动直流电,经过电容滤波后再又经过LM7805稳压得到5V的直流电供系统工作,后面的发光二极管是起一个电源指示的作用,470UF的电容是起一个再次滤波的作用。
3.单片机最小系统
图5.2.1单片机最小系统
单片机最小系统以89c51为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求.89c51单片机系列是在MCS-51系列的基础上发展起来的,是当前8位单片机的典型代表,采用CHMOS工艺,即互补金属氧化物的HMOS工艺,CHMOS是CMOS和HMOS的结合,具有HMOS高速度和高密度的特点,还具有CMOS低功耗的特点.
时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为12MHz的晶振,一个机器周期为1us,C1,C2为30pF。
复位电路分为上电自动复位和按键手动复位,RST引脚是复位信号的输入端,复位信号是高电平有效.上电自动复位通过电容C3和电阻R2来实现,按键手动复位是图中复位键来实现的。
4.显示部分
因为系统要求南北和东西方向的信号灯时间不一样,所以就利用单片机的p0和p3口来做数码管的段码驱动,东西方向和南北方向的位线可以公共来使用,可以节约单片机的口线。
数码管可以使用共阴数码管,数码管的每段的电流是10毫安。
电路图如5.3所示
图5.3
5.信号灯部分
本设计利用单片机的p2口来驱动和控制各种信号灯的燃亮和燃亮时间,在实际中,交通灯的信号灯需要用高电压控制,在这里我们只是模拟一下它的控制信号,所以我们就只用单片机的信号引脚直接来控制发光二极管,电路图见图5.4。
图5.4
六系统软件设计
1.定时1秒的方法
定时方法我们采用软硬件结合的方法,在主程序中设定一个初值为20的软件计数器使定时器0工作于方式1定时50毫秒,这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。
为零表示1秒已到。
2.定时器初值计算
定时器工作时必须给计数器送初值,将这个值送到TH和TL中。
他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此工作于方式1,定时器为16位计数器其定时时间由下式计算:
定时时间=(216-X)×振荡周期×12(或)
X=216-定时时间/振荡周期×12
式中x为T0的初始值,该值和计数器工作方式有关。
如单片机的主脉冲频率为12MHZ ,经过12分频
方式0 定时时间=213 ×1微秒=8.192毫秒
方式1 定时时间=216×1微秒=65.536毫秒
秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题,定时器需定时50毫秒,故T0工作于方式1,定时20次,就可定时一秒。
3.主程序模块
主程序初始化和按键控制,首先将时间、中断、次数、和显示分别进行初始化,然后启动定时器对时间进行判断,将时间送数据缓冲区,调用显示程序,同时扫描按键程序,用无条件跳转指令返回,再调用显示程序,如此周而复始的循环,如图4.1所示
4.中断服务程序模块
进入中断程序后,先保护现场,判断一秒钟到了吗?
如果没有到将定时器重装初值恢复现场,返回主程序,如果一秒钟到了,将软件计数器重初值;判断指示灯循环显示完了吗?
如果没完,将保地址重新送入程序计数器中,然后再查表下一地址,显示下一组指示灯状态和显示时间,保存下一组程序数据地址,将定时器重装初值,恢复现场,返回主程序,查表首地址,查时间地址,保存下一地址,将定时器重装初值,恢复现场,返回主程序。
同时一秒到了应先判断个位是否为0,如果个位是0,判断十位是不是0,如果十位也是0,判断交通灯是否安黄、绿、红的顺序循环完必,如果没循环完应查下一组数据继续循环,如果循环完必,应查表首地址,周而复始的循环,如果十位不是0,应将十位先减1,个位送9,然后返回,再进行中断定时一秒,然后再判断,如果个位不是0,应将个位减1,将定时器重装初值,恢复现场。
重新周而复始的循环,如图4.2所示。
图4.2中断程序流程图
5.显示程序模块
显示程序采用动态显示,由位码控制那一个数码管显示,由段码控制数码管显示什么数值,根据中断程序显示时间来查表显示数值,从第一位到第四位逐个点亮,同时每显示一位判断一次四位显示完了吗?
没有显示完进行显示下一位,显示完了从头开始再循环。
七结论
本系统就是充分利用了AT89S52芯片的I/O引角。
系统统采用MSC-51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P2口设置红、绿灯燃亮时间的功能;p2口和p3口外接数码管来显示各个信号灯的时间。
系统设计简便、实用性强、操作简单、程序设计简便。
系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。
这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现
通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
八致谢
本课题在选题及研究过程中得到郭继红老师的悉心指导。
郭老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。
郭老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道。
对郭老师的感激之情是无法用言语表达的。
通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
我在指导老师郭老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,并对当前电子领域的研究状况和发展方向有了一定的了解,这对我今后进一步学习单片机方面的知识有极大的帮助。
在此,我忠心感谢郭继红指导和支持。
在未来的工作和学习中,我将以更好的成绩来回报老师。
在此,我还要感谢在一起愉快的度过大学生生活的机电系全体老师和同门,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!
九参考文献
[1]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版,1996
[2]付家才.单片机控制工程实践技术[M].北京:
化学工业出版社,2004.5
[3]潘新民.微型计算机控制技术[M].北京:
人民邮电出版社,1999.9
[4]余锡存曹国华.单片机原理及接口技术[M].陕西:
西安电子科技大学出版社,2000.7
[5]雷丽文等.微机原理与接口技术[M].北京:
电子工业出版社,1997.2
[6]蒋万君.在论循环时序电路的简便设计[J].机电一体化,2005第5期
附录1:
程序清单
ORG0000H
LJMPSTART
ORG000BH
LJMPCTC0
ORG0030H
START:
MOVTMOD,#01H;定时器T0初始化
MOVTH0,#3CH;定时器T0初始化
MOVTL0,#0B0;定时器T0初始化
MOVR3,#20;定时器次数初始化
MOVR5,#03;循环次数初始化
MOV30H,#16H;数据缓冲区初始化
MOV31H,#16H;数据缓冲区初始化
MOV32H,#16H;数据缓冲区初始化
MOV33H,#16H;数据缓冲区初始化
SETBEA;总允许中断
SETBET0;T0允许中断
SETBTR0;启动T0
MOVDPTR,#TAB;置表格TAB起始值
CLRA
MOVCA,@A+DPTR
MOVP3,A;查表将结果送P3口
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR4,A;查表下一地址,结果送寄存器R4
MOV30H,A;将结果送30H
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR6,A;查表下一地址,将结果送R6
MOV31H,A;将结果送31H
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR7,A;查表下一地址,将结果送R7
MOV32H,A;将结果送32H
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR2,A;查表下一地址,将结果送R7
MOV33H,A;将结果送32H
INCDPTR
MOV50H,DPH;将下一地址送50H和51H
MOV51H,DPL
LOOP:
LCALLDISPLAY;调用显示程序
JBP1.0,LOOP1;K1键未按下,转LOOP1
LCALLDELAY1;延时10ms消除抖动
JBP1.0,LOOP1;K1键未按下,转LOOP1
LOOP2JNBP1.0,LOOP2;K1键按下,顺序执行K1键功能
MOVA,P0
MOVP0,#11H;送11H到P0口,使两个方向的灯都亮红灯
CLRTR0;定时器停止计数
MOV30H,#16H
MOV31H,#16H
MOV32H,#16H
MOV33H,#16H
ANJIAN:
JBP1.1,LOOP;K2键未按下,转LOOP
LCALLDELAY;延时10ms消除抖动
JBP1.1,LOOP;K2键未按下,转LOOP
L2:
JNBP1.1,L2;K2键按下,顺序执行K2键功能
SETBTR0;重新启动定时器
MOVP0,A;将状态送P0口
LJMPLOOP
CTCO:
PUSHACC;保护现场
PUSHPSW
DJNZ:
R3,NEXT2;定时器一秒未到转NEXT2
MOVR3,#20;定时一秒到,送20到R3
MOVA,R4
CJNEA,#0FF,L15;(主干道)判断个位,个位不等0,转L15
MOVA,R6;个位等0顺续执行
CJNEA,#0FFH,L16;判断十位,十位不等0,转L16
LJMPL17;十位等0,转L17
L16:
DECR6;十位减1
MOVR4,#09;个位送9
LJMPL8
L15:
DJNZR4,L8;个位不为0时,个位减1
L17;DJNZR5,LL1;未循环完,转LL1
MOVR5,#05;循环寄存器重装初值
MOVDPTR,#TAB1;将TAB1首地址送DPTR
LJMPLL2
L8:
MOVA,R7
CJNEA,#0FFH,L11;(直干道)判断个位,个位不等0,转L11
MOVA,R2;个位等0顺续执行
CJNEA,#0FFH,L18;判断十位,十位不等0,转L18
LJMPL18
L12:
DECR2;十位减1
MOVR7,#09;个位送9
LJMPNEXT1
L11:
DJNZR7,NEXT1;个位不为0时,个位减1
L18:
DJNZR5,LL1;未循环完,转LL1
MOVR5,#05;循环寄存器重装初值
MOVDPTR,#TAB1;将TAB1首地址送DPTR
LJMPLL2
LL1:
MOVDPL,50H;重保存地址送DPTR
MOVDPH,51H
LL2:
CLRA
MOVCA,@A+DPTR
MOVP3,A;查表将结果送P3口
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR4,A;查表下一地址,结果送寄存器R4
MOV30H,A;将结果送30H
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR6,A;查表下一地址,结果送寄存器R6
MOV31H,A;将结果送31H
INCDPTR
CLTA
MOVCA,@A+DPTR
MOVR7,A;查表下一地址,结果送寄存器R6
MOV32H,A;将结果送31H
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR2,A;查表下一地址,结果送寄存器R6
MOV33H,A;将结果送33H
INCDPTR
MOV50H,DPH;重保存地址送DPTR
MOV51H,DPL
NEXT1:
MOV30H,R4
MOV31H,R6
MOV32H,R7
MOV33H,R2
NEXT2:
MOVTH0,#3C