单片机课程设计步进电机.docx
《单片机课程设计步进电机.docx》由会员分享,可在线阅读,更多相关《单片机课程设计步进电机.docx(15页珍藏版)》请在冰豆网上搜索。
![单片机课程设计步进电机.docx](https://file1.bdocx.com/fileroot1/2023-8/4/978c0a17-bed4-4a9a-9cc3-7361de1c1591/978c0a17-bed4-4a9a-9cc3-7361de1c15911.gif)
单片机课程设计步进电机
单片机课程设计
题目:
步进电机控制
姓名:
班级:
学号:
一、设计任务,原理,步骤
1.任务:
从键盘上输入正、反转命令,转速参数(16级)和转动步数显示在LED显示器上。
显示器上显示:
第一位为0表示正转,为1表示反转;第二位0~F为转速等级,第三到第六位设定步数。
单片机依显示器上显示的正、反转命令,转速级数和转动步数进行相应动作,转动步数减为零时停止转动。
2.原理:
步进电机基本原理
如图,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。
那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。
相数:
产生不同对极N、S磁场的激磁线圈对数。
拍数:
指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB或A-B-C-D-A,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.步距角:
对应一个脉冲信号电机转子转过的角位移.
步距角=360/(转子齿数*拍数)设计原理
系统中使用20BY-0型号步进电机,它使用+5V直流电源,步距角为18度,电机线圈由A、B、C、D四相组成。
步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
BA、BB、BC、BD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。
3.步骤:
键盘程序→显示器程序→驱动电机程序
二、硬件原理图
1.步进电机模块插头接实验系统J3插座,(顺接)把P1.0~P1.3分别接到BA~BD插孔
2.数码管显示字形LED显示器是由发光二极管构成的字段组成的显示器。
显示程序任务:
设置显示缓冲区(7EH-79H),存放待显示数据和字符(位置码)。
显示译码:
程序存储器中建立字形码常数表,查表得出对应数据和字符的字形码。
输出显示:
输出字形码到显示端口。
3.字位口表(从高位起)
4.键盘显示原理
三、内存使用分配表
步序
控制位
工作
状态
控制
模型
P1.7
P1.6
P1.5
P1.4
P1.3D相
P1.2
C相
P1.1
B相
P1.0
A相
1
0
0
0
0
0
0
0
1
A
01H
2
0
0
0
0
0
0
1
1
AB
03H
3
0
0
0
0
0
0
1
0
B
02H
4
0
0
0
0
0
1
1
0
BC
06H
5
0
0
0
0
0
1
0
0
C
04H
6
0
0
0
0
1
1
0
0
CD
OCH
7
0
0
0
0
1
0
0
0
D
08H
8
0
0
0
0
1
0
0
1
DA
09H
四、每个模块程序的详细流程图
1.显示子程序模块采用动态显示方式,即一位一位地轮流点亮(扫描)6位显示器。
在8032RAM存储器中设置六个显示缓冲区单元7EH-79H,分别存放6位显示器的显示数据(从高到低)
2.键盘输入模块
实验系统有4×8的键盘结构(见键扫显示原理图)。
键盘的行线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,行线都为高电平。
当键盘上某一键闭合时,则该键所对应的行线和列线都短路。
CPU逐行逐列地检查键盘的状态,可判断键盘上有无键闭合。
CPU对键盘上闭合键的键号确定,可根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得。
3.步进电机控制模块
五、程序清单
ORG0000H
AJMPMAIN
ORG0050H
MAIN:
MOVSP,#40H
MOV79H,#00H
MOV7AH,#00H
MOV7BH,#00H
MOV7CH,#00H
MOV7DH,#00H
MOV7EH,#00H
MOVR1,#7EH;取显示内存缓冲区的第一位a
MAIN1:
ACALLKEY1;调用按键程序
MOV@R1,A
CJNER1,#78H,KS
CJNEA,#16H,AGAIN
LJMPRUN
AGAIN:
LJMPMAIN
KS:
DECR1
LJMPMAIN1
RUN:
MOVA,7EH
JZZHENG
JNZFAN
SJMP$
ZHENG:
MOVP1,#03H
ACALLDELAY
LCALLDISP
MOVP1,#06H
ACALLDELAY
LCALLDISP
MOVP1,#0CH
ACALLDELAY
LCALLDISP
MOVP1,#09H
ACALLDELAY
LCALLDISP
ANL79H,#0FH
ANL7AH,#0FH
ANL7BH,#0FH
ANL7CH,#0FH
LCALLDISP
LCALLDISP
MOVR5,79H
CJNER5,#0,Z1
DEC79H
MOVR5,7AH
CJNER5,#0,Z2
DEC7AH
MOVR5,7BH
CJNER5,#0,Z3
DEC7BH
MOVR5,7CH
CJNER5,#0,Z4
LJMPMAIN
Z1:
DEC79H
LJMPZHENG
Z2:
DEC7AH
LJMPZHENG
Z3:
DEC7BH
LJMPZHENG
Z4:
DEC7CH
LJMPZHENG
FAN:
MOVP1,#09H
ACALLDELAY
LCALLDISP
MOVP1,#0CH
ACALLDELAY
LCALLDISP
MOVP1,#06H
ACALLDELAY
LCALLDISP
MOVP1,#03H
ACALLDELAY
LCALLDISP
ANL79H,#0FH
ANL7AH,#0FH
ANL7BH,#0FH
ANL7CH,#0FH
LCALLDISP
LCALLDISP
MOVR5,79H
CJNER5,#0,F1
DEC79H
MOVR5,7AH
CJNER5,#0,F2
DEC7AH
MOVR5,7BH
CJNER5,#0,F3
DEC7BH
MOVR5,7CH
CJNER5,#0,F4
LJMPMAIN
F1:
DEC79H
LJMPFAN
F2:
DEC7AH
LJMPFAN
F3:
DEC7BH
LJMPFAN
F4:
DEC7CH
LJMPFAN
;DELAY:
MOVR7,#09H
;DELAY10:
MOVR6,7DH
;DELAY11:
MOVR5,7DH
;DELAY12:
DJNZR6,DELAY12
;DELAY13:
DJNZR5,DELAY13
;DJNZR7,DELAY10
;RET
HERE:
ACALLDISP
SJMPHERE
DISP:
MOVR0,#79H
MOVR2,#01H
DISP0:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#0FFDCH
MOVX@DPTR,A
MOVA,R2
MOVDPTR,#0FFDDH
MOVX@DPTR,A
ACALLDL1
INCR0
JBACC.6,L
RLA
MOVR2,A
AJMPDISP0
L:
RET
DELAY:
MOVR1,7DH
;DE4:
DJNZR6,ZAILAI
ZAILAI:
ACALLDISP
DJNZR1,ZAILAI
RET
DL1:
MOVR7,#03H
DE1:
MOVR6,#02FH
DE2:
DJNZR6,DE2
DJNZR7,DE1
RET
JUDGE:
MOVDPTR,#0FFDDH
MOVA,#00H
MOVX@DPTR,A
MOVDPTR,#0FFDEH
MOVXA,@DPTR
CPLA
ANLA,#0FH
RET
KEY1:
ACALLJUDGE
JNZLK1
ACALLDISP
AJMPKEY1
LK1:
ACALLDISP
ACALLJUDGE
JNZLK2
ACALLDISP
AJMPKEY1
LK2:
MOVR2,#0FEH
MOVR4,#00H
LK3:
MOVDPTR,#0FFDDH
MOVA,R2
MOVX@DPTR,A
INCDPTR
MOVXA,@DPTR
JBACC.0,LINE1
MOVA,#00H
AJMPLKP
LINE1:
JBACC.1,LINE2
MOVA,#08H
AJMPLKP
LINE2:
JBACC.2,LINE3
MOVA,#10H
AJMPLKP
LINE3:
JBACC.3,NEXT
MOVA,18H
LKP:
ADDA,R4
MOVDPTR,#TAB1
MOVCA,@A+DPTR
PUSHACC
NT:
ACALLDISP
ACALLJUDGE
JNZNT
POPACC
RET
NEXT:
INCR4
MOVA,R2
JNBACC.7,KND
RLA
MOVR2,A
AJMPLK3
KND:
AJMPKEY1
ORG0700H
TAB:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
TAB1:
DB7H,4H,8H,5H,9H,6,0AH,0BH,1,0,2,0FH3H,0EH,0CH,0DH00H,
00H,00H,00H,00H,00H,16H
END
六、计心得体会
本学期我们学习的单片机原理及应用这门课,为了让我们能更好的理解学习到的理论知识并锻炼我们的实际编程的能力,学院给我们安排了一周的课程设计,主要的内容是步进电机的控制。
步进电机控制系统是用软件代替步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器软件编程可灵活产生步进电机励磁序列来控制步进电机的运行方式。
用此方式设计步进电机控制系统顺应了目前国内外控制系统微机化发展的趋势充分利用了单片机的优点使得通用性得到了提高。
伴随不同的数字化技术的发展以及步进电机本身技术的提高步进电机将会在更多的领域得到应用
这次课程设计使我对单片机有了更进一步的了解,使我认识到课程的重要性,同时也感受到理论与实践之间的差距。
单片机编程是用汇编语言进行编程,需要我们对电路进行分析,然后总结,查阅相关资料才能编好程序。
通过编程让我再一次复习了单片机编程的特点和用法。
在设计过程中我们遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文才做成的。
在设计过程中老师所传授给我们的设计理念和思想起了很重要的作用。
总的来说一周的课程设计,锻炼了我对所学知识的应用能力,使我们对单片机系统有了更加深刻的认识。
由于时间仓促,加上经验和知识的局限,所以设计存在一定的不足之处。
最后特别感谢两位老师对本次课程设计所提供的技术支持!