十字路口交通灯设计_第1页
十字路口交通灯设计_第2页
十字路口交通灯设计_第3页
十字路口交通灯设计_第4页
十字路口交通灯设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。通过三个星期的学习,本人对单片机的结构和功能已有了初步的了解和认识。单片机在交通控制中起到了举足轻重的作用,掌握了单片机的工作原理也就基本了解了交通灯的运做原理。作为一个学生,为了更好地掌握单片机的结构和功能,为了进一步加强自己的实践能力,本人设计了以下的一款交通灯。

目录前言……………………3目录……………………4一、毕业设计的要求和内容…………5二.硬件电路说明……6三.软件部分说明……11四.系统设计及总结……21附录一主要材料……22附录二原理图……23附录三PCB板型……24附录四3D效果图……25附录五流程图……26附录六源程序和注释说明…………27致谢……………………35参考文献…………………35

一、毕业设计的要求和内容1.1工作要求本次毕业设计,是针对实际要求,灵活应用所学知识,独立进行系统综合设计的过程,以达到巩固单片机基础知识、掌握单片机系统开发过程和提高动手实践能力的目的。1.2、技术要求某十字路口,如下图所示,设计一个十字路口交通灯信号控制器,指挥交通车的通行。要求如下:1)东西通道和南北通道交替通行,东西通道每次放行时间大于南北通道每次放行时间。2)绿灯亮表示可以通行,红灯亮表示禁止通行。3)每次绿灯变红灯时,绿灯先闪转变黄灯(此时另一干道上的红灯不变)。4)十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体要求东西通道、南北通道通行时间及黄灯亮的时间均以秒为单位作减计数。二.硬件电路说明2.1电路设计原理图见附录2.2电路工作原理本设计是以89S51为主控芯片,利用P1口控制74LS240(八反相缓冲器,线驱动器)驱动发光二极管模拟交通灯。倒计时显示部分采用串口实现。串口工作在方式0时通过外接移位寄存器74LLS164实现串并转换。需要显示的数据经RXD端输出经过74LS164串并转换输出到共阳极的LED数码管显示,利用T0定时器进行1S定时。2.389S51单片机介绍2.3关于74LS240由于单片机的驱动能力太弱所以给加了驱动电路有因为发光二极管驱动功率不大所以我选用了八反相缓冲器/8位三态门电路74LS240无锁存功能2.4介绍74LS164本设计采用164把串行口逐位输出的数据进行串并转换进而控制LED的显示2.5单片机最小系统2.6改进部位本设计添加了应急通行用按钮开关控制东西南北的应急通行信号其中东西方向接外中断0南北接外中断1。按一下按钮该方向通行另外方向停止按两下恢复原样。具体看原理图2.8框图状态持续时间/S东西方向南北方向绿黄红绿黄红11灭灭亮灭灭亮230亮灭灭灭灭亮33亮亮灭灭灭亮420灭灭亮亮亮灭53灭灭亮闪亮灭630亮灭灭灭灭亮循环三.软件部分说明3.1.1利用定时器定时1S定时/计数器的四种工作方式工作方式0:定时/计数器的工作方式0称之为13位定时/计数器方式。它由TL的低5位和TH的8位构成13位的计数器,此时TL的高3位不用。工作方式2:在工作方式2中,只有8位参与计数,而高8位是不参与计数的,用作预置数的存放,这样计数范围就小了,每当计数溢出,就会打开T0的高、低8位之间的开关,预置数就进入低8位。当然这是由硬件自动完成的,不需要我们去操心。通常工作方式2用于波特率发生器,对于这种用途,定时器就是为了提供一个时间基准,计数溢出后不需做任何的事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不能有任何的延迟,可见这个任务用这种工作方式来完成是最妙不过了。工作方式3:在这种工作方式下,T0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器工作方式;而TH0则只能作为定时器用,我们知道定时/计数器使用时需要有控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两个控制及溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记,如此一来T1不是标记、控制可用了吗?是的,在一般情况下,只有在T1以工作方式2运行时,才让T0工作于方式3。工作方式1:工作方式1是16位的定时/计数器方式,将TMOD的M1M0设为“01”即可,其他特性与工作方式0相同。3.1.2定时1S十字路口交通灯模拟控制器定时器采用工作方式1,先定时125MS,然后在定时中断程序中累加中断次数,8次为一秒,这样就可以起到定时1S的功能。工作方式由工作方式控制寄存器(TMOD)决定,FR寄存器TMOD用于2个定时器/计数器T1/T0的工作方式设定,各位的含义表示如下:GATE:门控位,定义T1/T0的启动方式,C/T-:定时/计数功能选择位。为“0”作定时器用;为“1”,作计数器用。M1M0:工作方式选择位。方式013位计数器方式116位计数器10方式2初值自动重装8位计数器11方式32个8位计数器,仅适用于T0十字路口交通灯模拟控制器设计采用6M晶振,因此定时125MS,可用下列语句实现。工作方式1是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。所以初始化定时器T0工作方式1,定时125MS的语句如下:MOVTMOD,#01MOVTH0,#3CHMOVTL0,#0B0H定时1S在定时器0中断程序中完成,即计数八次为1S。定时器中断初始化进入定时器0中断程序如下进入定时器0中断SETBEA;开中断定时是否到1SSETBET;定时器0允许中断定时是否到1SSETBTR;开始定时定时器定时1S的中断流程图定时时间减1计数值加1定时时间减1计数值加1定时不变出定时器0中断出定时器0中断3.2外中断程序对于外中断必须有中断的初始化程序、中断服务程序。中断的初始化步骤要使用中断则首先必须中断中断允许。硬件的初始化:设置引脚连接设置I/O口的输入输出。软件的初始化:设置中断寄存器,设置中断服务地址,清除中断标志,设置中断触发模式。使能中断。外中断是由外部原因引起的中断,有两个中断源,即外中断0和外中断1,中断请求信号由引脚P3.2和P3.3输入。外中断请求信号弹有两种方式,一是电平方式,二是脉冲方式,可通过有关控制位的定义进行规定。电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请示输入端采样到有效的低电平时,就会激活外部中断。脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端电平进行采样中,如前一次为高,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。定时器控制寄存器(TCON)外中断请求方式的控制位在定时控制寄存器TCON中的位(IT0)和(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时此寄存器中的位89(IE0)和(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清除。中断允许控制寄存器(IE)下面本文对有关控制位作说明:EA——中断允许总控制位。EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。.EX0(EX1)——外部中断允许控制。EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。.EX0(ET1)——定时/计数中断允许控制位。ET0(ET1)-0,禁止定时/计数中断。ET0(ET1)=1,允许外部中断。ET0(ET1)=1,允许定时/计数中断。.ES——串行中断允许控制位。ES=0,禁止串行中断。ES=1,允许串行中断。中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以EA位作为总中断控制位,以各中断挖掘位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止,整个中断都是禁止的。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。值得一提的是:单片机中断响应后还会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。3.2.4中断优先级控制寄存器(IP)MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别先级别由优先寄存器(IP)进行控制。.PX0——外中断0(INT0)优先级控制位。.PI0——定时中断0优先级控制位。.PX1——外中断1优先级控制位。.PT1——定时中断1优先级控制位。.PS——串行中断优先级控制位。控制位=0,优先级为低。控制位=1,优先级为高。中断优先级是为了中断嵌在服务的,控制原则为:低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。同级的中断已经响应,其他中断将被禁止。如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0-定时中断0-外中断1-定时中断1-串行中断。3.2.5中断控制寄存器的状态设置本例设计要采用定时器中断,外中断0,外中断1。定时器中断、外中断、串口中断控制如下,其中外中断0、1优先级最高,保证了应急通行的需求。 MOVSCON,#00H;工作于工作方式0,既移位寄存器状态SETBES;开总中断SETBET0;开定时器中断SETBTR0;启动T0定时器SETBIT0;外中断0为脉冲触发方式SETBIT1;外中断0为脉冲触发方式MOVIP,#05;外中断0,1为高优先级SETBEX0;开个中断0SETBEX1;开外中断1外中断程序逻辑流程进入外中断进入外中断标志位是否1标志位是否1否是复位指标志位,关外中断复位指标志位,关外中断开外中断出外中断开外中断出外中断3.3.串口工作方式设计3.3.1串口工作方式串口有4种方式:方式0、1、2、3,由串口控制寄存器SCON和PCON控制。0方式0同步移位寄存器1方式110位异步收发0方式211位异步收发1方式311位异步收发方式1:10位异步收发方式1下,串行口位10位通用异步接口。发送或接收数据信息为10位,包括1位起始位“0”、8位数据、1位停止“1”。方式1发送:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,启动发送器发送。发送完数据后,置中断标志T1=1,申请中断,通知CPU可以发送下一个数据。方式1接收:首先使REN=1,串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收数据,当接收完数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据。方式2:11位异步收发方式。发送或接收信息包括1位起始“0”、8位数据库位、1位可编程位、1位停止位“1”。方式2发送:发送前,先根据通信协议由软件包设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出数据。方式2接收:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置R1=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行接收发送来的信息。当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”,但不是发给本从机的,此时RI不置“1”,因而SBUF中接收的数据帧将丢失。方式3:11位异步收发。方式3为波特率可变的11位异步通信方式,除了波特率区别之外,其他方式都与方式2相同。方式0:在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率固定为“F/12”。串行数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端送出.这种方式常用于扩展I/O口,可以外接74165或者74164.方式0发送:当1个数据写入发送缓冲器SBUF时,串行口即把8位数据以F/12的波特率从RXD端口送出,发送完后将中断标志TI置“1”。方式0接收:REN是串行接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当接收到8位数据时,将中断标志RI置“1”。3.3.2十字路口交通灯模拟控制器串口设计本例设计串口若悬河工作于工作方式0,即同步移位寄存器状态MOVSCON,#00H;串口工作方式0传送数据语句如下:MOVDPTR,#SEGTABI;字形码0~9地址MOVA,DIS-LB;低位数据MOVCA,@A+DPTR;查表MOVSBUF,A;发送数据DL1:JNBTI,DLI;查询是否发送完一个字节CLRTI3.3.3关于字形编码根据各管的接线形式,可分成共阴极型和共阳极型。给LED数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。显示字型HGFEDCBA共阴极字形码共阳极字形码0001111110X3F0XC01000001100X060XF92010110110X5B0XA4301001111OX4F0XB04011001100X660X995011011010X6D0X926011111010X7D0X827000001110X070XF88011111110X7F0X809011111110X6FOX90

