通用步进电机控制器设计(精通单片机汇编语言的朋友进)

任务:
1.步进电机驱动器能驱动四相步进电机。
2.驱动器用两线控制方式,一根控制方向,一根控制速度。
3.能用按键分别控制电机的启动与停止,正转,反转。
4. 能用按键分别设定正转或反转的步数。
5. 能从按键调整正转或反转的速度。
6. 能显示设定的正转或反转的步数.
希望各位按上面要求做,给我提供源程序,并附必要的程序说明,另外给我个电路原理图(元件要清晰的)
我是单片机初学者,希望懂的朋友指点下

实验七:8255A+8253+8259A

<实验目的>
了解步进电机的的基本控制原理,掌握控制步进电机的转速、转向的程序设计方法。
<实验内容>
用8255A的PA0~3分别控制步进电机的A、B、C、D四相,“1”则该相绕组通电,“0”则不通电。步进电机的驱动原理是使各相绕组依次通电来使其作步进式旋转,通过通电顺序和切换频率来调节其转速和转向。步进电机可以四相四拍或四相八拍方式工作,即通电顺序为:A→B→C→D→A;A→AB→B→BC→C→CD→D→DA→A。按相反的顺序即可改变电机的旋转方向。本实验系统采用的是:AB→BC→CD→DA→AB。
注:电机在起动和停止时,不应该突然起、停。而应采用逐渐加速、减速的方式。至于起、停所需时间则依产品型号而定。
<实验电路>
8255A: PA0~3与步进电机的BA~BD相连;
8253: GATE0接+5v;

CLK0接393分频器的T2插孔(4.9125/4MHz),或T3~6插孔(分别是8、16、32、64分频);

CS接译码器单元的Y2;

数据线D0~7与系统数据总线单元任一插座相连;

译码单元: 译码器输入A、B、C与系统地址线A2、A3、A4相连;

译码器控制端G与系统地址线A0下方的G相连。
8259单元: CS端与译码器单元的Y0相连;

D0~7与系统数据总线单元任一插座相连;
最后,将8253的OUT0与8259的IR7相连。

<实验程序>
CODE
SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE

ORG 3400H
H8:
JMP P8259
PORT0
EQU 0FFE0H
PORT1
EQU 0FFE1H
;-------------------初始化-------------------
P8259: CLI

MOV AX,OFFSET INT8259

MOV BX,003CH

MOV [BX],AX

MOV BX,003EH

MOV AX,0000H

MOV [BX],AX

CALL FOR8259

MOV SI,0000H
I8255: MOV DX,0FFDBH
MOV AL,8AH

OUT DX,AL

MOV BL,03
P8253: MOV DX,0FFD9H
;

IN AL,DX
;选择3种转速

TEST AL,01H

JNZ QQQ

TEST AL,02H

JNZ WWW

MOV DX,0FFEBH
;转速0

MOV AL,34H

OUT DX,AL

MOV DX,0FFE8H

MOV AL,00H

OUT DX,AL

MOV AL,096H

OUT DX,AL

JMP OVER1
QQQ:
MOV DX,0FFEBH
;转速1

MOV AL,34H

OUT DX,AL

MOV DX,0FFE8H

MOV AL,00H

OUT DX,AL

MOV AL,010H

OUT DX,AL

JMP OVER1
WWW:
MOV DX,0FFEBH
;转速2

MOV AL,34H

OUT DX,AL

MOV DX,0FFE8H

MOV AL,00H

OUT DX,AL

MOV AL,0F0H

OUT DX,AL
OVER1:
STI

;中断子程序------------------------------------
INT8259:CLI
MOV DX,0FFD8H
MOV SI,0FFD9H//通过PB7控制正反转
IN AL,SI
AND AL,80H
JZ X59
XX59:
MOV AL,BL

OUT DX,AL

SHL BL,1

CMP BL,18H

JZ A1

CMP BL,12H

JNZ C1

MOV BL,03H

JMP C1
A1:
MOV BL,09H
C1:
MOV AL,20H

MOV DX,PORT0

OUT DX,AL

STI

IRET
X59:
MOV AL,BL

OUT DX,AL

SHR BL,1

CMP BL,81H

JZ A2

CMP BL,88H

JNZ C2

MOV BL,0CH

JMP C2
A2:
MOV BL,09H
C2:
MOV AL,20H

MOV DX,PORT0

OUT DX,AL

STI

IRET

;8259A初始化==============================
FOR8259:MOV AL,13H

MOV DX,PORT0

OUT DX,AL

MOV AL,08H

MOV DX,PORT1

OUT DX,AL

MOV AL,09H

OUT DX,AL
MOV AL,7FH
;IRQ7

OUT DX,AL

RET
CODE
ENDS
END H8
<思考与练习>
1. 计算出步进电机走一步旋转的角度,能否精确的回到原点。
答:18度,能。
2.如何控制步进电机的起、停?
答:用8253的GATE0门控制,高电平时起,低电平时停。
3.如何控制步进电机的转速和转向?
答:进入中断,通过8355A的PB7输入来控制正反转向;
温馨提示:答案为网友推荐,仅供参考