课程设计说明书
MOVC A,@A+DPTR MOV R2,#8
LOOP: ; 传送个位数 RLC A
MOV P1.4,C ; 用p1.4传输进164
CLR P1.5 ; 用p1.5口得到上升沿,触发164 SETB P1.5 DJNZ R2,LOOP
MOV A,B ; MOVC A,@A+DPTR MOV R2,#8
LOOP1: ; RLC A MOV P1.4,C CLR P1.5 SETB P1.5 DJNZ R2,LOOP1 MOV A,R0 MOVC A,@A+DPTR MOV R2,#8
LOOP2: ; RLC A
MOV P1.4,C ; CLR P1.5 ; SETB P1.5 DJNZ R2,LOOP2
MOV A,#00H MOVC A,@A+DPTR MOV R2,#8
LOOP3: ; RLC A
MOV P1.4,C ; CLR P1.5 ; SETB P1.5 DJNZ R2,LOOP3
十位数送入A 传送十位数 传送百位数 用p1.4传输进164
用p1.5口得到上升沿,触发164 传送最高位0 用p1.4传输进164
用p1.5口得到上升沿,触发164 12
课程设计说明书
LCALL DELAY ;-----检测按键------ saomiaoanjian:
MOV A,50H ; 把50H单元寄存的内容回送给A MOV DPTR,#7fffh ; 选中DAC0832 CLR P1.2
JB P1.2,START ; p1.2接启动键,以某一较高速度启动 SETB P1.3
JB P1.3,CUT ; p1.3 CLR P1.0
JB P1.0,UP ; p1.0 CLR P1.1
JB P1.1,DOWN ; p1.1 JMP AAA
mm:MOV TH1,#0A7H ; MOV TL1,#54H
RETI ; ;-----启动---------- START:MOV A,#07FH MOVX @DPTR,A LCALL DELAY JMP AAA
;-----停止---------- CUT: MOV A,#00H MOVX @DPTR,A LCALL delay JMP AAA DELAY:MOV R5,#20 D2:MOV R6,#50 D3:MOV R7,#250 D4:NOP NOP DJNZ R7,D4 DJNZ R6,D3 DJNZ R5,D2 RET
;-----加速----------
接停止键 接加速键,若按下则转up加速 接减速键,若按下则转down减速 定时器定时27.7ms赋初值 不到416ms,中断返回,继续循环 13
课程设计说明书
UP: ; 每次按键增加0.1V CJNE A,#0FFH,AA
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY JMP AAA AA:INC A CJNE A,#0FFH,BB
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY JMP AAA BB:INC A CJNE A,#0FFH,CC
MOVX @DPTR,A ; LCALL DELAY JMP AAA CC:INC A CJNE A,#0FFH,DD
MOVX @DPTR,A ; LCALL DELAY JMP AAA DD:INC A CJNE A,#0FFH,EE
MOVX @DPTR,A ; LCALL DELAY JMP AAA EE:INC A
MOVX @DPTR,A ; LCALL DELAY JMP AAA
;-----减速----------
DOWN: ; CJNE A,#00H,FF
MOVX @DPTR,A ; LCALL DELAY JMP AAA FF:DEC A DEC A
向DAC0832输数据 向DAC0832输数据 向DAC0832输数据 向DAC0832输数据 每次按键减小0.1V 向DAC0832输数据 14
课程设计说明书
CJNE A,#00H,HH
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY JMP AAA HH:DEC A CJNE A,#00H,JJ
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY JMP AAA JJ:DEC A CJNE A,#00H,KK
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY JMP AAA KK:DEC A
MOVX @DPTR,A ; 向DAC0832输数据 LCALL DELAY AAA:
LCALL DELAY
MOV 50H, A ; 把A的内容寄存给50H单元
MOV r4,#3 ; 设置定时26ms的次数,共得到416ms MOV TH0,#00H ; 计数器赋初值0 MOV TL0,#00H
MOV TH1,#0A7H ; 定时器定时27.7ms赋初值 MOV TL1,#54H
SETB TR0 ; 开计数器 SETB TR1 ; 开定时器
RETI ; 到416ms,中断返回,继续测速 ORG 0100H
DMB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H END
15
课程设计说明书
7设计体会及总结
这次课程设计是一次非常好的锻炼机会,通过这五天的学习,发现了自己的很多不足,自己知识的不怎么牢固,看到了自己的实践经验更是比较缺乏,理论联系实际的能力还急需提高进一步加深了对单片机的了解,让我对它有了更加浓厚的兴趣。通过这次课程设计使我懂得了理论与实际相结合是很重要的在解决这些问题的时候,我不断向老师和同学请教,希望能通过大家一块的努力,让系统的功能更完备。经过几天的努力探索,也经过老师的指导,大部分问题都已经解决,后来经过一点一点的调试,并认真总结,修改后实现了直流电机调速的目的
课设过程中有些问题给我留下深刻印象,连接线后,要检查系统各跳线器是否处在初始设置状态,以保证硬件的可操作性。在编写程序时,会出现各种错误,例:(1)target out of range:这种情况是程序繁琐冗长使跳转超出范围,主要有jb jc jnb jnc jbc sjmp djnz acall jz jnz cjne等跳转指令超出跳转的范围,一般可以增加分支或改用长跳转指令LJMP,LCALL等解决。(2)SJMP $指令不可在定时器中断中乱用,要严格按照程序顺序执行才可以正确使用。程序必须反复写-修改-使用,还要学会熟练使用单步调试修改程序。这样,只有硬件与软件相匹配好后,才能达到试验功能成功。
16
课程设计说明书
8参考文献
【1】马建国、孟宪元,《电子设计自动化技术基础》 【2】姜威,实用电子系统设计基础》. 2008年1月
【3】张靖武,《单片机系统的PROTEUS设计与仿真》. 2007年4月
17