四、系统设计及总结通过这次的课程设计,让我受益匪浅,也让我了解和掌握了一些编程思想和对I/O口的使用和应用的条件的思考,对单片机的各个管脚功能的理解和掌握。实现了软件和硬件的有效结合,缺一不可。设计让我把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,更激发了我对专业知识的渴求,这些对我以后参加工作或者继续学习都会有很大的帮助和影响。 一个小小的单片机居然涵盖了如此之多输入输出端口不说还有显示部分用到中断串行口更使我对单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。而作为一位学生,在对交通灯的设计中,因知识和经验的不足,只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,敬请指正。但我会在以后的学习中逐渐去完善、巩固我的单片机知识。

附录一主要材料:印制电路板1块晶振6M1块普通电阻3个(由于数码管显示太暗我才用了360欧姆的)单片机89S511块按钮3个(我采用了外部中断0,1)电容3个(无极性)发光二极管6个(红黄绿各两个)7805稳5V的一个桥堆一个1000uf和10uf有极性插头一个数码管共阳两个变压器一个74LS164两个74LS240一个底座一个附录二原理图protel文件

附录三PCB板型一块

附录四3D效果图

附录五主程序流程图调用第0状态开定时器中断程序初始化T0调用第0状态开定时器中断程序初始化T0外中断准备每个状态大致一样之举了第一状态红黄绿状态红黄绿状态显示时间显示时间显定时中断时间减一第一种状态子程序显定时中断时间减一第一种状态子程序时间减一到0时间减一到0没有第二种状态子程序到否返回执行下一状态返回执行下一状态第三种状态子程序第三种状态子程序第四种状态子程序第四种状态子程序循环循环

