基于单片机的交通信号灯控制系统设计完整版李坤

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2二○一四~二○一五学年第二学期信息科学与工程学院课程设计报告班级:自动化1304班姓名:李坤学号:201304134174指导教师:章政二○一六年一月十二日3一、设计题目:单片机交通信号灯控制系统设计二、设计目的:通过本课程的设计,进一步掌握I/O接口设计和常用程序设计技术,掌握单片机控制系统的设计的一般方法,能根据系统设计要求,完成应用系统的硬件和软件设计。三、系统设计要求:本交通灯控制系统控制东西、南北两个方向信号灯,每个路口分别设置两组红绿灯(左转,直行),红灯禁止通行,绿灯允许通行,黄灯闪烁。左转方向,南北直行,东西直行的通行时间由对应的两位BCD码拨码盘设置,绿灯向红灯转换前黄灯闪烁三次共3秒钟,红灯向绿灯过渡时不闪烁。系统上电时的初始状态为东西、南北两个方向均为红灯,持续2秒后为东西方向绿灯,南北方向红灯,之后以定时方式控制两个方向的汽车轮流通行。四、设计说明书要求:1.根据交通灯控制系统功能要求,选择合适的INTEL51系列CPU,设计单片机复位、振荡电路。2.设计输入接口,实现由BCD拨码盘设定通行时间的输入。3.设计输出接口,每个LED代表一个灯,由输出口控制东西、南北方向的左转,直行信号灯的点亮与熄灭。4.设计并绘制控制系统接线原理图。5.设计并绘出系统软件框图。6.根据系统软件框图编写控制系统应用程序,并调试控制程序。7.撰写计算机控制系统课程设计说明书。8.设计说明书包括封面、目录、正文、参考文献。正文包括设计目的与意义、设计要求、常见交通信号灯系统概述、系统硬件设计方案、系统原理图及描述、软件设计方案、程序框图及描述、程序清单与注解说明、设计小结(体会与收获)等。4报告正文1.设计任务及思路本交通灯控制系统控制东西、南北两个方向信号灯,每个路口分别设置两组红绿灯(左转,直行),红灯禁止通行,绿灯允许通行,黄灯闪烁。左转方向,南北直行,东西直行的通行时间由对应的两位BCD码拨码盘设置,绿灯向红灯转换前黄灯闪烁三次共3秒钟,红灯向绿灯过渡时不闪烁。系统上电时的初始状态为东西、南北两个方向均为红灯,持续2秒后为东西方向绿灯,南北方向红灯,之后以定时方式控制两个方向的汽车轮流通行。2.芯片的选择2.174LS373以及74LS07简介74LS373是一种带三态门的8D锁存器,其管脚示意图2如下所示:图274LS373管脚示意图5其中:1D-8D为8个输入端。1Q-8Q为8个输出端。LE为数据打入端:当LE为“1”时,锁存器输出状态同输入状态;当LE由“1”变“0”时,数据打入锁存器OE为输出允许端;当OE=0时,三态门打开;当OE=1时,三态门关闭,输出高阻。六驱动器(OC高压输出)74LS07Vcc6A6Y5A5Y4A4┌┴─┴─┴─┴─┴─┴─┴┐│141312111098│Y=A)││1234567│└┬─┬─┬─┬─┬─┬─┬┘7805实现正电压输出,负电压截止。2.2交通灯控制原理分析与方案论证本设计以单片机为核心,以LED数码管作为倒计时指示,根据设计的要求我们考虑了各功能模块的几种设计方案,以求最佳方案,实现实时显示系统各种状态,系统还增设了根据交通拥挤情况可分别设置主干道和次干道的通行时间,以提高效率,缓减交通拥挤。系统总体设计框图如图8所示:单片机最小系统倒计时交通灯键盘与状态显示62.3单片机最小系统2.3.1振荡电路AT89C51是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体,给单片机加工作所需直流电源,振荡器就开始振荡起来。振荡电路就为单片机工作提供了所需要的时钟脉冲信号,是单片机的内部电路、单片机的内部程序(若有)开始工作。振荡电路不工作,整个单片机电路都不能正常工作。AT89C51常外接6MHz、12MHz的石英晶体,18脚和19脚分别对地接了一个20pF的电容,目的是防止单片机自激。若从18脚输入外部时钟脉冲,则19脚接地。2.3.2复位电路复位电路就是在RST端(9脚)外接的一个电路,目的是使单片机上的电开始工作时,内部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。在时钟工作的情况下,只要复位引脚高电平保持在两个机器周期以上的时间,AT89C51便能完成系统重置的各项工作,使得内部特殊功能寄存器的内容均被设置成已知状态,并且从地址0000H处读入程序代码而执行程序。单片机最小系统电路如图9所示:72.4显示及其驱动模块键盘在本设计中用于紧急情况的手动控制装置,以及定时时间的设置等功能,起到了不可缺少的重要作用。当定时器定时为1秒时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时1秒,在显示黄灯的下一个时间,这样依次把所有的时间显示完后在重新给时间计数器赋初值,重新进入循环。键盘电路如图10所示:图10键盘电路3.系统软件设计3.1延时程序设计延时方法可以有两种一种是利用MCS-51内部定时器产生溢出中断来确定延时的时间,另一种是采用软延时的方法。下面给出延时1秒的实现方法。3.1.1计数器硬件延时⑴计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216;在方式2和3的M值为28。8⑵计算公式T=(M-TC)T计数或TC=M-T/T计数T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主脉冲频率为TCLK=12MHZ,经过12分频方式0TMAX=213*1微秒=8.192毫秒方式1TMAX=216*1微秒=65.536毫秒方式2、3TMAX=28*1微秒=256微秒显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法和级联的方式解决这么个问题。⑶设置1秒延时我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒。这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到,可以返回到输出时间显示程序。⑷相应程序代码①主程序定时器需定时50毫秒,故T0工作于方式1。初值:TC=M-T/T计数=216-50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令T0为定时器方式1MOVTH0,#3CH;装入定时器初值MOVTL0,#BOHMOVIE,#82H;开T0中断SEBTTR0;启动T0计数器MOVRO,#14H;软件计数器赋初值LOOP:SJMP$;等待中断9②中断服务子程序ORG000BHAJMPBRTOORG2000HBRTO:DJNZR0,NEXTAJMPTIME;跳转到时间及信号灯显示子程序MOVR0,#14H;恢复R0值MOVTH0,#3CH;重装入定时器初值MOVTL0,#BOHMOVIE,#82HRETIEND3.1.2软件延时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,机器周期数为110DELAY1为一个延时125mS子程序的双重循环,循环次数256*256=65536所以延时时间为65536*2=131072us约为125ms。R4设置的初值为8时,主延时程序循环8次,所以125ms*8=1秒。由于单片机的运行速度很快其他的指令执行时间可以忽略不计。3.2程序设计3.2.1流程图按键流程图如图12所示:图12按键流程图程序流程图如图13所示:11图13程序流程图初始化开始黄灯燃亮状态红灯燃亮状态R5=0?绿灯燃亮状态R6=0?NNNYYY有键盘事件?处理键盘事件YNR4=0?123.2.2源程序代码R4存放黄灯时间303H(时间可以动态设定)R5存放红灯时间2014HR6存放绿灯时间301EHPC0显示黄灯信号PC1显示红灯信号PC2显示黄灯信号工作于方式08255PA、PB、PC口输出控制字为10000000B(80H)程序代码:ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#03H;初始化8255MOVA,#80HMOVX@R1,AMOVR4,#03;存放黄灯时间MOVR5,#20;存放红灯时间MOVR6,#30;存放绿灯时间START:LCALLKEY_INLCALLDISP_YLCALLDISP_RLCALLDISP_YLCALLDISP_GLCALLDISP_YMOVA,R5;保存R5中的时间PUSHAMOVR5,#66LCALLDISP_R13POPAMOVR5,AJMPSTART按键子程序:KEY_IN:MOVP1,0FFH;按键子程序MOVC,P3.0JNBEXITMOVC,P1.7JNBTEST_YANLP1,3FH;显示红灯MOVR5,P1LCALLDISP_RTEST_Y:MOVC,P1.6;显示绿灯JNBEXITANLP1,3FHMOVR6,P1LCALLDISP_GEXIT:RETDISP_Y:MOVR1,#O;显示黄灯十位MOVDPTR,#TABMOVA,R1MOVCA,@A+DPTRMOVR1,#01HMOVX@R1,AMOVA,R4;显示黄灯个位MOVR0,ANEXT1:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVR1,#00H14MOV@R1,AMOVR1,#02H;显示黄灯信号MOVA,#04HMOV@R1,AACALLDELAY;延时1秒DJNZR0,NEXT1RETDISP_R:MOVA,R5MOVR0,ANEXT2:MOVDPTR,#TAB;显示红灯十位MOVA,R0MOVB,#10DIVABMOVCA,@A+DPTRMOVR1,#01HMOVA,R0MOVX@R1,AMOVDPTR,#TAB;显示红灯个位MOVR2,BMOVA,R2MOVCA,@A+DPTRMOVR1,#00HMOVX@R1,AMOVR1,#02H;显示红灯信号MOVA,#01HMOVX@R1,AACALLDELAY;延时1秒DJNZR0,NEXT2RETDISP_G:MOVA,R615MOVR0,ANEXT3:MOVDPTR,#TAB;显示绿灯十位MOVA,R0MOVB,#10DIVABMOVCA,@A+DPTRMOVR1,#01HMOVA,R0MOVX@R1,AMOVDPTR,#TAB;显示绿灯个位MOVR2,BMOVA,R2MOVCA,@A+DPTRMOVR1,#00HMOVX@R1,AMOVR1,#02H;显示绿灯信号MOVA,#02HMOVX@R1,AACALLDELAY;延时1秒DJNZR0,NEXT3RETDELAY:MOVR4,#08H;延时1秒子程序DE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0MOVR5,#0DE1:DJNZR5,$DJNZR6,DE116RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;驱动代码表END4.调试运行1.接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,对P1口的接线做了调整。即,P1.0接L3,P1.1接L2,P1.2接L

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功