1、单片机课程设计报告单片机应用及其接口技术课程设计交通灯模型的设计课程设计报告交通灯模型的设计课程设计报告一、课程设计题目: 交通灯模型的设计二、实验目的:(1)掌握P3.3输入、P1口输出。(2)掌握串行口工作方式及编程方法,学习串行LED驱动的方法。(3)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程。(4)用单片机模拟实现具体应用,使个人设计能够真正使用。(5)把理论知识与实践相结合,充分发挥个人能力,并在实践中得到锻炼。(6)提高利用已学知识分析和解决问题的能力。(7)提高实践动手能力。三、课程设计任务和基本要求:1、设计任务设计和真实交通等功能相同的交通灯模
2、型,通过LED显示通过时间,并且可以通过按键设定东西、南北单向通行。2、基本要求运用定时器做一十字路口交通灯模型,并实现手动控制交通灯单向通行。三、课程设计题目分析:1、设计要点(1)利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。设东西向为主干道,南北为支干道。(2)处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。(3)干道均有车
3、时,两者交替允许通行,主干道每次放行30秒,支干道每次放行25秒。(4)绿灯亮到红灯亮的转换过程中,要亮3秒黄灯作为过渡。2、工作原理(1)口做输出口,与12个发光二极管相连,实现定时点亮相应二极管。使用口的第二功能,串行口在工作方式0下作为同步移位寄存器使用,用作输入输出端,引脚上输出移位时钟信号,频率固定为,驱动显示通行倒计时。、做外部中断输入口,外接拨码开关实现手动控制交通灯单向通行。使用定时器延时1s作倒计时逐秒递减使用,在8051时钟频率为12MHz的情况下,定时计数器最大可定时65.536ms。故要使用软件计数和硬件定时相结合的方法:。用定时计数器0定时50ms,则必须让其工作在方
4、式1下,其初始值为:。(2) P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。 (3) P1口做输出口,编写程序,使P1口接的8个发光二极管L1L8按16进制加一方式点亮发光二极管。(4)用MCS-51系统的定时器的计数功能,使其把计数结果利用串行口通过传入并出芯片74LS164驱动LED数码管显示出来。 四、课程设计的电路设计:五、汇编语言程序设计:1、程序流程图2、汇编程序 利用延时程序实现倒计时功能程序:ORG 0000HLJMP STARTORG 0003H LJMP K1ORG 0013HLJMP K2ORG 0030H /主程序START: SETB EA ;
5、通过中断启动紧急情况,设置外部中断SETB EX0 SETB PX0CLR IT0SETB EX1SETB PX1CLR IT1MOV P1, #00H ;P1口置0,选择启动交通灯SETB P1.2 ;东西绿灯亮SETB P1.3 ;南北红灯亮N2: MOV R3,#30 ;倒计时30sN1: LCALL DISP ;调用串口驱动LED程序 DEC R3 LCALL DL1s ;调用延时1s程序 CJNE R3, #00,N1CLR P1.2 ;东西绿灯灭SETB P1.1 ;东西黄灯亮MOV R3,#03H ;黄灯亮3sN3: LCALL DL1sDJNZ R3,N3MOV P1, #00
6、HSETB P1.0 ;东西红灯亮SETB P1.5 ;南北绿灯亮MOV R3,#25 ;倒计时25sN4: LCALL DISP ;调用串口驱动LED程序DEC R3LCALL DL1sCJNE R3,#00H,N4CLR P1.5 ;南北绿灯灭SETB P1.4 ;南北黄灯亮MOV R3,#03H ;黄灯亮3sN5: LCALL DL1sDJNZ R3,N5MOV P1, #00HLJMP START ;交通灯循环点亮/串口驱动LED程序DISP: MOV A,R3 MOV B,#10 DIV AB MOV R5 ,A MOV A,B MOV B,R5 MOV DPTR,#TAB MOVC
7、 A,A+DPTR MOV SBUF,A MOV R2,#0FFH DJNZ R2,$ MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A RET/延时程序DL512: MOV R0,#0FFH ;延时512usLOOP1: DJNZ R0,LOOP1 RETDL10ms: MOV R1,#14H ;延时10msLOOP2: LCALL DL512 DJNZ R1,LOOP2 RETDL1s:MOV R2,#50 ;延时1sLOOP3: LCALL DL10ms DJNZ R2,LOOP3 RETTAB:DB 0fch,60h,0dah,0f2h,66
8、h,0b6h,0beh,0e0h DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh/中断程序K1: MOV P1, #00H ;紧急情况1,南北通行SETB P1.0SETB P1.5MOV A,#00MOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,ARETIK2: MOV P1, #00H ;紧急情况2,东西通行SETB P1.3SETB P1.2MOV A,#00MOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,ARETIEND采用定时器方式实现延时控制的程序ORG 0000HJMP MAINORG 0003H ;定时器T
9、0中断入口地址LJMP BRT0ORG 0013H ;定时器T1中断入口地址LJMP BRT1TIME EQU 30HTIME15S EQU 31HTIME3S EQU 32HMAIN:ANL 20H,#00H MOV TIME3S,#3 MOV TIME15S,#20 MOV TMOD,#11H ;设置T0和T1工作于方式1下 MOV TH0,#3CH MOV TL0,#0B0H ;50ms定时初值的赋值 SETB EA ;开中断START: LCALL KEYWORK JB 00H,FUN0AJMP STARTKEYWORK: MOV P3,#0FFH ;置P3口为输入状态 JNB P3.
10、0,KEY0 RETKEY0:LCALL DL10MS JB P3.0 , OUT0 SETB 00H CLR 01H CLR 02H OUT0:RETFUN0:MOV R4,#20 /15s南北向绿灯、东西向红灯点亮MOV A,#0AFHMOV P1,ALCALL DISP ;调用串口驱动LED程序LCALL TIME_15S/15s后,南北向的绿灯闪烁3次,东西向保持红灯点亮MOV R3,#6FLASH1:CPL P1.6LCALL DISP ;调用串口驱动LED程序LCALL DL05SDJNZ R3,FLASH1/南北向黄灯亮,东西向保持红灯MOV A,#0CFHMOV P1,ALCA
11、LL DISP ;调用串口驱动LED程序LCALL TIME_3S/南北向红灯,东西向绿灯MOV A,#77HMOV P1,ALCALL DISP ;调用串口驱动LED程序LCALL TIME_15S/东西向绿灯闪烁,南北向红灯MOV R3,#6FLASH2: CPL P1.3LCALL DISP ;调用串口驱动LED程序LCALL DL05SDJNZ R3,FLASH2/东西向黄灯亮,南北向仍然保持红灯MOV A,#7BHMOV P1,ALCALL DISP ;调用串口驱动LED程序LCALL TIME_3SLJMP START/串口驱动LED程序DISP: MOV A,R3 MOV B,#
12、10 DIV AB MOV R5 ,A MOV A,B MOV B,R5 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A MOV R2,#0FFH DJNZ R2,$ MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,ATAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh RET/15s定时子程序TIME_15S:SETB ET0SETB TR0MOV TIME,TIME15SLOOP1: MOV A,TIMECJ
13、NE A,#00H,LOOP1CLR TR0RET/3s定时子程序TIME_3S: MOV TIME,TIME3SSETB ET0SETB TR0LOOP2:MOV A,TIMECJNE A,#00,LOOP2CLR TR0RET/5s定时子程序DL05S:MOV R5,#10MOV TH1,#3CHMOV TL1,#0B0H SETB ET1SETB TR1RET/T0中断服务程序BRT0: PUSH ACCPUSH PSWCLR TR0MOV TH0,#3CHMOV TL0,#0B0HDJNZ R4,OVERMOV R4,#20DEC TIMEOVER:SETB TR0POP PSWPOP
14、 ACCRETI/T1中断服务程序BRT1: PUSH ACCPUSH PSWCLR TR1MOV TH1,#3CHMOV TL1,#0B0HDEC R5SETB TR1POP PSWPOP ACCRETIDL10MS:MOV R0,#14HLOOP4: MOV R1,#250LOOP3:DJNZ R1,LOOP3 DJNZ R0,LOOP4 RET END六、课程设计心得体会:对于交通灯这个题目,由于以前做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,联系课本以前做过的实验,初步完成了电路设计方案。虽然感觉交通灯程序没什么难的,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来。起初我是采用定时器方式实现延时控制的,但是经过多次编译、调试、修改之后还是无法运行出正确的结果,由于课程设计的时间限制我就改用延时程序实现倒计时功能,得到了正确的结果。通过这次课程设计,加强了我们动手、思考和解决问题的能力,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中我发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在以后学习中我会尽量改正。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1