基于单片机的交通信号灯控制系统的设计_第1页
基于单片机的交通信号灯控制系统的设计_第2页
基于单片机的交通信号灯控制系统的设计_第3页
基于单片机的交通信号灯控制系统的设计_第4页
基于单片机的交通信号灯控制系统的设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

湖南工业大学本科生毕业设计(论文)湖南工业大学专科生毕业设计(论文)图4.1主程序流程图4.1.2延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法[4]。4.1(1)计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:TC=M-C式中,M为计数器摸值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216;在方式2和3为28(2)计算公式T=(M-TC)T计数或TC=M-T/T计数T计数是单片机时钟周期TCLK的12倍;TC为定时初值,如单片机的主脉冲频率为TCLK12MHZ,经过12分频方式0TMAX=213*1微秒=8.192毫秒方式1TMAX=216*1微秒=65.536毫秒显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。(3)1秒的方法我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒。这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。(4)相应程序代码①主程序定时器需定时50毫秒,故T0工作于方式1。初值:TC=M-T/T计数=216-50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令TO为定时器方式1MOVTH0,#3CH;装入定时器初值MOVTL0,#BOHMOVIE,#82H;开T0中断SEBTTRO;启动TO计数器MOVRO,#14H;软件计数器赋初值LOOP:SJMP$;等待中断②中断服务子程序ORG000BHAJMPBRT0ORG000BHBRT0:DJNZR0,NEXTAJMPTIME;跳转到时间及信号灯显示子程序DJNZMOV,R0,#14H;恢复R0值MOVTH0,#3CH;重装入定时器初值MOVTL0,#BOHMOVIE,#82HRETIEND软件延时MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:DELAY:MOVR4,#08H延时1秒子程序DE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0延时125ms子程序MOVR5,#0DE1:DJNZR5,$DJNZR6,DE1RETMOVRN,#DATA字节数数为2,机器周期数为1,所以此指令的执行时间为2ms。DELAY1为一个双重循坏循环次数为256*256=65536所以延时时间=65536*2=131072us约为125us。DELAYR4设置的初值为8,主延时程序循环8次,所以125us*8=1秒。由于单片机的运行速度很快其他的指令执行时间可以忽略不计。本系统采用硬件延时实现1S延时。4.2键盘扫描子程序4.2.1流程图设计图4.2键盘扫描流程图4.2.2键盘中断工作方式初始化时,使键盘行输出口全部置零。当有按键按下时,INT0(取反)端为负脉冲,向CPU发出中断申请,若CPU开放外部中断,则响应中断请求,进入中断服务程序。由于P1口的为双向I/O口,可以采用一种称为“线路反转”的方法识别键值。步骤如下:(1)P1.0~P1.3输出0,由P1.4~P1.7输入并保存数据到A中;(2)P1.4~P1.7输出0,由P1.0~P1.3输入并保存数据到B中;(3)A的高4位与B的低4位组合成为键码值;(4)查表求得键号。4.3显示子程序4.3.1流程图设计图4.3显示子程序流程图4.3.2当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值,重新进入循环。(1)8255PA口输出信号接信号灯由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红、绿、黄发光二极管。(2)8255输出信号与数码管的连接LED灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如SP,g,f,e,d,c,b,a管角上加上7FH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8[5]。采用共阴级连接:其中PC0\PB0-a,PC1\PB1-b,PC2\PB2-c,PC3\PB3-d,PC4\PB4-e,PC5\PB5-f,PC6\PB6-gPC7\PB7-SP接地表4.1驱动代码表显示数值dopgfedcba驱动代码(16进制)0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011006DH6011111007DH70000011107H8011111117FH4.4系统程序源代码详见附录2第5章仿真与调试经过软件和硬件的设计后完成了本设计,利用KeilC51对系统进行了软件仿真,达到了设计要求。在KeiluVision3中,通过“文件\新建文件”,新建汇编语言源程序文件,编写相应的程序产生以“.ASM”的后缀文件。在“文件\新建项目”的菜单中,新建项目并将汇编语言源程序文件包括在项目文件中。在“项目\编译”菜单中将汇编源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以“*.hex”和“*.bin”后缀的目标文件。并在“调试”菜单中选择“启动/停止调试”对程序进行运行调试。相关结果如下表。表5.1一个周期发光二极管与四位数码管状态状态一A红B绿A60-0B60-0正常状态二A绿B黄A5-0B5-0正常状态三A绿B红A80-0B80-0正常状态四A黄B红A5-0B5-0正常紧急状态A红B红不显示正常复位状态全灭A00B00正常结论本系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A、锁存器74HC373为中心器件来设计交通灯控制器。充分利用了8051和8255芯片的I/O引脚,实现了红、黄、绿、黄循环点亮,东西方向通行80秒、南北方向通行60秒、倒计时5秒时黄灯闪烁;交通灯信号与显示时间经锁存器74HC373分别通过8255A的PB、PA口,8051P0口的低四位控制四位共阴数码管的输出状态。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现。经过三个多月的努力,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。论文设计的过程中,遇到了许多困难,但每次我都会积极主动的向老师、同学请教,同时自己也努力思考经过多方努力,问题最终会解决,在解决问题的过程中,自己学到了许多。问题的解决,又让自己的思路进一步的清晰,当论文经过一次次的修改,基本成形的时候,我觉得很有成就感。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。参考文献[1]张迎新等.单片机原理及应用[M].北京:电子工业出版社,2009.1[2]WWW.21部分资料.[3]雷丽文等.微机原理与接口技术[M].北京:电子工业出版社,1997.2[4]张毅坤.单片微型计算机原理及应用[M].西安:电子科技大学出版社,1998[5]余锡存曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7致谢肖老师全程指导了本次设计,他在百忙之中审查了本设计的全部内容,从设计方案的选择到系统的软件与硬件设计,并对设计内容进行了认真的指导和提出了许多好的建议;肖老师深厚的专业知识、严谨的治学精神和求实创新的工作作风深深的影响着我。在此,谨向肖老师致以我最崇高的敬意和真挚的感谢!感谢我的家人和朋友对我生活上的关心,学习和工作的支持,这些使得我能够安心的完成我的设计工作。最后,对在我的学习和成长道路上给予帮助的所有老师和朋友们表示深深地感谢,对评阅该论文的所有老师表示最崇高的敬意和真挚的感谢!学生签名:日期:2011年6月附录1附录2程序源代码ORG0000H;主程序的入口地址LJMPMAIN;跳转到主程序的开始处ORG0003H;外部中断0的中断程序入口地址ORG000BH;定时器0的中断程序入口地址LJMPT0_INT;跳转到中断服务程序处ORG0013H;外部中断1的中断程序入口地址MAIN:MOVSP,#50HMOVIE,#8EH;CPU开中断,允许T0中断,T1中断和外部中断1中断MOVTMOD,#51H;设置T1为计数方式,T0为定时方式,且都工作于模式1MOVTH1,#00H;T1计数器清零MOVTL1,#00HSETBTR1;启动T1计时器SETBEX1;允许INT1中断SETBIT1;选择边沿触发方式MOVDPTR,#003HMOVA,#80H;给8255赋初值,8255工作于方式0MOVX@DPTR,ALJMPFZH;转读键值程序 ORG0080HFZH:SETBRS0;保护第0组工作寄存器MOVP1,#0F0H;设P1.0~P1.3输出0MOVA,P1;读P1口ANLA,#0F0H;屏蔽低4位,保留高4位MOVB,A;将P1.4~P1.7的值存入BMOVP1,#0FH;反转设置,设P1.4~P1.7输出0MOVA,P1ANLA,#0F0H;屏蔽高4位,保留低4位ORLA,B;与P1.4~P1.7的值相或,形成键码MOVB,AMOVR0,#00H;置键号初值MOVDPTR,#TAB;LOOP:MOVA,R0MOVCA,@A+DPTR;取键码值CJNEA,B,NEXT2;与按键值相比较,如果不相等,继续SJMPRR0;相等返回,键码值在A中NEXT2:INCR0;键值加1CJNER0,#10H,LOOPRR0:CLRRS0;恢复第0组工作寄存器RETI;N0:SETBTR0;启动T0计时器MOV76H,R7;红灯时间存入76HN00:MOVA,76H;东西方向禁止,南北方向通行MOVR3,AMOVDPTR,#0000H;置8255A口,东西方向红灯亮,南北方向绿灯亮MOVA,#0DDHMOVX@DPTR,A;黄灯闪烁5秒程序N1:SETBP3.0MOVR3,#05HMOVDPTR,#0000H;置8255A口,东西、南北方向黄灯亮MOVA,#0D4HMOVX@DPTR,AN11:MOVR4,#00HN12:CJNER4,#7DH,$;黄灯持续亮0.5秒N13:MOVDPTR,#0000H;置8255A口,东西、南北方向黄灯灭MOVA,#0DDHMOVX@DPTR,AN14:MOVR4,#00HCJNER4,#7DH,$;黄灯持续灭0.5秒CJNER3,#00H,N1;闪烁时间达5秒则退出;N2:MOVR7,#00HMOVA,R0;东西通行,南北禁止MOVR3,AMOVDPTR,#0000H;置8255A口,东西方向绿灯亮,南北方向红灯亮MOVA,#0EBHMOVX@DPTR,A;黄灯闪烁5秒程序N3:MOVR3,#05HMOVDPTR,#0000H;置8255A口,东西,南北方向黄灯亮MOVA,#0E2HMOVX@DPTR,AN31:MOVR4,#00HCJNER4,#7DH,$;黄灯持续亮0.5秒N32:MOVDPTR,#0000H;置8255A口,南北方向黄灯灭MOVA,#0EBHMOVX@DPTR,AN33:MOVR4,#00HCJNER4,#7DH,$;黄灯持续灭0.5秒CJNER3,#00H,N3;闪烁时间达5秒则退出SJMPN00;1秒延时子程序N7:RETIT0_INT:MOVTL0,#9AH;给定时器T0送定时10ms的初值MOVTH0,#0F1HINCR4INCR5CJNER5,#0FAH,T01;判断延时是否够一秒,不够则调用显示子程序MOVR5,#00H;R5清零DECR3;倒计时初值减一T01:ACALLDISP1;调用显示子程序RETI;中断返回;显示子程序DISP1:MOVB,#0AHMOVA,R3;R3中值二转十显示转换

温馨提示

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

评论

0/150

提交评论