1、单片机直流电机控制单片机课程设计报告书课题名称 姓 名学 号 院、系、部专 业指导教师201直流电机控制20086503 贾辰斌一、设计目的1、了解D/A转换芯片0832的性能、基本转换原理以及编程方法。 2、了解数码管动态显示的原理。 3、掌握键盘扫描的工作原理。 4、使用8255扩展键盘的接口方法和编程方法。 5、了解直流电机控制原理。 6、学习单片机控制直流电机的编程方法。 7、了解单片机控制外部设备的常用电路。 二、设计要求1、利用D/A电路,输出-8V到+8V的电压,控制直流电机。2、电机速度可调,具有启动键、方向控制键及提示灯、加速键、减速键及停止键:S0键-升速,每按一次,电压值
2、增大一个定值,转速提高。S1键-减速,每按一次,电压值减小一个定值,转速降低。3、利用霍尔元件感应电机转速,读出感应脉冲,从而计算出电机转速,用数码管显示出来。三、硬件电路设计四、使用说明 在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。本实验仪的D/A变换可输出-8V到+8V的电压,将电压经驱动后加在直流电机上,使其运转。通过单片机输出数据到D/A变换电路,控制电压的高低和正负,观察电机的旋转情况。在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用单片机控制读回感应脉冲,从而测算出电机的转速。有兴趣的同学,可以做一个恒速的试验,即让电机转速保
3、持一定。若电机转速偏低,则提高输出电压,若电机转速偏高,则降低输出电压。 首先给电机一定的阻力,让转速保持一定,然后稍微给加大阻力,观察D/A输出的电压是否能做出反应,再减小阻力,也观察D/A电压,有何变化。注意所加的阻力不能过大,以免电机烧毁。五、流程图设计六、程序设计如下:HANG EQU 8001H LIE EQU 8002H DUAN EQU 8004H LEDBUF EQU 60H ; 显示缓冲 NUM EQU 70H ; 显示的数据 SPEED EQU 90H ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV A,#128 MOV DPTR,#9000H
4、 MOVX DPTR,AK0: MOV R4,#04H K1: MOV A,#00H ;判断 MOV DPTR,#LIE MOVX DPTR,A MOV DPTR,#HANG MOVX A,DPTR CPL A ANL A,#0FH ;00001111 JNZ K2 AJMP K1 K2: MOV R5,#255 LP: DJNZ R5,LP ;DELAY MOV R7,A K3: MOV A,#00H ;再判断 MOV DPTR,#LIE MOVX DPTR,A MOV DPTR,#HANG MOVX A,DPTR CPL A ANL A,#0FH JNZ K5 AJMP K1 K5: MO
5、V B,R7 CJNE A,B,K1 ACALL KSCAN JBC 11H,K1 LCALL KPRO AJMP K1KSCAN: MOV R6,#20H ;0010 0000 MOV A,R6 CPL A MOV DPTR,#LIE MOVX DPTR,A ;1011 1110 MOV R3,#00H;存列值 KS1:MOV DPTR,#HANG MOVX A,DPTR JB ACC.3,KS2 MOV A,#00H;存行值 RET KS2:JB ACC.2,KS3 MOV A,#04H RET KS3:JB ACC.1,KS4 MOV A,#08H RET KS4:JB ACC.0,NE
6、XT MOV A,#0CH RET NEXT:INC R3;列值加1 MOV A,R6 RR A MOV R6,A CPL A MOV DPTR,#LIE MOVX DPTR,A DJNZ R4,KS1 MOV R4,#04H SETB 11H;没扫描到有效键值 RET KPRO:ADD A,R3 RL A MOV DPTR,#KTAB JMP A+DPTRKTAB: AJMP START AJMP CHANGE AJMP UP AJMP DOWN AJMP STOP AJMP KEY5 AJMP KEY6 AJMP KEY7 AJMP KEY8 AJMP KEY9 AJMP KEYA AJM
7、P KEYB AJMP KEYC AJMP KEYD AJMP KEYE AJMP KEYFSTART: MOV DPTR,#9000H MOV A,#0B0H MOV 90H,A MOVX DPTR,A LCALL DELAY LJMP DISPLAY RETCHANGE: MOV DPTR,#9000H MOVX A,DPTR MOV R7,A MOV A,#256 SUBB A,R7 MOV 90H,A MOVX DPTR,A LJMP DISPLAY RETUP: MOV DPTR,#9000H MOV A,90H ADD A,#20 MOV 90H,A MOVX DPTR,A LCA
8、LL DELAY LJMP DISPLAY RETDOWN: MOV DPTR,#9000H MOV A,90H SUBB A,#20 MOV 90H,A MOVX DPTR,A LCALL DELAY LJMP DISPLAY RETSTOP: MOV DPTR,#9000H MOV A,#128 MOVX DPTR,A MOV 90H,#0 LCALL DELAY LJMP DISPLAY RETKEY5: LJMP KSCANKEY6: LJMP KSCAN RETKEY7: LJMP KSCAN RETKEY8: LJMP KSCAN RETKEY9: LJMP KSCAN RETKE
9、YA: LJMP KSCAN RETKEYB: LJMP KSCAN RETKEYC: LJMP KSCAN RETKEYD: LJMP KSCAN RETKEYE: LJMP KSCAN RETKEYF: LJMP KSCAN RETDISPLAY: MOV 76H,A ; 将当前寄存器A中的内容给76H单元进行保存 MOV TMOD,#05H ; 方式控制字 T0设为计数器 MOV TH0,#00H ; 计数初值为0 MOV TL0,#00H SETB TR0 ; 开计数器 MOV 55H,#4 ; 延时约1SD01: MOV 56H,#250D02: MOV 57H,#248D03: D
10、JNZ 57H,D03 DJNZ 56H,D02 DJNZ 55H,D01 CLR TR0 ; 1S到关计数器 MOV R1,TH0 ; 送数 MOV R0,TL0 MOV 70H,R0 MOV 71H,R1START2: MOV R4,#100 ; 显示次数START02: MOV SP, #40H ; 堆栈指针 MOV A, 70H ; 计数得到的低8位数给A MOV R0, #LEDBUF ; 缓冲地址 ANL A, #0FH ; 屏蔽高位,传送低位 MOV DPTR, #LEDMAP ; 表地址 MOVC A, A+DPTR ; 数字转换成显示码 MOV R0,A ; 显示码填入显示缓
11、冲 INC R0 ; 缓冲地址加1 MOV A, 70H ; 计数得到的低8位数给A ANL A, #0F0H ; 屏蔽地位,传送高位 MOV DPTR, #LEDMAP ; 表地址 MOVC A, A+DPTR ; 数字转换成显示码 MOV R0,A ; 显示码填入显示缓冲 INC R0 ; 缓冲地址加1 MOV A, 71H ; 计数得到的高8位给A ANL A, #0FH ; 屏蔽高位,传送地位 MOV DPTR, #LEDMAP ; 表地址 MOVC A, A+DPTR ; 数字转换成显示码 MOV R0,A ; 显示码填入显示缓冲 INC R0 ; 缓冲地址加1 MOV A, 71H
12、 ; 计数得到的高8位给A ANL A, #0F0H ; 屏蔽低位,传送高位 MOV DPTR, #LEDMAP ; 表地址 MOVC A, A+DPTR ; 数字转换成显示码 MOV R0,A ; 显示码填入显示缓冲 LJMP DISPLAYLED ; 到显示程序LEDMAP: ; 八段管显示码表格 DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HDISPLAYLED: MOV R0, #LEDBUF ; 缓冲地址 MOV R1, #4 ; 共4个八段管 MOV R2, #0
13、0000001B ; 从右边开始显示 MOV DPTR, #LIE ; 位选 MOV A, #0 MOVX DPTR, A ; 关所有八段管LOOP: MOV A, R0 MOV DPTR, #DUAN ; 段选 MOVX DPTR,A MOV DPTR, #LIE MOV A, R2 MOVX DPTR, A ; 显示一位八段管 MOV 4AH,#10DL2: MOV 4BH, #200DL1: DJNZ 4BH, DL1 DJNZ 4AH, DL2 MOV A, R2 ; 显示下一位 RL A MOV R2, A INC R0 DJNZ R1, LOOP DJNZ R4,START02 M
14、OV A,76H LJMP K0 ;显示完成,跳回检验处DELAY: MOV R5,#5 ;延时子程序 1秒 MOV R6,#200LP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LP1LP2: DJNZ R5,LP2 RET END七、设计总结:通过本次课程设计,我学到了很多东西,同时也暴露出了很多问题。首先表现在面对一个相对较为综合内容进行编程,不知道该如何下手;另外,甚至在看别人的程序时也有许多地方搞不明白;还有,像键盘这一块根本不知道是怎么用的。 但是,课程设计完之后我发现了自己的很多弊病。最主要的是我对0832、8255以及键盘这些内容的理解还不是很透彻,这也就直接导致了我无法按要求编写出甚至调试出程序来。因此,我当前对单片机的任务就是先理解好各块的功能以及程序的编写方法,这样才能编写好一般的功能性程序,最终尝试一下较大的程序编写。 八、参考文献:1、单片机原理及应用实验指导书,屈波等编,2008年 2、单片机原理及应用,赵德安等编,机械工业出版社,2004 3、单片机原理及应用,雷晓平等编著,机械工业出版社,2007 4、高峰.单片微型计算机原理与接口技术.科学出版社,2007
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1