《基于MSC51系列单片机的交通灯控制器毕业论文.doc》由会员分享,可在线阅读,更多相关《基于MSC51系列单片机的交通灯控制器毕业论文.doc(25页珍藏版)》请在三一办公上搜索。
1、基于MSC-51系列单片机的交通灯控制器中文摘要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片80C51为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间
2、的功能;红绿灯循环点亮,倒计时剩秒时黄灯闪烁警示。本系统实用性强、操作简单、扩展功能强。关键词:交通灯 单片机 MSC-51 计时 1单片机控制交通灯的背景 1.1交通灯的历史19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大厦前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是城市街道的第一盏信号灯。在灯的脚下,一名手持长杆的警察随
3、心所欲地牵动皮带转换提灯的颜色。后来在信号灯的中心装上煤气灯罩 ,它的前面有两块红、绿玻璃交替遮挡。不幸的是只面世23天的煤气灯突然爆炸自灭,使一位正在值勤的警察也因此断送了性命。 从此,城市的交通信号灯被取缔了。直到1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。1.2单片机简介1.2.1单片机的发展历程单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。每个子
4、系列有诺干中型号。51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。改进后的型号更加省电。52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。我们现在使用比较的多的是AT89C51/AT89s51等。 通常,单片机由单块集成电路芯片构
5、成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。1.2.2单片机的特点(1)性价比高,开发周期短,易于产品化,(2)集成度高,可靠性好,抗干扰性强,(3)功能完善,接口多样,(4)低功耗、低电压一般电源供电电压在53V范围内单片机都能正常工作,供电的下限可达12V。(5)总线多样,易于扩展单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应
6、用系统。外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。1.2.3 MCS51单片机内部结构有8大部分.一个8 位的中央处理器 CPU(又称为微处理器)中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。有 128字节 的片内数据存储器RAM。8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,
7、可存放读写的数据,运算的中间结果或用户定义的字型表。.4KB片内 程序存储器ROM或EPROM8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据.片内 18个 特殊功能寄存器(SFR .4个8位 的并行输入输出I/O口(PIO)8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输P0口 P0.0P0.7 输入与输出 分时的传送地址低8位与数据线P1口 P1.0P1.7 输入与输出 无第二功能P2口 P2.0P2.7 输入与输出 传送地址的高8位P3口 P3.0P3.7 输入与输出 P3.0RXD:串行口输入端P3.1TXD:串行口输出端P3.1TXD:串
8、行口输出端P3.2:外部中断0中断请求输入端P3.3:外部中断1中断请求输入端P3.4T0:定时器/计数器0外部输入端P3.5T1:定时器/计数器1外部输入端P3.6:外部数据存储器写选通信号P3.7:外部数据存储器读选通信号.1个 串行口I/O(SIO/UART)完成单片机与其他微机的之间的串行通信.2/3个16位 定时器/计数器(TIMER/COUNTER).可处理 5个中断源,两级可程序优先级的中断系统其中含有MCS-51指令集含 111条指令,按照指令操作功能话费有五类:数据传送指令(28)算术运算指令(24)逻辑运算及转移指令(25)控制转移指令(22)位操作指令(12)2单片机控制
9、交通系统总体设计2.1单片机交通控制系统通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状1,周而复始,即如图(图2-1)所示:直至状态6然后循环至状态1,通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:图2-1交通状态东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时2秒。此状
10、态下,除了已经正在通行中的其他所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时2秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系如下:表2-1交通状态及红绿灯状态状态1状态3状态4状态6东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路
11、口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表2.1所示。说明:0表示灭,1表示亮。2.2倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。2.3单片机交通控制系统的基本构成及原理单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指
12、挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了违规检测电路和车流量检测电路为单片机采集数据,单片机对此进行具体处理,及时调整控制指挥,为了超越视觉指挥的局限性,同时接上蜂鸣器,在听觉上加强了指挥提醒作用。: 3系统硬件电路的设计3.1系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块。3.1.1系统硬件电路构成本系统以单片机为核心,。其中P0,P1,用于送显两片LED数码管,P2用于
13、控制红绿黄发光二极管,REST引脚接上复位电路,P3.6接南北时间设置键S,P3.7接自动模式选择返回键F。3.1.2系统工作原理系统上电或手动复位之后,系统等待模式选择设置键按下,模式分两种:红绿灯时间自动和红绿灯时间设置。若此时F键按下,则设置为自动模式,若此时按下的是S键,则设置为时间设置模式,依次按S若干次,J键若干次可设置好两个方向的红绿灯时间,再按F键确认。其实这个过程就是将存储时间值的寄存器进行设置,以及标志是否要进行车流量检测及调整。接下来,系统必须先显示状态灯及LED数码管,将状态码值送显P2口,将要显示的时间值的个位和十位分别送显P0和P1口,在此同时以50ms为周期,用软
14、件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,图3-1基于单片机的交通灯控制系统电路图3.1.3LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起,如图(图3-3)所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以
15、控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。图3-3 LED数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a全亮显示为,采用共阳极连接驱动代码,代码表如下表(表3-1)所示。表3-1 驱动代码表显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H910010000
16、90H相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用8个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图(图3-4)所示,其中A,B分别是P0,P1的网络标号。图3-4 LED连接图3.2发光二极管根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图(
17、图3-6)所示:图3-6 信号灯的连接4系统软件程序的设计4.1程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序,消抖动延时程序,次状态判断及处理程序,紧停或违规判断程序,中断服务子程序,车流量计数程序,红绿灯时间调整程序等。整个软件程序方面主要分两大部分:按键处理程序和50ms扫描程序。流程图如图(图4-1)所示。 图4-1系统总的流程图4.2子程序模块设计4.2.1按键扫描程序首先程序不断扫描模式设置键,分别记为:S键,J键,F键对应端口的3.6,P3.2,P3.7,低电平有效,按键顺序是指定的,若直接按F键,则为自动调整模式,然后进入下一程
18、序;若先按S键,再按J键,F键则为设置时间模式,然后进入下一程序。程序的开始要判断是否有键按下,可以不断将S键值和F键值相与,与值为1则表示没有键按下,为0则表示有键按下,程序如下:K1: MOV C, P0.0 ANL C, P0.1JB C, K1 接下来要判断具体是那个键,若为F键,则将自动标志位置1,进入下一程序,否则为S键,则表示设置南北绿灯时间,用R0存值,按1下加1,同时还需判断此时J键是否按下,若按下,则表示南北绿灯时间设置完毕,开始设置东西绿灯时间,用R1存值,同样按1下加1 ,同时判断此时F键是否按下,若按下,则表示时间设置完毕,进入下一程序。在这个过程中,S,J键的计数是
19、循环的,从初值20开始,加到40则循环回到20。如判断S键程序如下:CJNZ R0, #40, V1MOV R0, #20V1: INC R04.2.2状态灯显示及判断在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。H_GREEN BIT P2.2H_YELLOW BIT P2.3L_RED BIT P2.4L_GREEN BIT P2.5L_YELLOW BIT P2.6共有4钟状态:东西红灯亮,南北绿灯亮(11011101/DDH);东西红灯亮,南北黄灯亮(10111101/BDH);东西绿灯亮,南北红
20、灯亮(11101101/EDH);东西黄灯亮,南北红灯亮(11100111/E7H)。括号中是P2端口8个引脚值P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0以及对应的十六进制码。在用于显示发光二极管时,直接由MOV指令将十六进制码送入P2口。刚才的4个状态是依次变换的,这就要涉及到状态的判断和衔接了。先把P2端口的值与所有的4个状态码比较,若相同则判断成功当前状态,再把下一状态的状态码送显P2即可。程序如下:MOV A, P2CJNZ A, #0DDH,D1MOV P2, #BDHD1: CJNZ A, BDH,D2MOV P2, #EDHD2: CJNZ A
21、, #EDH,D3MOV P2, #E7HD3: CJNZ A, #E7H,YMOV R2, #DDH4.2.3 LED倒计时显示LED计时每1秒都要刷新1次,那么计时满1秒时就要将存储时间的工作寄存器R4减1,然后送入LED显示程序中显示。下面要将时间数据R4的十位,个位分开送显P1,P0端口,首先将R4除以10,整数即十位放在A中,余数即个位放在B中,设置7段LED显示数据的数据表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。具体程序如下:MOV A, R4 MOV B, #10DIV A, BMOV DPTR, #LED
22、MAPMOVC A, A+DPTRMOV P1, AMOV A, BMOVC A, A+DPTRMOV P3, ALEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH4.2.4车流量检测中断服务子程序车流量检测是用外部中断引脚P3.3即INT1捕获到一个低电平,则进入相应的中断服务子程序,在子程序中,用R5计南北向车流量,用R6计东西向车流量,设车向标志位为01H,判断车向,程序如下:JNB 01H, U INC R5U: INC R64.2.5紧停及违规中断服务子程序紧停按键和违规信号传感器均连接到外部中断引脚P3.2,即INT0捕获到一个低电
23、平,则进入该中断,中断程序中先把蜂鸣器P3.4端口置0,启动蜂鸣。并且等待恢复键F键P3.7按下,然后关闭蜂鸣返回。INT0: SETB P0.5 JB P0.0, $LCALL DELAYCLR P0.5RETI4.2.6红绿灯时间调整程序根据红绿灯时间调整原理,一个周期下来,R5,R6中分别存储着南北,东西的车流量,接下来求单位时间车流量,此时南北向时间,东西向时间分别存储在R0,R1中,则两个方向的流量比例为(R5/R0)/(R6/R1)=(R5*R1)(R6*R0),显然该比例是1左右带小数的值,然而单片机程序中只取整数,重要的数据信息就会丢失,所以本设计中首先将(R5*R1)乘以10
24、,比例就变为10左右的值。将该比例值放在A,然后进行时间调整。由于受到多方面的限制,时间调整在此只划定3个范围。比例0到0.7为一个范围,0.8到1.5为一个范围,1.5以上为一个范围。第一范围显然表明东西向交通严重,应将时间调长;第二范围表明两向相当,可设置一样的时间,第三范围表明南北向交通严重,应将该向时间调长。具体设置如下表(表4-1)表4-1 比例及调整时间南北与东西向比例00.70.81.51.5及以上调整南北向时间203040调整东西向时间403020由表可知,对应的时间调整也只有三种,分别是20,40;30,30;40,20.显然在实际应用中这样简单的处理难以尽如人意,但在此处,
25、本设计只是模拟大致的调整过程,以上要求的程序如下:CJNZ A, #7 M1M2: MOV R2, #20.MOV R1, #40SJMP OUTM1: JB C, M2CJNZ A, #15 N1N2: MOV R0, #30MOV R1, #30SJMP OUTN1: JB C, N2MOV R0, #40MOV R1, #20OUT: CLR R5CLR R6RET4.2.7消抖动程序利用程序执行一条指令的时间,再加上两次累减嵌套,程序如下:DELAY: MOV R2, #14H A1: MOV R7, #0FFHDJNZ R2, $DJNZ R7, A1RET4.2.8源程序:见附录A
26、参考文献l边海龙,孙永奎. 单片机开发与典型工程项目实例详解J.电子工业出版社,2008,(10):143-160.2王为青,邱文勋. 51单片机开发案例精选J.人民邮电出版社,2001,(5):45-47.3张鑫,华臻,陈书谦. 单片机原理及应用J.电子工业出版社,2008(5).4张洪润,张亚凡.单片机原理及应用J. 清华大学出版社,2005,(4).5黄智伟.凌阳单片机课程设计指导J. 北京航空航天大学出版社,2007,(6)6蒋辉平,周国雄. 基于Proteus的单片机系统设计与仿真实例M.机械工业出版社,2009.7张毅坤. 单片微型计算机原理及应用,M西安电子科技大学出版社 199
27、8 8余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,2000.79雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.10张萌单片机应用系统开发综合实例第二版清华大学出版社2005年11何立民单片机应用文集第一版北京航空航天大学出版社2004年12张一工现代电力电子技术原理与应用第一版科学出版社2002年13欧阳文ATMEL89系列单片机的原理与开发实践第一版中国电力出版社2007年14陈大钦 电子技术基础实验 M.北京:高等教育出版社 200415陈梓城 电子技术实训 M.北京:机械工业出版社 200316吴黎明 单片机原理及应用技术M.北京:科学出版社
28、 200317李学海 标准80C51单片机基础教程M.北京: 北京航空航天大学出版社 200618刘乐善 微型计算机接口技术及应用M.北京: 华中科技大学出版社 200419 陈炳权 曾庆六 EDA技术实用教程M.北京: 湘潭大学出版社 201020 先锋工作室. 单片机程序实例M.北京:清华大学出版社,2002.21 李伯成.基于MCS-51单片机的嵌入式系统的设计M.北京:电子工业出版社,附录AH_RED BIT P2.1 ;定义IO端口H_GREEN BIT P2.2H_YELLOW BIT P2.3L_RED BIT P2.4L_GREEN BIT P2.5L_YELLOW BIT P
29、2.6;主程序,选择设置红绿灯时间模式或自动调整模式ORG 0000HLJMP MAINORG 0003H ;中断入口LJMP INT0ORG 0030HMAIN: MOV R3, #20 ;用于嵌套50ms软件方法计时1sMOV R0, #20 ;预设值红绿灯时间MOV R1, #20CLR EX0K1: MOV C, P3.7 ;等待检测何种模式按键按下ANL C, P3.2JB C, K1JNB P3.7, F ;F键按下为自动模式,进入扫描K2: JNB P3.2, S ;S键按下并等待计数次数SJMP K2F: LCALL DELAYMOV R0, #30MOV R1, #30SET
30、B 00HSETB EASETB EX1SJMP STARTS: LCALL DELAYCJNZ R0, #40, V1MOV R0, #20V1: INC R0JNB P0.1, $JNB P3.6, J ;J键按下并等待计数次数SJMP K2J: LCALL DELAYCJNZ R1, #40, V2MOV R1, #20V2: INC R1JNB P3.6, $JNB P3.7, START ;设置完毕为设定时间模式,进入扫描JNB P3.6, JMOV P2, #0DDH ;预设信号灯状态,时间和车向MOV R4, R0SETB 01HSETB EX0;程序开始,进行每50ms扫描ST
31、ART: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HCLR TF0SETB TR0 ;开始50ms计时DJNZ R3, Y ;1s是否计时完毕MOV R3, #20DJNZ R4, Y ;本状态是否结束,并进行下一状态设置MOV A, P2CJNZ A, #0DDH,D1MOV P2, #BDHMOV R4, #5D1: CJNZ A, BDH,D2MOV P2, #EDHMOV R4, R1CLR 01HD2: CJNZ A, #EDH,D3MOV P2, #E7HMOV R4, #5JNB 00H, D3LCALL DATAD3: CJNZ A, #
32、E7H,YMOV R2, #DDHMOV R4, R0SETB 01HY: MOV A, R4 ;LED倒计时显示MOV B, #10DIV A, BMOB DPTR, #LEDMAPMOVC A, A+DPTRMOV P1, AMOV A, BMOVC A, A+DPTRMOV P0, ALEDMAP: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HJNB 00H, WAIT ;判断是否要计数车流量JB P3.3, WAIT ;判断是否有车经过WAIT: JNB TF0, WAIT ;50ms一次扫描完毕SJMP STARTINT1: JNB 01H,
33、U ;判断车向INC R5U: INC R6RETIINT0: SETB P3.4 ;中断服务子程序,闯红灯或紧停按键JB P3.7, $LCALL DELAYCLR P3.4RETIDATA: MOV A, R6 ;车流量数据处理及红绿灯时间调整MOV B, R0MUL A, BMOV R6, AMOV A , R5MOV B, R1MUL A, BMOV B, #10MUL A, BMOV B, R6DIV A, BCJNZ A, #7 M1M2: MOV R2, #20MOV R1, #40SJMP OUTM1: JB C, M2CJNZ A, #15 N1N2: MOV R0, #30
34、MOV R1, #30SJMP OUTN1: JB C, N2MOV R0, #40MOV R1, #20OUT: CLR R5CLR R6RETDELAY: MOV R2, #14H ;延时程序,用于按键消抖动A1: MOV R7, #0FFHDJNZ R2, $DJNZ R7, A1RETEND程序中部分端口说明:P2 状态灯P0 LED个位P1 LED十位P3.7 F键 自动调整模式/ 时间设置模式确认P3.2 S键 设置南北向通行时间P3.6 J键 设置东西向通行时间/ 紧停P3.3 车流量检测P3.2 红外对管P3.4 蜂鸣器R3 存20用于乘以50ms计时1sR4 暂存状态灯持续时间R0 存南北向通行时间R1 存东西向通行时间R5 计南北向车流量R6 计东西向车流量R2,R7 用于软件延时00H 自控标志位01H 车向标志位装 订 线