附录六源程序和重要注释说明注:程序用了伪指令方便修改时间参数这个程序比原来的多了紧急通道DIS_LBEQU32H;时间数据高位DIS_HBEQU33H;时间数据高位E_PASSTEQU30;东西方向绿灯通电时间N_PASSTEQU20;南北方向绿灯通电时间FLASHTEQU5;黄灯闪烁时间SECOND_FEQU20H.0;定时1S标志INT0_FEQU20H.1;外中断0标志位INT1_FEQU20H.1;外中断1标志位ORG0000HAJMPMAINORG0003H;外中断0入口地址LJMPINT_0;调至外中断0服务程序ORG000BH;T0中断入口AJMPT0_INT;调至T0服务程序ORG0013H;外中断1入口地址LJMPINT_0;调至外中断1服务程序ORG0100HMAIN:;初始化程序*********************************MOVSP,#50H;定时器T0工作于方式1,定时125MS,开起定时器0中断MOVTMOD,#01MOVTH0,#0BHMOVTL0,#0DCH;串口工作于工作方式0,即移位寄存器状态MOVSCON,#00HSETBEA;开总中断SETBET0;开定时器中断SETBIT0;外中断0为脉冲触发方式SETBIT1;外中断0为脉冲触发方式MOVIP,#05;外中断0,1为高优先级SETBEX0;开外中断0SETBEX1;开外中断1;****************************************************MOVR2,#0MOV20H,#0;开始所有灯亮以便检测交通灯的好坏,亮一秒MOVP1,#0FFHSETBTR0;开启定时JNBSECOND_F,$CLRSECOND_F;********************************************************T_LIGHT:MOVR3,#E_PASSTF_STEP:MOVP1,#24H;东西亮绿灯,南北亮红灯,即P1MOVA,R3LCALLH_D;调用十六-十进制程序LCALLDIS;调用显示程序JNBINT0_F,LP11AJMPF_STEPLP11:JNBINT1_F,LP12AJMPT_STEPLP12:JNBSECOND_F,$;显示上面数据1SCLRSECOND_FCJNER3,#0,F_STEP;变化显示数据;****************************MOVR3,#FLASHT;东西亮绿灯,南北闪烁黄灯S_STEP:MOVA,R3MOVP1,#22HLCALLH_DLCALLDISJNBINT0_F,LP21;是否第一次出现外中断0,是转东西亮绿灯,南北亮红灯,;否则检测外中断1信号是否第一次出现AJMPF_STEPLP21:JNBINT1_F,LP22AJMPT_STEP;外中断1第一次出现转东西亮红灯,南北亮绿灯LP22:JNBSECOND_F,$;CLRSECOND_F;示出现外中断正常显示CJNER3,#0,LP1AJMPT_STEPLP1:MOVP1,#02HMOVA,R3LCALLH_DLCALLDISJNBSECOND_F,$CLRSECOND_FCJNER3,#0,S_STEP;*********************************T_STEP:MOVR3,#N_PASST;南北亮绿灯,东西亮红灯LP2:MOVP1,#81HMOVA,R3LCALLH_DLCALLDISJNBINT0_F,LP31AJMPF_STEPLP31:JNBINT1_F,LP32AJMPT_STEPLP32:JNBSECOND_F,$CLRSECOND_FCJNER3,#0,LP2;****************************MOVR3,#FLASHT;南北亮绿灯,东西闪烁黄灯FORTH_STEP:MOVP1,#41HMOVA,R3LCALLH_DLCALLDISJNBINT0_F,LP41AJMPF_STEPLP41:JNBINT1_F,LP42AJMPT_STEPLP42:JNBSECOND_F,$CLRSECOND_FCJNER3,#0,LP3LJMPT_LIGHTLP3:MOVP1,#40HMOVA,R3LCALLH_DLCALLDISJNBSECOND_F,$CLRSECOND_FCJNER3,#0,FORTH_STEPLJMPT_LIGHT;***************************;十六到十式转换H_D:MOVB,#10DIVABMOVDIS_HB,AJNZLP5MOVA,#10LP5:MOVA,BMOVDIS_LB,ARET;********************************;时间显示子程序,显示两位十进制数,发光显示共阳极DIS:M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论