基于51单片机的智能交通灯课程设计报告_第1页
基于51单片机的智能交通灯课程设计报告_第2页
基于51单片机的智能交通灯课程设计报告_第3页
基于51单片机的智能交通灯课程设计报告_第4页
基于51单片机的智能交通灯课程设计报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

..目录TOC\o"1-3"\h\u1819摘要1155011系统硬件设计 2281651.180C51单片机引脚图及引脚功能介绍 2259531.274LS245引脚图及功能462561.3八段LED数码管 5160121.4硬件系统总控制电路 6118571.5各模块控制电路 863701.5.1交通灯控制电路 8191961.5.2倒计时显示电路 9166321.5.3紧急通行电路 12217841.5.4声音警示装置 1396502系统程序设计 14326142.1主程序流程图 14308362.2显示子程序流程图 15176473心得体会166852参考文献 179546附录源程序 18..摘要近年来随着科技的飞速开展,一个以微电子技术、计算机技术和通信技术为先导的信息革命正在蓬勃开展。计算机技术作为三者之一,怎样与实际应用更有效的结合并发挥其作用。单片机作为计算机技术的一个分支,正在不断的应用到实际生活中,同时带动传统控制检测的更新。在实时检测和自动控制的应用系统中,单片机往往是作为一个核心部件使用,针对具体应用对象的特点,配以其它器件来加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现交通的井然秩序呢?靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。交通信号灯控制方式很多。本系统采用美国ATMEL公司生产的单片机AT80S51,以及其它芯片来设计交通灯控制。实现了通过AT89S51芯片的P1口设置红、绿灯点亮的功能,输出设置显示时间。交通灯的点亮采用发光二极管实现,时间的显示采用七段数码管实现。单片机系统采用的直流供电。关键词:AT89S51单片机;智能交通灯控制系统;基于51单片机智能交通灯设计1系统硬件设计1.180C51单片机引脚图及引脚功能介绍80C51系列中,用CHMOS工艺制造的单片机都采用双列直插式〔DIP〕40脚封装,引脚信号完全一样。图1-1为引脚图图1-180C51引脚图这40根引脚大致可分为:电源〔VCC、VSS、VPP、VPD〕、时钟〔XTAL1、XTAL2〕、I/O口〔P0~P3〕、地址总线〔P0口、P2口〕和控制总线〔ALE、RST、、、〕等几局部。它们的功能简述如下:1.电源Vcc〔引脚号40〕,芯片电源,接+5V;Vss〔引脚号20〕,电源接地端。2.时钟XTAL1〔引脚号18〕部振荡电路反相放大器的输入端,是外接晶振的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2〔引脚号19〕部振荡器的反相放大器输出端,是外接晶振的另一端。当采用外部振荡器时,此引脚接外部振荡源。3.控制总线〔1〕ALE/〔引脚号30〕:正常操作时为ALE功能〔允许地址锁存〕,用来把地址的低字节锁存到外部锁存器。ALE引脚以不变的频率〔振荡器频率的1/6〕周期性地发出正脉冲信号。因此,它可用作对外输出的时钟信号或用于定时。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动〔吸收或输出电流〕8个LSTTL电路。在8751单片机EPROM编程期间,此引脚接编程脉冲〔功能〕。〔2〕〔引脚号29〕:外部程序存储器读选通信号。在从外部程序存储器取指令〔或数据〕期间,在每个机器周期两次有效。可以驱动8个LSTTL电路。〔3〕RST/VPD〔引脚号9〕:复位信号输入端。振荡器工作时,该引脚上持续2个机器周期的高电平可实现复位操作。此引脚还可接上备用电源。在Vcc掉电期间,由向部RAM提供电源,以保持部RAM中的数据。〔4〕/Vpp〔引脚号31〕:为部程序存储器和外部程序存储器的选择端。当为高电平时,访问部程序存储器〔PC值小于4K〕;当为低电平时,访问外部程序存储器。对于87C51单片机,在EPROM编程期间,此端为21V编程电源输入端。4.I/O线〔1〕P0口〔引脚号32~39〕:单片机的双向数据总线和低8位地址总线。在访问外部存储器时实现分时操作,先用作地址总线,在ALE信号的下降沿,地址被锁存;然后用作为数据总线。它也可以用作双向输入/输出口。P0口能驱动8个LSTTL负载。〔2〕P1口〔引脚号1~8〕:准双向输入/输出口,它能驱动4个LSTTL负载。〔3〕P2口〔引脚号21~28〕:准双向输入/输出口。在访问外部存储器时,用作高8位地址总线。P2口能驱动4个LSTTL负载。〔4〕P3口〔引脚号10~17〕:准双向输入/输出口,它能驱动4个LSTTL负载。P3口的每一引脚还有另外一种功能:P3.0——RXD:串行口输入端P3.1——TXD:串行口输出端P3.2——:外部中断0中断请求输入端P3.3——:外部中断1中断请求输入端P3.4——T0:定时器/计数器0外部输入端P3.5——T1:定时器/计数器1外部输入端P3.6——:外部数据存储器写选通信号P3.7——:外部数据存储器读选通信号1.274LS245引脚图及功能74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。它的功能引脚图如图1-2所示。图1-274LS245引脚图74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载到达或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR="0〞,信号由B向A传输;〔接收〕DIR="1〞,信号由A向B传输;〔发送〕当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入〔P0.1←D1〕,其它时间处于输出〔P0.1→D1〕。1.3八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的构造简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图1-3所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的上下电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。图1-3八段共阳管示意图LED灯的显示原理:通过同名管脚上所加电平的上下来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,采用共阳极连接驱动代码,代码表如表1所示。表1驱动代码表显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。LED8段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用4个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。1.4硬件系统总控制电路本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。其具体的硬件电路总原理图如图1-4所示。其中P0用于送显四片LED数码管,P2用于控制红绿黄发光二极管,P1.0,P1.1,与P1.1和P1.2对数码管进展片选,P3口为紧急情况处理按键,既根据车流量控制红绿黄发光二极管通断时间。系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P2口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,那么要进展下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,当然,还要开启三个外部中断,其一为全部路口紧急情况处理中断,一旦信号有效,即按键为低电平时进入中断效劳子程序,东西南北路口的状态制止通行。其二为东西方向或南北方向制止通行,一旦信号有效将进入相应中断效劳子程序,某一方向状态制止通行。其三为通行时间调整中断,假设按键有效,进入相应的中断子程序,对时间进展调整,可延长或减少某一路段的通行时间,此后再按确定键那么中断完毕返回。图1-4控制系统总原理图1.5各模块控制电路1.5.1交通灯控制电路这里我们采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯〔发光二极管〕连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,控制受单片机P2.1~P2.6控制。单片机的I/O接口与交通灯电路的具体连接方式为:P2.1~P2.3分别接东西方向的红、黄、绿共6个放光二极管,P2.4~P2.6分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阴极的连接方式,因此I/O口输出高电平时,与之相连的发光二极管会亮,I/O口输出低电平是,相应的发光二极管会灭。初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔20s,黄灯闪烁5次。之后,南北绿灯亮,东西红灯亮,方向开场通车,时隔20s,南北黄灯闪烁5次,然后又切换成东西方向通车,如此重复。当某一方向发生交通意外或者需要停顿方向通行是,这一方向亮红灯。处理完之后,按下确定键,重新按上述方式工作。当发生交通意外(中断产生)时,全部亮红灯,进展交通事故的处理。当事故处理完毕,按下确定键,重新按上述方式工作。当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,完毕后调回正常状态。交通灯电路如图1-5所示。图1-5交通灯电路1.5.2倒计时显示电路倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在"停顿〞和"通过〞两者间作出适宜的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更平安。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在"停顿〞和"通过〞两者间作出适宜的选择。四个路口的计时显示都是由P0口控制,又P1口的P1.0~P1.2片选这些显示管,而东西两个方向的显示时间一样,南北方向时间也一样,片选信号能控制东西也南北显示不同的时间。当某一方向为绿灯时,在绿灯倒计时完毕后会再显示一个5S的倒计时,以供黄灯显示使用。显示管连接图如图1-5所示。在单片机与显示器之间加了一个8*4.7k的排阻与一个74LS245芯片,排阻的作用是上拉电阻,防止电流过高烧掉显示管,起到保护显示管的作用,其连接图如图1-6所示。74LS245的作用是驱动显示管点亮。其连接图如图1-7所示。图1-5显示管连接图图1-6排阻连接图图1-774LS245驱动芯片连接图1.5.3紧急通行电路该电路为紧急情况和根据车流量调节红绿灯时间长度控制电路。通过单片机的P3.1~P3.7口的七个接口来控制。在紧急情况下,需要停顿所有方向上的车的行驶,按下P3.1接口上的开关,接低电平,使其发生作用,发出令所有路口的红灯点亮的脉冲,制止所有车辆通行。当需要制止东西方向或者南北方向通行时,按下P3.2或者P3.3可以使其方向上的红灯亮起,制止该方向车辆通行,而另一方向上那么绿灯常量,车辆通行。例如,按下P3.2上的开关,此时南北方向上的红灯常亮,而东西方向上绿灯常亮,这就起到了南北制止东西通行的效果,按下P3.3上的开关那么与之相反。有时候某个方向上的车流量比拟大,另一个方向上的车流量比拟少,这就需要调整通行时间,P3.5是加时间端口,P3.6为减时间端口,按下一次开关那么会增加或者减少1S,P3.7接的是切换方向开关,按下开关可以切换方向时间的调整,例如现在切换开关是东西方向,而东西方向车流量比拟少,南北方向车流量比拟大,这就需要增加南北方向通行时间,减少东西方向通行时间。首先通过P3.6口减少东西方向通行时间,然后按下切换方向键,这就切换到了南北方向时间调整状态,这是按下P3.5,可以增加通行时间。P3.4为确定键,也可以称之为复位键,要解除制止时,按下确认键就可回到正常工作状态,当时间调整完毕后,也可以通过确认键回到工作状态。控制电路图如图1-8所示。图1-6按键电路控制电路图1.5.4声音警示装置当发生紧急情况需要全面停顿通行时,需要声音警示装置来提醒车辆,这个警示装置由P3.0口控制,其电路图如图1-7所示。图1-7声音警示控制电路2系统程序设计2.1主程序流程图开场开场东西亮绿灯,南北亮红灯东西准行,南北禁行显示子程序系统初始化扫描键盘键按下有调用键盘子程序东西亮绿灯,南北亮红灯同时黄灯进展闪烁调用键盘子程序扫描键盘显示子程序东西准行,南北禁行东西,南北方向换向有键按下YNY图2-1主程序路程图2.2显示子程序流程图开场开场取倒计时数值取倒计时数值从P1.0到P1.3取各个方向控制十位个位从P1.0到P1.3取各个方向控制十位个位从P0口获取数码显示值从P0口获取数码显示值返回返回图2-2显示子程序流程图3心得体会这次课程设计,我们小组做的智能交通等控制系统。如往常每一次实训,我获得了很大的收获。首先,我要说说我学到的团队精神,这次课设需要多人协作完成,我有幸找到三位认真负责且乐于交流讨论的队友。这次选交通灯为题目来做课设一是经历缺乏,二是信心缺乏。通过这次课设,我既积累了经历,也获取了信心,今后会找寻时机再做一些与拖动相关的电子设计,因为我们自动化专业和电机是息息相关的,很大程度研究的是电机的拖动问题。通过这两周的单片机课程设计,我们运用所学的知识,利用单片机控制原理设计了一个交通灯控制系统,我们对单片机有了更深的体会。我们了解和掌握了一些简单的编程思想和对I/O口的使用。这次课设通过单片机的I/O口来控制交通灯。实现一些具体的功能和对特殊情况的处理。通过这次的实践,我们对单片机的I/O口的使用的条件有更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧,特别是汇编语言的掌握方面都能向前迈了一大步。这次的课程设计让我们把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的根底,实践有着能检验理论的正确性,让我们受益非浅,对我们以后参加工作或者继续学习将会产生巨大的帮助和影响。在课设过程中遇到的硬件和软件问题都通过询问教师、同学和去图书馆、上网得到了解决。参考文献[1]大钦电子技术根底实验[M].:高等教育2004[2]梓城电子技术实训[M].:机械工业2003[3]吴黎明单片机原理及应用技术[M].:科学2003[4]学海标准80C51单片机根底教程[M].:航空航天大学2006[5]乐善微型计算机接口技术及应用[M].:华中科技大学2004[6]炳权曾庆六EDA技术实用教程[M].:大学2010[7]先锋工作室.单片机程序实例[M].:清华大学,2002.[8]伯成.基于MCS-51单片机的嵌入式系统的设计[M].:电子工业,2004.[9]吴洪潭,肖艳萍,伟国.单片机原理及应用系统设计[M].:国防工业,2005.[10]吴黎明,王桂棠,洪添胜,等.单片机原理及应用技术[M].:科学,2005.附录源程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchardatabuf[4];uchardatasec_dx=20;//东西数默认uchardatasec_nb=30;//南北默认值uchardataset_timedx=20;uchardataset_timenb=30;intn;uchardatacountt0;//定时器0中断次数//定义5组开关sbitk4=P3^7;//切换方向sbitk1=P3^5; //时间加sbitk2=P3^6; //时间减sbitk3=P3^4; //确认sbitk5=P3^1; //制止//P3^2 //只允许东西方向通行,中断0//P3^3 //只允许南北方向通行,中断1sbitYellow_nb=P2^5; //南北黄灯标志sbitYellow_dx=P2^2; //东西黄灯标志sbitGreen_nb=P2^4;sbitGreen_dx=P2^1;sbitBuzz=P3^0; bitBuzzer_Indicate;bittime=0; //灯状态循环标志bitset=1; //调时方向切换键标志ucharcodetable[11]={ //共阴极字型码 0x3f,//--0 0x06,//--1 0x5b,//--2 0x4f,//--3 0x66,//--4 0x6d,//--5 0x7d,//--6 0x07,//--7 0x7f,//--8 0x6f,//--9 0x00//--NULL};//函数的声明局部voiddelay(intms); //延时子程序voidkey(); //按键扫描子程序voidkey_to1(); //键处理子程序voidkey_to2();voidkey_to3();voiddisplay(); //显示子程序voidlogo(); //开机LOGOvoidBuzzer();//主程序voidmain(){ TMOD=0X11; //定时器设置 TH0=0X3C; //定时器0置初值0.05S TL0=0XB0; EA=1; //开总中断 ET0=1; //定时器0中断开启 TR0=1; //启动定时0 EX0=1; //开外部中断0 EX1=1; //开外部中断1logo(); P2=0Xc3; //开场默认状态,东西绿灯,南北黄灯sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒 while(1) { key(); //调用按键扫描程序 display(); //调用显示程序 Buzzer(); } }//函数的定义局部voidkey() //按键扫描子程序{ if(k1!=1) //时间加按下时 { delay(10); //延时消抖 if(k1!=1) { while(k1!=1) //当按键未弹起时,一直执行 { key_to1(); //调用按键1功能 for(n=0;n<40;n++) //调用40次显示,用于延时 {display();} } } } if(k2!=1) //当K2按键按下时 { delay(10); //延时消抖 if(k2!=1) { while(k2!=1) //按键按下未弹起时一直执行 { key_to2(); //调用key2功能 for(n=0;n<40;n++) //调用40次显示,用于延时 {display();} } } } if(k3!=1) //当K3〔确认〕键按下时 { TR0=1; //启动定时器 Buzzer_Indicate=0; sec_nb=set_timenb; //从中断回复,仍显示设置过的数值 sec_dx=set_timedx; //显示设置过的时间 if(set==1) //时间倒时到0时 { // P2=0X99; //东西红灯,南北绿灯 sec_nb=sec_dx+5; //回到初值 } else { // P2=0xC3; //东西绿灯,南北红灯 sec_dx=sec_nb+5; } } if(k4!=1) //当K4〔切换〕键按下{ delay(5); //延时消抖 if(k4!=1) { while(k4!=1); set=!set; //取反set标志位,以切换调节方向 } } if(k5!=1) //当K5〔制止〕键按下时 { delay(5); //延时消抖 if(k5!=1) { while(k5!=1) key_to3(); } }}voiddisplay()//显示子程序{ buf[1]=sec_dx/10; //第1位东西秒十位 buf[2]=sec_dx%10; //第2位东西秒个位 buf[3]=sec_nb/10; //第3位南北秒十位 buf[0]=sec_nb%10; //第4位南北秒个位 P1=0xff; //初始灯为灭的P0=0x00;P1=0xfe; //片选LED1P0=table[buf[1]]; //送东西时间十位的数码管编码 delay(1); //延时 P1=0xff; //关显示P0=0x00; P1=0xfd; //片选LED2P0=table[buf[2]];delay(1); P1=0xff;P0=0x00; P1=0Xfb; //片选LED3 P0=table[buf[3]]; delay(1); P1=0xff;P0=0x00; P1=0Xf7; P0=table[buf[0]]; //片选LED4 delay(1);}voidtime0(void)interrupt1using1 //定时中断子程序{ TH0=0X3C; //重赋初值 TL0=0XB0; TR0=1; //重新启动定时器 countt0++; //软件计数加1 if(countt0==20) //定时器中断次数=20时〔即1秒时〕 { countt0=0; //清零计数器 sec_dx--; //东西时间减1 sec_nb--; //南北时间减1 if(sec_nb<=5&&time==0) //东西黄灯闪 { Green_dx=0; Yellow_dx=!Yellow_dx; } if(sec_dx<=5&&time==1) //南北黄灯闪 { Green_nb=0; Yellow_nb=!Yellow_nb; } if(sec_dx==0&&sec_nb==5) //当东西倒计时到0时,重置5秒,用于黄灯闪烁时间 sec_dx=5; if(sec_nb==0&&sec_dx==5) //当南北倒计时到0时,重置5秒,用于黄灯闪烁时间 sec_nb=5; if(time==0&&sec_nb==0) //当黄灯闪烁时间倒计时到0时, { P2=0x99; //重置东西南背方向的红绿灯 time=!time; sec_nb=set_timenb; //重赋南北方向的起始值 sec_dx=set_timenb+5; //重赋东西方向的起始值 } if(time==1&&sec_dx==0) //当黄灯闪烁时间到 { P2=0Xc3; //重置东西南北的红绿灯状态 time=!time; sec_dx=set_timedx; //重赋东西方向的起始值 sec_nb=set_timedx+5;} //重赋南北方向的起始值 } }voidkey_to1() //键盘处理子程序之+{ TR0=0; //关定时器 if(set==0) set_timenb++; //南北加1S else set_timedx++; //东西加1S if(set_timenb==100) set_timenb=1; if

温馨提示

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

评论

0/150

提交评论