《基于51单片机的智能交通灯课程设计报告书 .doc》由会员分享,可在线阅读,更多相关《基于51单片机的智能交通灯课程设计报告书 .doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . . 简易智能交通灯设计1、设计背景自从1886两个德国人发明了第一辆汽车交通灯改变了交通路况,交通问题也渐渐被人们所重视。从英国伦敦街头的第一个以燃煤气为光源的红,蓝两色的机械扳手式信号灯,到现在以电为光源的红黄绿三色交通灯,不知不觉通信号灯在人们日常生活中占据了重要地位。随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。本次课程设计以模拟交通灯系统利用单片机AT89C5
2、1作为核心元件,实现了通过信号灯对路面状况的智能控制。在一定程度上解决了交通路口堵塞、车辆停车,特殊情况的交通灯等待时间不合理、急车强通等问题。在该次的设计系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。本模拟系统由单片机软件系统,两位8段数码管和LED灯显示系统。和复位电路控制电路等组成,较好的模拟了对交通路面的控制。1.1 设计思路(1)分析目前交通路口的基本控制技术以与各种通行方案,并以此为基础提出自己的交通控制的初步方案。(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以与系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制
3、能实现基本的交通功能,还增加了倒计时显示提示,并基于实际情况,又增加了紧急状况处理和通行时间可调这两项特特殊功能。 (3)进行倒计时显示电路,灯状态电路,特殊情况按键电路的设计和对各器件的选择与连接,大体分配各个器件与模块的基本功能要求。(4)进行软件系统的设计和仿真中,程序在KEIL软件中用单片机c语言编写,电路的搭建和仿真实现是在proteus软件中实现的。在本次课程设计过对单片机部结构和工作情况做了一定的研究,充分了解定时器,中断以与延时原理,为本次智能交通灯的设计提供了理论基础。2.单片机交通控制系统方案的比较、设计与论证2.1 电源提供方案为使模块稳定工作,须有可靠电源。因此考虑了两
4、种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,选择方案二。2.2 显示界面方案该系统要求完成倒计时功能。基于上述原因,我考虑了二种方案:方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。方案二:采用点阵式LED 显示。这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,成本较高。综上所述,选择方案一。2.3 输入方案:设计要求系统能调节灯亮时
5、间,并可处理紧急情况,我研究了两种方案:方案一:采用8155扩展I/O 口与键盘,显示等。该方案的优点是:使用灵活可编程,并且有RAM,与计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。方案二: 直接在I/O口线上接上按键开关。由于该系统对于交通灯与数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器与RAM已经够用。综上所述,选择方案二。3 单片机交通控制系统总体设计3.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表
6、示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图2.1所示:图1 交通状态本系统采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器。实现以下功能: 初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔24s,黄灯闪烁6次。之后,南北绿灯亮,东西红灯亮,方向开始通车,时隔24s,南北黄灯闪烁6次,然后又切换成东西方向通车,如此重复。 当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键),重新按上述方式工作。 当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿
7、灯的时间,结束后调回正常状态。下面我们可以用图表表示灯状态和行止状态的关系如下:表1交通状态与红绿灯状态状态1状态3状态4状态6东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态与红绿灯状态如表1所示。说明:0表示灭,1表示亮。3.2 单片机智能交通灯控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通
8、行时间调整和紧急处理等功能。(1)倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。(2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,如在某一时间段某一方向的车流量多时,可以将延长该行车方向的绿灯时间,减少红灯时间。键盘是单片机系统中最常用的人机接口,一般情况下有独立式
9、和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求,需要进行I0口的扩展。在本次设计中,要求的按键控制不多,且I0口足够,可直接采用独立式,方便程序的编写。(3)紧急处理 交通路口出现紧急状况在所难免,如特大事件发生,救护车、消防车、特殊车队等急行车通过时,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。由此在交通灯控制中增设禁停按键,使某一方向一直为绿灯,另一方向一直为红灯就可达到想此目的
10、。3.3单片机智能交通灯控制系统的基本构成与原理单片机设计智能交通灯控制系统,可用单片机直接控制交通信号灯的状态变化,实现倒计时、紧急情况处理与时间调整等功能。单片机最小系统外围接口电路LED数码管显示红黄绿信号灯按键控制电路图2系统的总体框图据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块、LED倒计时模块接受输出。系统的总体框图如上所示。单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中随时通过键盘调用急停按键和时间调节中断。4智能交通灯控制系统的硬件设计4.1 AT89C51单
11、片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多
12、嵌入式控制系统提供了一种灵活性高且价廉的方案。与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个部中断源),可编程串行通道,低功耗的闲置和掉电模式,片振荡器和时钟电路。时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。中断系统:中断系统的作用主要是对外部或部的终端请求进行管理与处理。AT89S51共有5个中断源,其中又2个外部中断源和3个部中断源。图3 AT89C51系列单片机的部结构
13、示意图4.2 交通灯中的中断处理流程()现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。()中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。()中断服务程序:有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。()中断返回:执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示
14、时间也和中断前一样。4.3 系统硬件总电路构成与原理实现本设计要求的具体功能,可以选用AT89C51单片机与外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,8个LED东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按钮。4.3.1系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。其具体的硬件电路总其中P0用于送显两片LED数码管,P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P2.6与P2.7对数码管进行片选,P3.2即INT0紧急情况处理按键,P3.3即INT1接
15、时间调整中断按键。4.3.2系统工作原理系统上电或手动复位之后,系统先显示状态灯与LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断与衔接,并装入次状态的相应状态码值以与时间值,当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K键为低电平时进入中断服务子程序,东西南北路口的保持现有通行状态,再按一下键,中断结束返回。其二为通行时间调整中断,若按键有效,进入相应的中断子程序,对时间进行调整,可延长或减少某一路段的通行时间,此后
16、再按键则中断结束返回。4.4其它硬件介绍与连接4.4.1八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图3.6所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否
17、点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a全亮显示为,采用共阳极连接驱动代码,代码表如下图所示。 表驱动代码表显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共
18、用8个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图3.7所示,其中A,B分别是P0,P1的网络标号。4.4.2 发光二极管根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如下图8所示。4.4.3 按键控制本设计设置了有3个键:每个按键一端接地,另一端接对应的P3端口。低电平有效,当按键按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。按键连接如下图5 系统软件程序的设计5.1 程序
19、主体设计流程图整个软件程序方面主要分三大部分:主程序部分、运行部分程序和中断处理程序。流程图如图所示。开始设置中断工作方式、触发方式、初始化是否有中断运行过程执行中断YN中断结束,退出中断,返回主程序运行过程SN:绿灯(24),EW:红灯是否到6秒SN:黄灯亮,EW:红灯Count10?SN:黄灯灭,EW:红灯是否到0秒NYYNNEW:绿灯(24s),SN:红灯是否到6秒EW:黄灯每秒闪一次,SN:红灯Count10?EW:黄灯灭,EW:红灯是否到0秒YYYNNNLED显示缓冲区 DISPY定时计数初值50ms计数(count)加1判断1S(count=20?)到否count清0Time_SN
20、-;Time_EW-恢复现场中断返回NY中断程序设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。智能交通灯控制系统在正常工作的情况下,每30S循环变化一次。每个循环周期在还剩6s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人与车辆,交通灯即将发生变化。在此期间若中断按键按下则转入中断服务子程序进行相关操作。5.2实验仿真调试 系统软件调试一、 集成开发环境KEILKEIL IDE Vision2集成开发环境主要由以下部分组成:u Vision2 IDE。ision2 IDE包括:一个工程管理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以与
21、在线帮助。使用vision2创建源文件并组成应用工程加以管理。vision2可以自动完成编译汇编程序的操作; C51编译器和A51汇编器。Vision2 IDE创建的源文件可以被C51编译器或A51汇编器处理生成可重定位的object文件。KEIL C51编译器遵照ANSI C语言标准支持C语言的所有标准特性,另外还增加了几个可以直接支持80C51结构的特性。KEIL A51宏汇编器支持80C51与其派生系列的所有指令集; LIB51库管理器。B51库管理器可以从由汇编器和编译器创建的目标文件建立目标库,这些库是按规定格式排列的目标模块,可在以后被器所使用当器处理一个库时仅仅使用了库中程序使用
22、了的目标模块而不是全部加以引用;BL51器定位器。L51器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储器单元中。利用KEIL开发和调试系统软件流程大致如下:启动Vision2,进入KEIL软件的集成开发环境;利用KEIL置的文本编辑器进行程序源文件的编辑,因为KEIL集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是Ultraedit32),Vision2能够自动识别外部改变了的源文件;建立工程,指定针对哪种单片机进行开发,指定对源程序的编译
23、、参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使TKS仿真器仿真),然后对工程进行相关设置;设置好工程后即可进行编译、。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的HEX文件。 系统软件调试软件源程序/*简易智能交通灯设计*/*/#include#define uchar unsigned char#define uint unsigned int/*/uchar code tab= 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7
24、F,/*8*/ 0x6F,/*9*/ ;/*共阴码*/sbit wela=P30;/段选sbit dula=P31;/位选sbit K1=P36;/停止sbit K2=P37;/清零sbit K3=P35;sbit D1=P10;sbit D2=P11;sbit D3=P12;uchar aa,shi,ge,flag,tt;uint num=30;/*延时函数*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*初始化主函数T0定时器*/void init()TMOD=0x01;/设置定时器0工作在方式一(16位工作方式)T
25、H0=(65536-50000)/256;TH1=(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/开定时器D2=0;D1=0;/*数码显示子程序*/void Display(uchar shi,uchar ge)/显示十位和个位dula=1;/开段选P2=tabshi;/把十位给dula=0;/关段选wela=1;/开位选P0=0xfe;/打开第一个数码管 1111 1110 - 0111 1111 wela=0;/关位选P2=0x00;/关闭数码管delay(10);dula=1;P2=tabge;dula=0;wela=1;P0=0xfd;
26、wela=0;P2=0x00;delay(10); /*键盘扫描程序*/void keyscan()uchar aa;if(K1=0)aa+;switch(aa)case 1:TR0=0;/停止break;case 2:TR0=1;/启动if(aa=2)aa=0;init();if(K2=0)delay(80);if(K2=0)delay(80);num+;while(!K2);if(K3=0)delay(80);if(K3=0)delay(80);num-;while(!K3);void main()init();while(1)shi=num/10;ge =num%10;Display(s
27、hi,ge); keyscan();/*定时器控制*/void timer0() interrupt 1TH0=(65536-50000)/256;TH1=(65536-50000)%256;aa+;if(aa=20)aa=0;num-;if(num=10)D3=1; /红灯亮D2=0;if(num=5)D1=1; /黄灯开始闪烁delay(80);D1=0;if(num=0)D2=1;D3=0;if(num=-1)num=30;二、 proteus仿真器Proteus是目前最好的模拟单片机外围器件的工具。可以仿真51 系列、AVR,PIC 等常用的MCU 与其外围电路(如LCD,RAM,RO
28、M,键盘,马达,LED,AD/DA,部分SPI 器件,部分IIC 器件,.)Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。仿真结果图如下所示: 南北绿灯亮,东西为红灯亮 倒计时6s开始,黄灯开始闪烁 南北红灯亮,东西绿灯亮6、设计心得体会经过两周的努力工作,终于在同组人的共同合作下完成了简易智
29、能交通灯设计单片机课程设计。虽然设计仿真调试的过程很艰辛,但结果还是好的,看到仿真结果出来,看到交通灯的循环闪烁,心情顿时好起来,调试过程中的种种怨言都没有了。这次课程设计主要是软件仿真,由于器材有限就没有弄硬件部分。在软件的设计与调试过程中,我觉得它主要考验你的思维逻辑能力与你对指令的熟悉程度。可以说再整个软件设计过程中,我感觉又重新学了一次单片机,在学习的过程中不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)与其如何选择。通过几次反复调试过程,使得我对c语言有了更深刻的理解。在整个课程设计过程我还学会熟练使用Keil、proteus等软件,
30、对我在今后的学习中会有很大的帮助。同时,在这次课程设计中,老师和同组的马柱国,臻同学给了我很大的帮助,要特别感他们。7 参考文献1 肖业伟,郭雪峰,黄辉先.盘宏斌.自适应的智能交通信号机系统设计.计算机工程.2009,35(7):220一222.2 飞舟,学军,敏.基于多智能体的城市交通集成控制系统设计.大学学报(自然科学版).2008,44(2):289一292.3 史新宏,蔡伯根,穆建成.智能交通系统的发展.北方交通大学学报.2002,26(3):29一34.4 王琰琰,唐功友.实时控制交通信号机的设计与实现.中国海洋大学.计算机与应用技术.2010,4.5 谭浩强.单片机课程设计M .:清华大学,1989.20 / 20