微机原理课程设计
——步进电机的控制系统
学 院:电子信息工程学院
专 业:
班 级
姓 名:
学 号:
指导老师:
电子信息工程学院
目录
一. 方案设计思路……………………………………………… 2
二. 硬件系统的基本原理…………………………………………2
三、软件框图:…………………………………………………6
四、步进电机与8255A接口关系:………………………………7
五、控制程序:………………………………………………7
六、课程设计心得与体会…………………………9
方案设计思路:
本设计采用电压为DC12V的四相八拍步进电机35BYJ46型电机,用ULN2003作为步进电动机驱动电路主芯片,以8255A作为8086并行输出接口,8086对步进电机的控制信号则通过8255A送到ULN2003.
关于转向与转速,通过查表的方式实现,以逐次递增方向查表,依次输出表中数据,则步进电机正转;以逐次递减方向查表,则步进电机反转,即通过一个表实现步进电机的正转与反转。转速则通过调用延时子程序,当调用延时较长的子程序时,则步进电机转速慢,当调用延时较短的子程序时,步进电机转速加快
硬件系统的基本原理:
1. 励磁线圈及其励磁顺序如下图及下表所示:
2. 工作原理:4相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成
当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。
例如:若送电的顺序为S1闭合断开S2闭合断开S3闭合断开S4闭合断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:
若送电的顺序为S4闭合断开S3闭合断开S2闭合断开S1闭合断开,周而复始的循环,则电机就逆时针旋转,原理同理。
8255工作方式介绍:
Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种;
方式0 :基本的输入输出方式,即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。
方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.
方式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:A组包括A口及C口高4位,B组包括B口及C组的低4位。
8255的内部结构及引脚如下图所示。
8255工作方式控制字和C口按位置位/复位控制字格式如下图所示。
(a)工作方式控制字 (b)C口按位置位/复位控制字
软件框图:
步进电机与8255A接口关系:
控制程序:
1、正转程序
STACK SEGMENT STACK
DW 256 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE DB 01H,03H,02H,06H,04H,0CH,08H,09H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MAIN: MOV AL,90H
OUT 63H,AL
A1: MOV BX,OFFSET TABLE
MOV CX,0008H
A2: MOV AL,[BX]
OUT 61H,AL
CALL DALLY
INC BX
LOOP A2
JMP A1
DALLY: PUSH CX
MOV CX,5000H
A3: PUSH AX
POP AX
LOOP A3
POP CX
RET
CODE ENDS
END START
2、正反转变速程序
STACK SEGMENT STACK
DW 256 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE1 DB 01H,03H,02H,06H,04H,0CH,08H,09H
TABLE2 DB 08H,0CH,04H,06H,02H,03H,01H,09H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MAIN: MOV AL,90H
OUT 63H,AL
A0: DX 0020H
A1: MOV BX,OFFSET TABLE1
MOV CX,0008H
DEC DX
CMP DX,0000H
JE B0
A2: MOV AL,[BX]
OUT 61H,AL
CALL DALLY1
INC BX
LOOP A2
JMP A1
B0: DX 0020H
B1: MOV BX,OFFSET TABLE2
MOV CX,0008H
DEC DX
CMP DX,0000H
JE A0
B2: MOV AL,[BX]
OUT 61H,AL
CALL DALLY2
INC BX
LOOP B2
JMP B1
DALLY1: PUSH CX
MOV CX,0500H
A3: PUSH AX
POP AX
LOOP A3
POP CX
RET
DALLY2: PUSH CX
MOV CX,0050H
A3: PUSH AX
POP AX
LOOP A3
POP CX
RET
CODE ENDS
END START
课程设计总结与体会:
在这次课程设计当中我学习很多东西也了解到自己在平时的学习当中的不足之处。
通过这次课程设计,我了解了步进电动机的工作原理及接口电路原理,学会了用编程实现步进电动机正反转及加速的方法。通过自己发现和解决一些问题,扩展了自己的创新能力。遇到自己不明白的地方通过查阅书籍得到了解决,同时也巩固了8086的接口扩展技术编程技术。