单片机课程设计报告Word下载.docx
《单片机课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
(4)绿灯亮到红灯亮的转换过程中,要亮3秒黄灯作为过渡。
2、工作原理
(1)
口做输出口,与12个发光二极管相连,实现定时点亮相应二极管。
使用
口的第二功能,串行口在工作方式0下作为同步移位寄存器使用,
用作输入输出端,
引脚上输出移位时钟信号,频率固定为
,驱动
显示通行倒计时。
、
做外部中断输入口,外接拨码开关实现手动控制交通灯单向通行。
使用定时器延时1s作倒计时逐秒递减使用,在8051时钟频率为12MHz的情况下,定时计数器最大可定时65.536ms。
故要使用软件计数和硬件定时相结合的方法:
。
用定时计数器0定时50ms,则必须让其工作在方式1下,其初始值为:
(2)P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。
(3)P1口做输出口,编写程序,使P1口接的8个发光二极管L1—L8按16进制加一方式点亮发光二极管。
(4)用MCS-51系统的定时器的计数功能,使其把计数结果利用串行口通过传入并出芯片74LS164驱动LED数码管显示出来。
四、课程设计的电路设计:
五、汇编语言程序设计:
1、程序流程图
2、汇编程序
利用延时程序实现倒计时功能程序:
ORG0000H
LJMPSTART
ORG0003H
LJMPK1
ORG0013H
LJMPK2
ORG0030H
//主程序
START:
SETBEA;
通过中断启动紧急情况,设置外部中断
SETBEX0
SETBPX0
CLRIT0
SETBEX1
SETBPX1
CLRIT1
MOVP1,#00H;
P1口置0,选择启动交通灯
SETBP1.2;
东西绿灯亮
SETBP1.3;
南北红灯亮
N2:
MOVR3,#30;
倒计时30s
N1:
LCALLDISP;
调用串口驱动LED程序
DECR3
LCALLDL1s;
调用延时1s程序
CJNER3,#00,N1
CLRP1.2;
东西绿灯灭
SETBP1.1;
东西黄灯亮
MOVR3,#03H;
黄灯亮3s
N3:
LCALLDL1s
DJNZR3,N3
MOVP1,#00H
SETBP1.0;
东西红灯亮
SETBP1.5;
南北绿灯亮
MOVR3,#25;
倒计时25s
N4:
LCALLDISP;
DECR3
LCALLDL1s
CJNER3,#00H,N4
CLRP1.5;
南北绿灯灭
SETBP1.4;
南北黄灯亮
MOVR3,#03H;
N5:
LCALLDL1s
DJNZR3,N5
LJMPSTART;
交通灯循环点亮
//串口驱动LED程序
DISP:
MOVA,R3
MOVB,#10
DIVAB
MOVR5,A
MOVA,B
MOVB,R5
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
MOVR2,#0FFH
DJNZR2,$
RET
//延时程序
DL512:
MOVR0,#0FFH;
延时512us
LOOP1:
DJNZR0,LOOP1
DL10ms:
MOVR1,#14H;
延时10ms
LOOP2:
LCALLDL512
DJNZR1,LOOP2
DL1s:
MOVR2,#50;
延时1s
LOOP3:
LCALLDL10ms
DJNZR2,LOOP3
TAB:
DB0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
//中断程序
K1:
MOVP1,#00H;
紧急情况1,南北通行
SETBP1.0
SETBP1.5
MOVA,#00
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
RETI
K2:
MOVP1,#00H;
紧急情况2,东西通行
SETBP1.3
SETBP1.2
END
采用定时器方式实现延时控制的程序
ORG0000H
JMPMAIN
ORG0003H;
定时器T0中断入口地址
LJMPBRT0
ORG0013H;
定时器T1中断入口地址
LJMPBRT1
TIMEEQU30H
TIME15SEQU31H
TIME3SEQU32H
MAIN:
ANL20H,#00H
MOVTIME3S,#3
MOVTIME15S,#20
MOVTMOD,#11H;
设置T0和T1工作于方式1下
MOVTH0,#3CH
MOVTL0,#0B0H;
50ms定时初值的赋值
开中断
LCALLKEYWORK
JB00H,FUN0
AJMPSTART
KEYWORK:
MOVP3,#0FFH;
置P3口为输入状态
JNBP3.0,KEY0
RET
KEY0:
LCALLDL10MS
JBP3.0,OUT0
SETB00H
CLR01H
CLR02H
OUT0:
FUN0:
MOVR4,#20
//15s南北向绿灯、东西向红灯点亮
MOVA,#0AFH
MOVP1,A
LCALLDISP;
LCALLTIME_15S
//15s后,南北向的绿灯闪烁3次,东西向保持红灯点亮
MOVR3,#6
FLASH1:
CPLP1.6
LCALLDL05S
DJNZR3,FLASH1
//南北向黄灯亮,东西向保持红灯
MOVA,#0CFH
LCALLDISP;
LCALLTIME_3S
//南北向红灯,东西向绿灯
MOVA,#77H
//东西向绿灯闪烁,南北向红灯
FLASH2:
CPLP1.3
LCALLDL05S
DJNZR3,FLASH2
//东西向黄灯亮,南北向仍然保持红灯
MOVA,#7BH
MOVA,R3
MOVB,#10
DIVAB
MOVR5,A
MOVA,B
MOVB,R5
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
MOVR2,#0FFH
DJNZR2,$
//15s定时子程序
TIME_15S:
SETBET0
SETBTR0
MOVTIME,TIME15S
MOVA,TIME
CJNEA,#00H,LOOP1
CLRTR0
//3s定时子程序
TIME_3S:
MOVTIME,TIME3S
MOVA,TIME
CJNEA,#00,LOOP2
//5s定时子程序
DL05S:
MOVR5,#10
MOVTH1,#3CH
MOVTL1,#0B0H
SETBET1
SETBTR1
//T0中断服务程序
BRT0:
PUSHACC
PUSHPSW
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR4,OVER
MOVR4,#20
DECTIME
OVER:
POPPSW
POPACC
//T1中断服务程序
BRT1:
CLRTR1
DECR5
DL10MS:
MOVR0,#14H
LOOP4:
MOVR1,#250
DJNZR1,LOOP3
DJNZR0,LOOP4
END
六、课程设计心得体会:
对于交通灯这个题目,由于以前做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,联系课本以前做过的实验,初步完成了电路设计方案。
虽然感觉交通灯程序没什么难的,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来。
起初我是采用定时器方式实现延时控制的,但是经过多次编译、调试、修改之后还是无法运行出正确的结果,由于课程设计的时间限制我就改用延时程序实现倒计时功能,得到了正确的结果。
通过这次课程设计,加强了我们动手、思考和解决问题的能力,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中我发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在以后学习中我会尽量改正。