模拟交通灯_第1页
模拟交通灯_第2页
模拟交通灯_第3页
模拟交通灯_第4页
模拟交通灯_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

河南大学物理与电子学院单片机课程设计论文河南大学物理与电子学院2015级单片机课程设计论文模拟交通灯论 文 作 者: 论文 合 作者: 所 在 学 院: 所 学 专 业: 指导教师姓名: 论文完成时间: 19目 录0 前言11 系统组成元件11.1主要组成原件11.2 元器件清单72 系统方案设计71.1控制系统方案设计71.2设置状态转换图81.2设置状态转换表83 系统原理103.1 系统电路图103.2 系统仿真图103.3 实物照片114 程序流程图115 具体程序代码116 扩展部分设计心得187 结论18参考文献19交通灯刘红 刘哲(河南大学物理与电子学院,河南 开封,475004)0 前言近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时监测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用STC89C52单片机以及单片机最小系统以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过三位一体共阳数码管显示,并能通过按键对定时进行设置,而且具有蜂鸣器提示。本系统实用性强,操作简单,有基本扩展。1 系统组成元件1.1主要组成原件本系统主要有AT89C52单片机、按键键盘、三位一体七段数码管等元件组成。1.1.1 AT89C52单片机引脚图如图1-1所示。图1-1 AT89C52单片机功能特性: 标准MCS-51内核和指令系统 片内8kROM(可扩充64kB外部存储器) 32个双向I/O口 256x8bit内部RAM(可扩充64kB外部存储器) 3个16位可编程定时/计数器 时钟频率3.5-12/24/33MHz 向上或向下定时计数器 改进型快速编程脉冲算法 6个中断源 5.0V工作电压 全双工串行通信口 布尔处理器帧错误侦测 4层优先级中断结构自动地址识别 兼容TTL和CMOS逻辑电平 空闲和掉电节省模式 PDIP(40)和PLCC(44)封装形式管脚功能:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚 备选功能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(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的底位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器:外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。这是由于振荡器电容和反馈电容之间的相互作用。当外部信号是标准高电平或者低电平时,电容不会超过20Pf.此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。1.1.2 三位一体七段数码管三位一体七段数码管引脚图:动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。1.1.3 蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。单片机驱动他激蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。比如频率为2000Hz 的蜂鸣器的驱动,可以知道周期为500s,这样只需要把PWM 的周期设置为500s,占空比电平设置为250s,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400s,这样只需要驱动蜂鸣器的I/O 口每200s 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的*(但AVR可以驱动小功率蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。蜂鸣器驱动电路一般都包含以下几个部分:一个三极管、一个蜂鸣器、一个续流二极管和一个电源滤波电容。1蜂鸣器发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直流/方波)等。这些都可以根据需要来选择。2续流二极管蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。3滤波电容滤波电容C1的作用是滤波,滤除蜂鸣器电流对其它部分的影响,也可改善电源的交流阻抗,如果可能,最好是再并联一个220uF的电解电容。蜂鸣器书写符号:蜂鸣器实物图:1.2 元器件清单元器件名称数量AT89C52单片机1三位一体数码管(SM310161K)1按键黑白开关3蜂鸣器1排阻(470k)3电阻(10k)2电阻(470)1电容(30pf)2电容(10uf)1晶振1三极管1电源接口1LED(红灯)(加上扩展部分)12LED(黄灯)4LED(绿灯)42 系统方案设计1.1控制系统方案设计 本设计能模拟基本的交通控制系统,用红黄绿灯表示禁行、通行和等待的信号发生。还能进行倒计时显示。按键可以控制禁行、东西方向紧急停止、南北方向紧急停止的功能。1.2设置状态转换图设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向兑换。其具体状态如下图所示。说明:黑色表示凉,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始。通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下,即如图(图2-1)所示:图2-1 状态转换图1.2设置状态转换表东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时30秒。此状态下,东西方向禁止通行,南北方向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。此状态下,除了正在通行中的车辆,其他车辆都需要等待状态转换。东西方向黄灯灭,同时红灯亮,南北方向红灯灭,同时绿灯亮,倒计时30秒。此状态下,东西方向允许通行,南北方向禁止通行。东西方向红灯亮,南北方向绿灯灭,同时黄灯亮,倒计时3秒。此状态下,除了正在通行中的车辆,其他车辆都需要等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系,如下:状态1状态2状态3状态4东西向禁行等待变换通行等待变换南北向通行等待变换通行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100表2-2 状态转换表东西南北四个路口均有红黄绿3灯,在任一个路口,遇到红灯禁止通行,转绿灯允许通行,之后黄灯亮起警告行止状态将变换。状态及红黄绿灯状态如图表所示。0表示灭,1,表示亮。3 系统原理3.1 系统电路图3.2 系统仿真图3.3 实物照片4 程序流程图5 具体程序代码#includechar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/定义数码管码表char m,n,shi,ge,a;bit bdata flag;bit jinji = 0;/紧急按键状态sbit yi=P26;/第一个数码管位定义sbit er=P27;/第二个数码管位定义sbit nanhong=P22;/南北红灯sbit nanhuang=P21;/南北黄灯sbit nanlv=P20;/南北绿灯sbit xihong=P23;/东西红灯sbit xihuang=P24;/东西红灯sbit xilv=P25;/东西绿灯sbit nan_hongdeng=P35;/东西方向 闯红灯sbit xi_hongdeng=P36;/南北方向闯红灯sbit beep =P34; /报警提示sbit led0=P10;sbit led1=P11;sbit led2=P12;sbit led3=P13;sbit led4=P14;sbit led5=P15;sbit led6=P16;sbit led7=P17;char honginfor = 0;/红灯的状态char num,dat1,dat2;void init()/初始化函数m=30;TMOD=0x01;EA=1;ET0=1;TH0=0x3c;TL0=0xaf;TR0=1;beep = 1;void delay(int k)/延时函数int i;char j;for(i=0;ik;i+) for(j=0;j110;j+);void xianshi()/显示函数 此显示用来显示交通灯倒计时时间shi=m/10;ge=m%10;yi=1; er=0;P0=tabshi;delay(5); yi=0;er=1;P0=tabge;delay(5);/yi=1;/er=1;P0 = 0XFF;/delay(5);void xianshi1()/显示函数 此显示用来显示交通灯亮灯情况switch(a) /=0的表示对应的灯亮case 0:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=1,xilv=0; honginfor = 1;break;case 25:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=0,xilv=1;honginfor = 1;break;case 26:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=1,xilv=1;honginfor = 1;break;case 27:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=0,xilv=1;honginfor = 1;break;case 28:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=1,xilv=1;honginfor = 1;break;case 29:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=0,xilv=1;honginfor = 1;break;case 30:nanhong=1,nanhuang=1,nanlv=0,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 55:nanhong=1,nanhuang=0,nanlv=1,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 56:nanhong=1,nanhuang=1,nanlv=1,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 57:nanhong=1,nanhuang=0,nanlv=1,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 58:nanhong=1,nanhuang=1,nanlv=1,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 59:nanhong=1,nanhuang=0,nanlv=1,xihong=0,xihuang=1,xilv=1;honginfor = 2;break;case 60:nanhong=0,nanhuang=1,nanlv=1,xihong=1,xihuang=1,xilv=0;honginfor = 1;break;default:break;void anjian()/按键函数if(honginfor = 1) if(nan_hongdeng = 0)/闯红灯按键 if(nan_hongdeng = 0)beep = 0;/报警提示m=30;a = 0; while(nan_hongdeng=0);/判断按键是否释放 也就是判断按键按下后有没有松开 else if(honginfor = 2)if(xi_hongdeng = 0) /闯红灯按键 if(xi_hongdeng = 0) beep = 0;/报警提示 m=30;a = 0; while(xi_hongdeng=0);/判断按键是否释放 也就是判断按键按下后有没有松开 void main()/主函数init();/调用初始化 flag=1;while(1)anjian();if(flag=1) xianshi();xianshi1(); void zhongduan() interrupt 1 /中断函数 定时器中断 初值为50msTH0=0x3c;TL0=0xaf; n+; if(n=20)/因为做的是50MS的定时器 所以变量计数20次正好是一秒 n=0; a+;m-;if(a=60)a=0;P1=0xa8;if(m=5)P1=0xff;led0=0;led1=0;led2=0;led3=0;led4=0;if(m=4)P1=0xff;led0=0;led1=0;led2=0;led3=0;if(m=3)P1=0xff;led0=0;led1=0;led2=0;if(m=2)P1=0xff;led0=0;led1=0;if(m=1)P1=0xff;led0=0;if(m=0)P1=0xff; m=30;beep = 1;6 扩展部分设计心得由于前期工作一直完成的不太好,停留在数码管显示的时间比较长,所以扩展部分只做了最基本的流水灯显示学号和流水灯倒计时功能。1. 在黄灯不亮期间,利用8个LED灯显示学号后两位“

温馨提示

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

评论

0/150

提交评论