P2.0P1.1P1.28031P1.3P1.5P2.5P1.6P1.7I01M8155CE交通灯的控制设计一问题的提出:设计一组交通灯使十字路口的交通快捷顺畅。二总体设计:1.设计题目的功能:功能是利用两组交通灯,当南北向红灯时,东北向绿灯,当南北向绿灯时,东西向红灯,且有倒计时(期限为30秒)的独特设计。当红灯与绿灯转换时黄灯闪烁,历时5秒。2总体方案设计:利用定时器实现计时,用数码管显示数字,利用中断系统实行红绿灯的转换,利用硬件显示方案的功能。三硬件系统电路:黄绿红黄绿红PB0PB7接数码管PA0PA7开始(TIME3)30(TIMEOUT)0(P1)EW_G;车辆方向,绿灯亮TL0,TH0是否溢出执行中断程序TIMEOUT是1或0(TIMES)5;黄灯亮5秒(P1)东西黄灯亮EW_Y(LEDMASK)#80H;用来使黄灯闪烁四软件模块和流程图(SP)50H(TH0)T8H;设置TK0初值,5秒(P1)0FF;灯均不亮产生中断。(DPTR)0FF;传送命令寄存器地址(ET0)1(A)30H(EA)1(DPTR)(A);设置命令寄存器,使(TR0)1;使T/CO开始计时。AO,BO为输出口(TMOD)01H;T/CO为计时器,且为方式1。(TL0)0FCH溢出发生中断中断返回是1溢出发生中断是0是1溢出发生中断是0中断返回溢出发生中断是0中断返回返回到开始是1TL0,TH0,是否溢出执行中断程序TIMEOUT是0,是1?(TIMES)30;绿灯亮30秒(P1)3N_G;南北绿灯亮TL0,TH0,是否溢出执行中断程序TIMEOUT是1或0(TIMES)5;黄灯亮5秒(P1)SN_Y;南北黄灯亮(LEDMASK)#08H,完成黄灯闪烁TL0,TH0,是否溢出执行中断程序TIMEOUT是1是0?中断流程图:亮了没亮不为0到100ms为0至100ms不到1s到1s不为0中断程序(TH0)0EC(TL0)078;为新中断赋初值(DPTR)ZIXING;B口作为字形输出口(A)#01H(DPTR)(A)第一个数码管亮INCR0(01H)变为(02H);下次中断时第二个数码亮管第二十数码管是否亮了准备下次中断使第一个数码管亮TIME1减1后判0,使时间间隔为5ms*20=100s如果是黄灯,使之闪烁TIME2减1后判0使时间间隔为100MS*10=1sTIME3减1后判0灯亮时间为0?TIMEOUT=1;实现让下一个灯亮灯亮时间分成两位十位放到DISBUF1中;作为第二个数码管字形个位放到DISBUF0中;作为第一个数码管字形中断返回五汇编程序:EW_GEQU10111101BEW_YEQU01111101BSN_GEQU11011011BSN_YEQU110101111BLEDMASKEQU31HTIMESEQU30HTIME1EQU32HTIME2EQU33HDISBUF0EQU40HDISBUF1EQU41HP_DISEQU34HPOSEQU35HZIXINGEQU0FF22HZIWEIEQU0FF21HTIMEOUTBIT20H,0ORG0000HLJMPSTARTORG000BHLJMPTOSVRORG0100HSTART:MOVSP,#50HMOVP1,#0FFHMOVDPTR,#0FF20HMOVA,#03HMOVX@DPTR,AMOVTMOD,#01HMOVTH0,#0ECHMOVTH0,#78H;5msMOVTIME1,#20MOVTIME2,#10MOVLEDMASK,#0MOVPOS,#01HMOVP_DIS,#40HSETBET0SETBEASETBTR0REPEAT:MOVP1,#EW_GMOVLEDMASK,#00HMOVTIMES,#30MOVTIMEOUTL1:JNBTIMEOUT,L1MOVP1,#EW_YMOVLEDMASK,#80HMOVTIMES,#5CLRTIMEOUTL2:JNBTIMEOUT,L2MOVP1,#SN_GMOVLEDMASK,#00HMOVTIMES,#30CLRTIMEOUTL3:JNBTIMEOUT,L3MOVP1,#SN_YMOVLEDMASK,05HMOVTIMES,#5CLRTIMEOUTL4:JNBTIMEOUT,L4SJMPREPEATTOSVR:PUSHPSNPUSHACCPUSHRS1PUSHRS0MOVTH0,#0ECHMOVTL0,#078HMOVDPTR,#ZIXINGMOVR0,P_DISMOVA,@R0MOVX@DPTR,AJNCR0MOVP_DIS,R0MOVA,POSMOVDPTR,#ZIWEIMOVX@DPTR,ARLAMOVPOS,AJNBACC.2,NEXTMOVPOS,#01HMOVP_DIS,#40HNEXT:DJNZTIME1,TO_2MOVTIME1,#20;20*5ms=100msMOVA,LEDMASKRLP1,ADJNZTIME2,TO_2MOVTIME2,#10DJNZTIMES,TO_1SETBTIMEOUTTO_1:MOVA,TIMESMOVB,#10DIVABMOVDPTR,#DISCODEMOVCA,@A+DPTRMOVDISBUF1,AMOVA,BMOVCA,@A+DPTRMOVDISBUF0,ATO_2:POPACCPOPPSWRETDISCODE:DB000H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90HDB88H,83H,006H,0A1H,86H,8EHEND六调试方案:运行过程中,曾有无中断的现象,在汇编程序中加入JNB语句解决此问题;输入程序过程中出现个别输入性错误,如TIMEOUT---“TIMEOUT”,已得到修正调试;该设计方案调试时运行良好,无错误出现,感谢老师的指导与帮助。七结果评价:对于本次设计实验我个人认为,总体上是比较成功的,基本上达到了预期的目的和要求。但是也并非完美,程序还存在一定的缺陷,有待在今后的学习中进一步完善。如果满分是100分的话,那么我给自己75分,这既是对自己一周努力的肯定,同时提醒自己满分还有一段距离,以此作为今后努力的动力.心得:在本次实验当中我发现了自己的许多不足之处,发现了自己的知识死角,并积极的从各种途径查阅资料,虚心的向同学请教,在获取知识的同时也增进了同学之间的友谊,在老师同学讲解后我对单片机有了更深层次的了解和认识.我相信通过这次的设计实习,会让我以更加自信的的态度去面对今后的工作和学习.