单片机直流电机控制.docx
《单片机直流电机控制.docx》由会员分享,可在线阅读,更多相关《单片机直流电机控制.docx(12页珍藏版)》请在冰豆网上搜索。
单片机直流电机控制
单片机课程设计报告书
课题名称
姓名
学号
院、系、部
专业
指导教师
201
直流电机控制
20086503贾辰斌
一、设计目的
1、了解D/A转换芯片0832的性能、基本转换原理以及编程方法。
2、了解数码管动态显示的原理。
3、掌握键盘扫描的工作原理。
4、使用8255扩展键盘的接口方法和编程方法。
5、了解直流电机控制原理。
6、学习单片机控制直流电机的编程方法。
7、了解单片机控制外部设备的常用电路。
二、设计要求
1、利用D/A电路,输出-8V到+8V的电压,控制直流电机。
2、电机速度可调,具有启动键、方向控制键及提示灯、加速键、减速键及停止键:
S0键-升速,每按一次,电压值增大一个定值,转速提高。
S1键-减速,每按一次,电压值减小一个定值,转速降低。
3、利用霍尔元件感应电机转速,读出感应脉冲,从而计算出电机转速,用数码管显示出来。
三、硬件电路设计
四、使用说明
在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。
本实验仪的D/A变换可输出-8V到+8V的电压,将电压经驱动后加在直流电机上,使其运转。
通过单片机输出数据到D/A变换电路,控制电压的高低和正负,观察电机的旋转情况。
在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用单片机控制读回感应脉冲,从而测算出电机的转速。
有兴趣的同学,可以做一个恒速的试验,即让电机转速保持一定。
若电机转速偏低,则提高输出电压,若电机转速偏高,则降低输出电压。
首先给电机一定的阻力,让转速保持一定,然后稍微给加大阻力,观察D/A输出的电压是否能做出反应,再减小阻力,也观察D/A电压,有何变化。
注意所加的阻力不能过大,以免电机烧毁。
五、流程图设计
六、程序设计如下:
HANGEQU8001H
LIEEQU8002H
DUANEQU8004H
LEDBUFEQU60H;显示缓冲
NUMEQU70H;显示的数据
SPEEDEQU90H
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVA,#128
MOVDPTR,#9000H
MOVX@DPTR,A
K0:
MOVR4,#04H
K1:
MOVA,#00H;判断
MOVDPTR,#LIE
MOVX@DPTR,A
MOVDPTR,#HANG
MOVXA,@DPTR
CPLA
ANLA,#0FH;00001111
JNZK2
AJMPK1
K2:
MOVR5,#255
LP:
DJNZR5,LP;DELAY
MOVR7,A
K3:
MOVA,#00H;再判断
MOVDPTR,#LIE
MOVX@DPTR,A
MOVDPTR,#HANG
MOVXA,@DPTR
CPLA
ANLA,#0FH
JNZK5
AJMPK1
K5:
MOVB,R7
CJNEA,B,K1
ACALLKSCAN
JBC11H,K1
LCALLKPRO
AJMPK1
KSCAN:
MOVR6,#20H;00100000
MOVA,R6
CPLA
MOVDPTR,#LIE
MOVX@DPTR,A;10111110
MOVR3,#00H;存列值
KS1:
MOVDPTR,#HANG
MOVXA,@DPTR
JBACC.3,KS2
MOVA,#00H;存行值
RET
KS2:
JBACC.2,KS3
MOVA,#04H
RET
KS3:
JBACC.1,KS4
MOVA,#08H
RET
KS4:
JBACC.0,NEXT
MOVA,#0CH
RET
NEXT:
INCR3;列值加1
MOVA,R6
RRA
MOVR6,A
CPLA
MOVDPTR,#LIE
MOVX@DPTR,A
DJNZR4,KS1
MOVR4,#04H
SETB11H;没扫描到有效键值
RET
KPRO:
ADDA,R3
RLA
MOVDPTR,#KTAB
JMP@A+DPTR
KTAB:
AJMPSTART
AJMPCHANGE
AJMPUP
AJMPDOWN
AJMPSTOP
AJMPKEY5
AJMPKEY6
AJMPKEY7
AJMPKEY8
AJMPKEY9
AJMPKEYA
AJMPKEYB
AJMPKEYC
AJMPKEYD
AJMPKEYE
AJMPKEYF
START:
MOVDPTR,#9000H
MOVA,#0B0H
MOV90H,A
MOVX@DPTR,A
LCALLDELAY
LJMPDISPLAY
RET
CHANGE:
MOVDPTR,#9000H
MOVXA,@DPTR
MOVR7,A
MOVA,#256
SUBBA,R7
MOV90H,A
MOVX@DPTR,A
LJMPDISPLAY
RET
UP:
MOVDPTR,#9000H
MOVA,90H
ADDA,#20
MOV90H,A
MOVX@DPTR,A
LCALLDELAY
LJMPDISPLAY
RET
DOWN:
MOVDPTR,#9000H
MOVA,90H
SUBBA,#20
MOV90H,A
MOVX@DPTR,A
LCALLDELAY
LJMPDISPLAY
RET
STOP:
MOVDPTR,#9000H
MOVA,#128
MOVX@DPTR,A
MOV90H,#0
LCALLDELAY
LJMPDISPLAY
RET
KEY5:
LJMPKSCAN
KEY6:
LJMPKSCAN
RET
KEY7:
LJMPKSCAN
RET
KEY8:
LJMPKSCAN
RET
KEY9:
LJMPKSCAN
RET
KEYA:
LJMPKSCAN
RET
KEYB:
LJMPKSCAN
RET
KEYC:
LJMPKSCAN
RET
KEYD:
LJMPKSCAN
RET
KEYE:
LJMPKSCAN
RET
KEYF:
LJMPKSCAN
RET
DISPLAY:
MOV76H,A;将当前寄存器A中的内容给76H单元进行保存
MOVTMOD,#05H;方式控制字T0设为计数器
MOVTH0,#00H;计数初值为0
MOVTL0,#00H
SETBTR0;开计数器
MOV55H,#4;延时约1S
D01:
MOV56H,#250
D02:
MOV57H,#248
D03:
DJNZ57H,D03
DJNZ56H,D02
DJNZ55H,D01
CLRTR0;1S到关计数器
MOVR1,TH0;送数
MOVR0,TL0
MOV70H,R0
MOV71H,R1
START2:
MOVR4,#100;显示次数
START02:
MOVSP,#40H;堆栈指针
MOVA,70H;计数得到的低8位数给A
MOVR0,#LEDBUF;缓冲地址
ANLA,#0FH;屏蔽高位,传送低位
MOVDPTR,#LEDMAP;表地址
MOVCA,@A+DPTR;数字转换成显示码
MOV@R0,A;显示码填入显示缓冲
INCR0;缓冲地址加1
MOVA,70H;计数得到的低8位数给A
ANLA,#0F0H;屏蔽地位,传送高位
MOVDPTR,#LEDMAP;表地址
MOVCA,@A+DPTR;数字转换成显示码
MOV@R0,A;显示码填入显示缓冲
INCR0;缓冲地址加1
MOVA,71H;计数得到的高8位给A
ANLA,#0FH;屏蔽高位,传送地位
MOVDPTR,#LEDMAP;表地址
MOVCA,@A+DPTR;数字转换成显示码
MOV@R0,A;显示码填入显示缓冲
INCR0;缓冲地址加1
MOVA,71H;计数得到的高8位给A
ANLA,#0F0H;屏蔽低位,传送高位
MOVDPTR,#LEDMAP;表地址
MOVCA,@A+DPTR;数字转换成显示码
MOV@R0,A;显示码填入显示缓冲
LJMPDISPLAYLED;到显示程序
LEDMAP:
;八段管显示码表格
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DISPLAYLED:
MOVR0,#LEDBUF;缓冲地址
MOVR1,#4;共4个八段管
MOVR2,#00000001B;从右边开始显示
MOVDPTR,#LIE;位选
MOVA,#0
MOVX@DPTR,A;关所有八段管
LOOP:
MOVA,@R0
MOVDPTR,#DUAN;段选
MOVX@DPTR,A
MOVDPTR,#LIE
MOVA,R2
MOVX@DPTR,A;显示一位八段管
MOV4AH,#10
DL2:
MOV4BH,#200
DL1:
DJNZ4BH,DL1
DJNZ4AH,DL2
MOVA,R2;显示下一位
RLA
MOVR2,A
INCR0
DJNZR1,LOOP
DJNZR4,START02
MOVA,76H
LJMPK0;显示完成,跳回检验处
DELAY:
MOVR5,#5;延时子程序1秒
MOVR6,#200
LP1:
MOVR7,#248
DJNZR7,$
DJNZR6,LP1
LP2:
DJNZR5,LP2
RET
END
七、设计总结:
通过本次课程设计,我学到了很多东西,同时也暴露出了很多问题。
首先表现在面对一个相对较为综合内容进行编程,不知道该如何下手;另外,甚至在看别人的程序时也有许多地方搞不明白;还有,像键盘这一块根本不知道是怎么用的。
但是,课程设计完之后我发现了自己的很多弊病。
最主要的是我对0832、8255以及键盘这些内容的理解还不是很透彻,这也就直接导致了我无法按要求编写出甚至调试出程序来。
因此,我当前对单片机的任务就是先理解好各块的功能以及程序的编写方法,这样才能编写好一般的功能性程序,最终尝试一下较大的程序编写。
八、参考文献:
1、《单片机原理及应用实验指导书》,屈波等编,2008年
2、《单片机原理及应用》,赵德安等编,机械工业出版社,2004
3、《单片机原理及应用》,雷晓平等编著,机械工业出版社,2007
4、高峰.单片微型计算机原理与接口技术.科学出版社,2007