交通灯模型 毕业论文.doc_第1页
交通灯模型 毕业论文.doc_第2页
交通灯模型 毕业论文.doc_第3页
交通灯模型 毕业论文.doc_第4页
交通灯模型 毕业论文.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

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

文档简介

交通灯模型 摘 要: 对基于单片机的交通灯控制系统进行了设计。系统功能为:以stc-51系列单片机作为控制核心,设计并制作交通灯控制系统,东西南北四个方向,配置两位数显,红绿灯更替过程中黄灯会以一定频率闪动。在对系统功能分析的基础上,提出了三种设计方案,经比较,选择性能较优的led动态循环显示方案进行了设计。设计包括硬件和软件两大部分。硬件部分包括单片机最小系统、时间显示、交通灯显示三部分。选用stc89s52单片机作为控制核心,东西南北四个方向设置了交通灯显示,时间显示采用两位led显示器,交通灯显示则采用红绿双色高亮发光二极管来模拟。软件采用了模块化的设计方法,主要分为主程序、定时器中断服务子程序、倒计时显示子程序、交通灯模拟显示子程序四部分。 在实验板上制作了基于单片机的交通灯控制系统样机,对硬件和软件部分分别进行了调试,再进行了软硬件联调,得到的交通灯控制系统样机实物,可圆满地完成毕业设计任务书所要求的功能。关键词: 单片机、定时器、中断、交通灯、stc-51目录:引言11设计方案论证21.1系统结构方案论证21.2显示方案论证22 单片机概述33 芯片简介43.1 stc89c51芯片简介43.1.1中央处理器43.1.2数据存储器(ram)43.1.3程序存储器(rom)43.1.4定时/计数器(rom)43.1.5并行输入输出(i/o)口43.1.6全双工串行口53.1.7中断系统53.1.8时钟电路53.1.9红绿灯动态闪动方式代码74、定时器延时104.1 计数器初值计算104.2 定时器硬件最大延时104.3 定时秒的方法104.4定时器中断代码115工作方式126、工作原理图137调试与检测147.1.硬件检测147.1.1静态检测147.1.2动态检测147.2软件调试148、结束语15参考文献16引言当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。1设计方案论证根据设计任务,要求主、次道路绿、黄、红灯亮的时间不同并且时间可以预置和调整,因此采用单片机stc89c51来进行智能控制。由按键输入调整值送入单片机中进行数据处理,然后输出到相应数码管进行显示,同时由不同颜色的发光二极管进行指示。通过对设计功能分解,设计方案论证可以分为:系统结构方案论证,显示方案论证,输入方案论证。1.1系统结构方案论证方案一:纯数字电路方式由秒发生器电路部分产生周期为一秒的矩形脉冲信号,经74ls192分频后可得到周期为两秒的脉冲信号,用此信号作为74ls161的输入控制脉冲,控制74ls161计数,我们电路中用两块74ls161级联,并用异步清零的办法将其做成17进制计数器。用此17位计数器的输出作为译码器74ls138的地址输入,最后将得到的译码信息经过相应的门电路,即可达到控制交通灯的目的。显示部分所需脉冲直接采用555输出的秒脉冲,这样就可以使得显示与灯的控制在时间上达到同步!方案二:单片机方式利用单片机控制相应i/o口,模拟交通灯显示,利用其串口实现数码管显示。利用外部中断功能,设计人机交互接口,完成交通灯主次干道通行时间任意可调。而且移植方便,符合现在的发展趋势方案一的优点是不需要软件编程控制,缺点是硬件规模庞大且不能实现延时可调。方案二占用硬件资源少、功能齐全、调试过程简单。故本设计采用方案三。1.2显示方案论证方案一:采用led数码管led数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。方案二:采用lcd液晶显示器方案一使用数码管显示编程较易,且显示达到要求,价格便宜。方案二的led液晶显示器功率小,效果明显,但价格较高。两种方案综合考虑,选择方案一。2 单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和i/o接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的cpu功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。3 芯片简介3.1 stc89c51芯片简介stc89c51单片机包含中央处理器、程序存储器(rom)、数据存储器(ram)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,下面分别加以说明1。3.1.1中央处理器图1 89c51单片机结构框图中央处理器(cpu)是整个单片机的核心部件,由运算器和控制器等部件组成。运算器是8位数据宽度的处理器,能处理8位二进制数据或代码,cpu负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。控制器包括程序计数器、指令寄存器、指令译码器、振荡器及定时电路等。3.1.2数据存储器(ram)stc89c51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的ram只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。3.1.3程序存储器(rom)stc89c51内程序存储器容量为4kb,地址从0000h开始,用于存放用户程序,原始数据或表格。3.1.4定时/计数器(rom)stc89c51有两个16位的可编程定时/计数器,它们都有定时和事件计数功能,可用于定时控制、延时、对外部事件计数和检测等场合。3.1.5并行输入输出(i/o)口stc89c51有4个外部交换信息的8位并行接口,即p0p3。它们都是准双向端口,每个端口有8条i/o线,均可输入/输出。3.1.6全双工串行口stc89c51内置一个可编程的全双工串行通信口(uart),用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。3.1.7中断系统stc89c51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。3.1.8时钟电路stc89c51内置最高频率达12mhz的时钟电路,用于产生整个单片机运行的脉冲时序,但stc89c51单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(princeton)结构。本设计所用的intel的mcs-51系列单片机采用的是哈佛结构的形式。下图是stc89c51单片机的内部结构示意图2。图2 stc89c51单片机芯片内部结构stc89c51的各引脚对应的功能简要介绍如下4:vss 接地。vcc 电源端,接。p0.00.7 p0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入,p0也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线,此时通过内部强上图3 89c51引脚结构拉输出1。p0口每位可以能驱动4个ls型ttl负载。p1.01.7 p1口是带内部上拉的双向i/o口,向p1口写入1时p1口被内部上拉为高电平,可用作输入口。当作为输入脚时被外部拉低的p1口会因为内部上拉而输出电流。p1口每位可以能驱动p2个ls型ttl负载。p2.02.7 p2口是带内部上拉的双向i/o口,向p2口写入1时p2口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的p2口会因为内部上拉而输出电流。在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址,此时通过内部强上拉传送1。当使用8位寻址方式访问外部数据存储器时,p2口每位可以能驱动4个ls型ttl负载。p3.03.7 p3口是带内部上拉的双向i/o口,向p3口写入1时p3口被内部上拉为高电平,可用作输入口。当作为输入脚时被外部拉低的p3口,会因为内部上拉而输出电流。p3口每位可以能驱动4个ls型ttl负载。p3 口还具有以下特殊功能:rxd(p3.0) 串行输入口txd(p3.1) 串行输出口int0(p3.2) 外部中断0int1(p3.3) 外部中断t0(p3.4) 定时器0 外部输入t1(p3.5) 定时器1 外部输入wr(p3.6) 外部数据存储器写信号rd(p3.7) 外部数据存储器读信号rst 复位。当晶振在运行中只要复位管脚出现2个机器周期高电平,即可复位内部。有扩散电阻连接到vss,仅需要外接一个电容到vcc即可实现上电复位。ale 地址锁存使能。在访问外部存储器时,输出脉冲锁存地址的低字节,在正常情况下,ale 输出信号恒定为1/6 振荡频率并可用作外部时钟或定时。psen 程序存储使能。当执行外部程序存储器代码时,psen每个机器周期被激活两次。在访问外部数据存储器时,psen无效。访问内部程序存储器时,psen无效。ea/vpp 外部寻址使能/编程电压。在访问整个外部程序存储器时ea必须外部置低,如果ea为高时将执行内部程序,除非程序计数器包含大于片内flash的地址。该引脚在对flash编程时,接5v/12v编程电压(vpp),如果保密位1已编程,ea在复位时由内部锁存。xtal1 反相振荡放大器输入和内部时钟发生电路输入。xtal2 反相振荡放大器输出。stc89c51的复位方式可以是上电自动复位,也可以是手动复位,此外,rst/vpd还是一复用脚,vcc掉电其间,此脚可接上备用电源,以保证单片机内部ram的数据不丢失。图4 复位电路图5 时钟电路xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.1.9红绿灯动态闪动方式代码因为红绿灯放在不同的方位,并且在不同的时刻有着不同的动态效果,所以其代码也必须要有此种变换效果的功能,其代码如下:void light() if(deng=0)light1=1;light2=0;light3=0; if(deng=1) if(t=1) light1=0; light2=0; light3=0;if(t=2)light1=0;light2=0;light3=1;if(deng=2)light1=0;light2=1;light3=0;if(deng=3) if(t=1) light1=0; light2=0; light3=0;if(t=2)light1=0;light2=0;light3=1;4、定时器延时4.1 计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到th和tl中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为c和计数初值设定为tc 可得到如下计算通式: tc=m-c 式中,m为计数器模值,该值和计数器工作方式有关。在方式0时m为;在方式1时m的值为。4.2 定时器硬件最大延时因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12mhz,则计数周期为:t=1/(12106)hz1/12=1s很显然可以知道:方式0 13位定时器最大定时间隔2131s8.192ms方式1 16位定时器最大定时间隔2161s65.536ms方式2 8位定时器最大定时间隔281s256s显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题普通延时方法:void delay(uint z)uint t1,y;for(t1=z;t10;t1-)for(y=110;y0;y-);4.3 定时秒的方法我们采用在主程序中设定一个初值为65536的软件计数器和使t0定时50毫秒这样每当t0到50毫秒时cpu就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,count自加到20时表示秒已到可以返回到输出时间显示程序2。4.4定时器中断代码void dingshi()interrupt 1th0=(65536-45872)/256;tl0=(65536-45872)/256;num+;san+;if(san=20)san=0;t=1;if(san=10)t=2;在中断之前,必须要将时钟中断1开通tmod=0x01;ea=1;et0=1;tr0=1;5工作方式东南西北四个方位均设有红绿黄三盏灯,并且每次红绿转换时,黄灯会以1hz的频率闪动,而主杆道通行时间为60s,次杆道通行时间为40s,黄灯闪动时间为8s。此处由一两位一体的数码管作显示效果。6、工作原理图工作原理图如下:7调试与检测7.1.硬件检测硬件检测又分为,静态检测和动态检测。7.1.1静态检测第一步:目测,检查外部的各种元件或则电路是否有断点;第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象;第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值;第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。7.1.2动态检测动态检测是在设计工作的情况下发现和排除系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。首先运用由分到合的调试方法。调试电路时,与该元件无关的器件全部从设计中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。然后运用由近及远的调试方法。将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。7.2软件调试1静态调试静态调试是指对程序进行人工书面检查。静态调试时要仔细阅读程序及其文档,经过结构分析、功能分析、逻辑分析、接口分析、语法分析以及逐行检查。(1) 检查语法错误产生语法错误的原因主要有两个:一是键入错误,此错误如同写文章时的“笔误”;二是由于对语法规则不熟悉,见书后错误信息、各种限制、全局变量与局部变量、先后左右的原则等,这些虽不是系统规定,但也是语法的一部分,应作为专项予以检查。(2) 跟踪过程此时的跟踪程序流程,即把自己当作计算机。给定一组输入数据后,顺序执行每条语句,考察所得结果,寻找错误。2.动态调试动态调试是指实际上机运行程序进行调试。源程序上机运行,语言系统及操作系统会在程序有故障时给出信息,常见的故障分为以下几种情况:(1) 没有通过编译。(2) 没有通过连接编译。(3) 程序的运行过程因故障而停止。(4) 程序只输出部分结果。对这部分结果进行分析,可大致了解程序被执行的逻辑,或程序在什么地方中断。软件调试通过对拥护程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正。本系统的软件系统不是很大,而且全部采用c语言编写,除语法与逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试。8、结束语 本次设计利用了stc89c52进行,其功能与51相仿,在设计过程中遇到过不小问题,如代码编译出错,逻辑出错,仿真出错到焊接时候的出错,但设计的本身就是为了在出错中了成长,这让我更加了解最小系统设计的方法。通过这次毕业设计,使我得到了一次用专业 知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是c语言)的掌握方面都能向前迈了一大步,为日

温馨提示

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

评论

0/150

提交评论