资源描述
微机原理步进电机控制课程设计报告
14
2020年4月19日
文档仅供参考,不当之处,请联系改正。
河北科技大学
课程设计报告
学生姓名: 学 号:
专业班级:
课程名称:
年学期: 2 0 —2 0 年第 学期
指导教师:
2 0 年 月
课程设计成绩评定表
学生姓名
学 号
成绩
专业班级
起止时间
设计题目
指
导
教
师
评
语
学习态度:端正 □ 较端正 □ 一般 □ 较差 □
学习纪律:好 □ 较好 □ 一般 □ 较差 □
电路设计与连线:好 □ 较好 □ 一般 □ 较差 □
程序设计:好 □ 较好 □ 一般 □ 较差 □
动手能力:强 □ 较强 □ 一般 □ 较差 □
课程设计完成情况:优秀 □ 好 □ 一般 □ 较差 □
课程设计报告完成情况:优秀 □ 好 □ 一般 □ 较差 □
指导教师:
年 月 日
目 录
一、设计题目……………………………………………………………….
二、设计目的……………………………………………………………….
三、设计原理及方案……………………………………………………….
四、实现方法……………………………………………………………….
五、实施结果……………………………………………………………….
六、改进意见及建议……………………………………………………….
七、设计体会……………………………………………………………….
、
一、 设计题目
编程实现步进电机的控制
二、 设计目的
1. 了解步进电机控制的基本原理
2. 掌握控制步进电机转动的编程方法
3. 了解8086控制外部设备的常见电路
4. 掌握8255的使用方法
三、设计原理及方案
3.1设计原理
步进电机驱动原理是经过对每相线圈中的电流的顺序切换(实验中的步进电机有四相线圈,每次有二相线圈有电流,有电流的相顺序变化),来使电机作步进式旋转。驱动电路由脉冲信号来控制,因此调节脉冲信号的频率便可改变步进电机的转速。
利用 8255对四相步进电机进行控制。当对步进电机施加一系列连续不断的控制脉冲时,它能够连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机能够在不同的通电方式下运行,常见的通电方式有单(单相绕组通电) 四拍(A-B-C-D-A…),双(双相绕组通电)四拍(AB-BC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…)等。
经过编程对8255的输出进行控制,使输出按照相序表给驱动电路供电,则步进电机的输入也和相序表一致,这样步进电机就能够正向转动或反向转动。
3.2硬件连接图
四.实现方法
4.1.步进电机控制程序流图
开始
初始化8255
入口判断
相序置入
Y
N
出口判断
退出
转向或调速
延迟控制
4.2.程序代码
ASTEP EQU 01H
BSTEP EQU 02H
CSTEP EQU 04H
DSTEP EQU 08H
CODE SEGMENT
ASSUME CS:CODE
START :
MOV DX, 8003H; 8255控制口地址
MOV AL, 82H ;PA口输出,B口输入
OUT DX, AL ;写控制字
K0:
MOV DX, 8000H ;PA口地址
MOV AL,0 ; 输出低电平
OUT DX,AL ; 电机停止转动
MOV DX,8001H ;PB口地址
IN AL,DX ;读开关状态
TEST AL,01H ; PB0位(K0=0吗?)
JNZ K1 ;不是零转K1
JMP STEP8 ; 是零转单/双八拍工作方式
K1:
IN AL,DX ;读开关状态
TEST AL,02H ;PB1位(K1=0吗?)
JNZ K2 ; 不是零转K2
JMP STEP4 ;是零转双四拍工作方式
K2:
IN AL,DX ;读开关状态
TEST AL,04H ;PB2位(K2=0吗?)
JZ STEP41 ;是零转单四拍反转工作方式
JMP K0 ;循环
; 单/双八拍工作方式:A→AB→B→BC→C→CD→D→DA→A
STEP8:
MOV BX,9000H;设置初始延时时间
MOV DX, 8000H;PA口地址
MOV AL,ASTEP
OUT DX,AL
CALL DELAY
MOV AL,ASTEP+BSTEP
OUT DX,AL
CALL DELAY
MOV AL,BSTEP
OUT DX,AL
CALL DELAY
MOV AL,BSTEP+CSTEP
OUT DX,AL
CALL DELAY
MOV AL,CSTEP
OUT DX,AL
CALL DELAY
MOV AL,CSTEP+DSTEP
OUT DX,AL
CALL DELAY
MOV AL,DSTEP
OUT DX,AL
CALL DELAY
MOV AL,DSTEP+ASTEP
OUT DX,AL
CALL DELAY
JMP K0
; 双四拍工作方式:AB→BC→CD→DA→AB
STEP4:
MOV BX,5000H;设置延时时间
MOV DX, 8000H;PA口地址
MOV AL,ASTEP+BSTEP;PA0PA1(AB相)输出高电平
OUT DX,AL
CALL DELAY ;调延时
MOV AL,BSTEP+CSTEP ;BC输出高电平
OUT DX,AL
CALL DELAY ; 调延时
MOV AL,CSTEP+DSTEP;CD输出高电平
OUT DX,AL
CALL DELAY ; 调延时
MOV AL,DSTEP+ASTEP;DA输出高电平
OUT DX,AL
CALL DELAY ;调延时
JMP K0
; 单四拍反转工作方式: D→C→B→A→D
STEP41:
MOV BX,1000H;设置延时时间
MOV DX,8000H;PA口地址
MOV AL,DSTEP; D输出高电平
OUT DX,AL
CALL DELAY;调延时
MOV AL,CSTEP; C输出高电平
OUT DX,AL
CALL DELAY;调延时
MOV AL,BSTEP; B;输出高电平
OUT DX,AL
CALL DELAY;调延时
MOV AL,ASTEP; A输出高电平
OUT DX,AL
CALL DELAY;调延时
JMP K0
DELAY PROC NEAR ;延时子程序
PUSH CX
MOV CX,BX
DD1:
NOP
LOOP DD1
POP CX
RET
DELAY ENDP ; 延时子程序结束
CODE ENDS ;代码段结束
END START
五.实施结果
5.1.操作步骤
1、硬件测试
【WINXP】à【步进电机】
2、在硬件测试经过后,要注意三个相一致
(1)PNP地址和数据段中的端口地址。
(2)控制字和接线。
(3)代码段中的端口地址和接线。
3、把程序代码烧进写实验箱中
5.2.运行结果
(1)K0扳下表示启动,步进电机转动。K0扳下表示停止,步进电机停止。
(2)K1扳下表示顺时针转,速度慢。
(3)K2扳下表示逆时针,即倒转,速度快。
六.改进意见及建议
程序设计没有实现加速和减速,在步进电机的转动函数里,每次循环都改变延时的大小即可实现变速。延时时间依次变长则步进电机减速,延时时间依次变短则步进电机加速。再配合开关即可实现加速减速的任意控制。
七.设计体会
这次做的实验是一个比较综合的实验,实验中主要是微机原理的编程,但还涉及到步进电机的有关知识以及一些专业基础课的知识,因此要做好这次实验我们需要做的有很多。
首先,在查找资料的过程中,我更加理解了8255在微型计算机中的重要作用,理解了8255的基本的编程结构和基本控制字的设计方法,也锻炼了自己的动手能力和创新意识。
其次,在编写汇编程序过程中,由于早先对汇编语言学习的不扎实,我们遇到了很大的困难,可是随着对问题理解的逐渐深入,这些问题最终都一一化解了。经过这次步进电机控制代码的编写,让我有了一个更深刻的认识:要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。
在这个过程中,不但提高了实际动手操作能力,培养了治学严谨的态度,激发了我学习此专业课程的兴趣,而且让我们深刻的体验到理论知识与实践经验的密切联系,要成为一个高技术人才,必须理论与实践两手都要硬。在设计时,对不同方案的构思、分析、比较到最后的方案确定,这些工作,能够增强了我们分析、解决问题的能力,培养了我们的创新意识。
展开阅读全文