单片机课程设计步进电机.docx

上传人:b****8 文档编号:29989797 上传时间:2023-08-04 格式:DOCX 页数:15 大小:92.06KB
下载 相关 举报
单片机课程设计步进电机.docx_第1页
第1页 / 共15页
单片机课程设计步进电机.docx_第2页
第2页 / 共15页
单片机课程设计步进电机.docx_第3页
第3页 / 共15页
单片机课程设计步进电机.docx_第4页
第4页 / 共15页
单片机课程设计步进电机.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机课程设计步进电机.docx

《单片机课程设计步进电机.docx》由会员分享,可在线阅读,更多相关《单片机课程设计步进电机.docx(15页珍藏版)》请在冰豆网上搜索。

单片机课程设计步进电机.docx

单片机课程设计步进电机

单片机课程设计

 

题目:

步进电机控制

姓名:

班级:

学号:

 

一、设计任务,原理,步骤

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

 

六、计心得体会

本学期我们学习的单片机原理及应用这门课,为了让我们能更好的理解学习到的理论知识并锻炼我们的实际编程的能力,学院给我们安排了一周的课程设计,主要的内容是步进电机的控制。

步进电机控制系统是用软件代替步进控制器,使得线路简单,成本低,可靠性大大增加,灵活改变步进电机的控制方案,无需逻辑电路组成时序发生器软件编程可灵活产生步进电机励磁序列来控制步进电机的运行方式。

用此方式设计步进电机控制系统顺应了目前国内外控制系统微机化发展的趋势充分利用了单片机的优点使得通用性得到了提高。

伴随不同的数字化技术的发展以及步进电机本身技术的提高步进电机将会在更多的领域得到应用

这次课程设计使我对单片机有了更进一步的了解,使我认识到课程的重要性,同时也感受到理论与实践之间的差距。

单片机编程是用汇编语言进行编程,需要我们对电路进行分析,然后总结,查阅相关资料才能编好程序。

通过编程让我再一次复习了单片机编程的特点和用法。

在设计过程中我们遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文才做成的。

在设计过程中老师所传授给我们的设计理念和思想起了很重要的作用。

总的来说一周的课程设计,锻炼了我对所学知识的应用能力,使我们对单片机系统有了更加深刻的认识。

由于时间仓促,加上经验和知识的局限,所以设计存在一定的不足之处。

最后特别感谢两位老师对本次课程设计所提供的技术支持!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1