步进电机实验微机原理

时间:2024.4.26

大连理工大学本科设计报告

(计算机原理接口实验综合设计)

题目: 步进电机控制系统设计 

        

课程名称:  计算机原理实验 

学院(系):       电信     

专    业:       自动化     

班    级:        100*   

学    号:      201081*** 

学生姓名:         **     

              成    绩:                 

201   年     月    0 日

题目:步进电机

1 设计要求

   利用实验台上的开关(K7-K0),实现步进电机的转速、转向控制。具体要求如下:

1.        利用D8255A的PA0-PA3做输出,输出步进电机的相序、驱动步进电机工作(使用四个LED监视步进电机的相序信号),相序之间的时间决定着步进电机的转速,而间隔时间由延时程序中的CX寄存器的初值决定(参见实验教材3.1.3章节)。

2.        利用D8255A的PB7-PB0做输入,与K7-K0连接。其中K7做步进电机的转向控制,其余位做步进电机的转速控制。程序运行时通过K7-K0对步进电机实施动态控制;

3.        利用8253做秒脉冲发生器,产生约2秒的周期性方波信号。其中CNT0做分频器:将1MHZ信号分频为100HZ;CNT1做秒脉冲输出(0.5HZ);

4.        利用386模块的主8259的MIR5做中断请求输入,将CNT1的OUT1秒信号方波作为中断请求信号,引发中断服务ISR;

5.        在中断服务程序中实现对步进电机的转速、转向实时控制。方法如下:在ISR中,对D8255A的PB口进行一次输入操作,并根据输入的数据:

1)        对D7(与K7对应)位的数据为步进电机的转向控制;

2)        对D6-D0(与K6-K0对应)位的数据为步进电机的转速控制。

2 设计分析及系统方案设计

1.        将初始相序存放在一个寄存器中(原始相序数据位66H),然后利用对该寄存器“移位”的方式产生下一个相序。其中对寄存器中的数据移位方向决定着电机旋转地方向。从而使步进电机运转起来。

2.        对8253进行编程,使OUT1输出2秒周期的脉冲方波信号。为了便于调试,建议使用逻辑笔监测OUT1的输出;

3.        编制与中断相关的程序。包括中断屏蔽字的设定、中断向量表的创建以及开中断的操作(参见教材3.3.3章节)。上述这些操作都应当加到程序的初始化中;

4.        编写中断服务程序ISR。在ISR中读取D8255A的PB口数据,然后进行数据分析、根据数据来调整CX寄存器中的数据,因而改变步进电机的转速和转向。

3     系统电路图

 


4 外围接口模块硬件电路功能描述

8253具有三个独立的16位减法计数器,每个计数器可按照二进制或十进制计数,每个通道都有六种不同的工作方式。

8255有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为主机与多种外设连接时的中间接口电路。  

5 主程序中主要变量说明

6   系统软件中各个子程序的功能描述

7   主程序程序流程图

 


8   程序清单

io8255_A    EQU 200H

io8255_B    EQU 201H

io8255_K    EQU 203H

io8253_0    EQU 270H

io8253_1    EQU 271H

io8253_K    EQU 273H

DATA     SEGMENT

  SPEED      DW 0280H,0380H,0480H,05800H,0680H,0780H,0880H

  SD     DW 0300H      ;默认转速

  FLAG    DB ?

  BUF    DB ?

DATA     ENDS

CODE     SEGMENT

  ASSUME     CS:CODE,DS:DATA

START:

  CLI                 ;关中断

  MOV FLAG,00H       ;标志位置一

  MOV AX,DATA

  MOV DS,AX

  MOV ES,AX  

 

  IN  AL,21H        ;设置中断屏蔽字

  AND AL,11011111B

  OUT 21H,AL

  PUSH DS              ;设置中断向量表

  MOV AX,0

  MOV DS,AX

  LEA AX,CS:INT_PROC

  MOV SI,35H

  ADD SI,SI

  ADD   SI,SI

  MOV DS:[SI],AX

  PUSH CS

  POP AX

  MOV DS:[SI+2],AX

  POP DS

  MOV DX,io8255_K        ;对8255写控制,A口输出,B口输入

  MOV AL,82H

  OUT DX,AL

  MOV BUF,33H          ;步进电机初始相位

  MOV DX,io8253_K    ;计数器0,分频

  MOV AL,00110101B

  OUT DX,AL

  MOV DX,io8253_0

  MOV AX,10000

  OUT   DX,AL

  MOV   AL,AH

  OUT DX,AL

  MOV DX,io8253_K     ;0.5S脉冲

  MOV AL,01110111B

  OUT DX,AL

  MOV DX,io8253_1

  MOV AX,200

  OUT DX,AL

  MOV AL,AH

  OUT DX,AL

OUT1:

  MOV AL,BUF         ;写相位

  MOV DX,io8255_A

  OUT DX,AL

  STI                   ;开中断

 LLL:

  CALL DELAY            ;延时

  CMP FLAG,01H

  JZ  NEX0

  MOV AL,BUF

  ROR AL,1

  JMP   NEX1

NEX0:

  MOV   AL,BUF

  ROL AL,1

NEX1:

  MOV DX,io8255_A

  OUT DX,AL

  MOV BUF,AL

  JMP LLL

DELAY PROC      ;延时函数

  PUSH AX

  PUSH CX

  PUSH DX

  MOV DH,6

X1:

  MOV CX,SD

X2:

  LOOP X2

  DEC DH

  JNZ X1

  POP DX

  POP CX

  POP AX

RET

DELAY ENDP 

INT_PROC PROC  FAR    ;中断服务子程序

  PUSH AX                     ;保护现场

  PUSH  CX

  MOV     DX,io8255_B               ;读8255B口输入

  IN   AL,DX

  CMP AL,80H                  ;通过判断输入获取FLAG和SD(cx)的值

  JB  CMP20

  MOV FLAG,01H

  JNZ CMP10

  MOV SD,0300H     

  JMP    EINT

CMP10:

  CMP AL,81H

  JNZ CMP11

  MOV   SI,WORD PTR SPEED[0]

  MOV SD,SI

  JMP    EINT

CMP11:

  CMP AL,82H

  JNZ CMP12

  MOV   SI,WORD PTR SPEED[2]

  MOV SD,SI

  JMP    EINT

CMP12:

  CMP AL,84H

  JNZ CMP13

  MOV   SI,WORD PTR SPEED[4]

  MOV SD,SI

  JMP    EINT

CMP13:

  CMP AL,88H

  JNZ CMP14

   MOV   SI,WORD PTR SPEED[6]

  MOV SD,SI

  JMP    EINT

CMP14:

  CMP AL,90H

  JNZ CMP15

   MOV   SI,WORD PTR SPEED[8]

  MOV SD,SI

  JMP    EINT

CMP15:

  CMP AL,0A0H

  JNZ CMP16

  MOV   SI,WORD PTR SPEED[10]

  MOV SD,SI

  JMP    EINT

CMP16:

  MOV   SI,WORD PTR SPEED[12]

  MOV SD,SI

  JMP    EINT

CMP20:

  MOV FLAG,00H

  CMP AL,00H

  JNZ CMP21

  MOV SD,0300H     

  JMP    EINT

CMP21:

 CMP  AL,01H

  JNZ CMP22

  MOV   SI,WORD PTR SPEED[0]

  MOV SD,SI

  JMP    EINT

CMP22:

  CMP AL,02H

  JNZ CMP23

   MOV   SI,WORD PTR SPEED[2]

  MOV SD,SI

  JMP    EINT

CMP23:

 CMP  AL,04H

  JNZ CMP24

  MOV   SI,WORD PTR SPEED[4]

  MOV SD,SI

  JMP    EINT

CMP24:

  TEST AL,08H

  JNZ CMP25

  MOV   SI,WORD PTR SPEED[6]

  MOV SD,SI

  JMP    EINT

CMP25:

 CMP  AL,10H

  JNZ CMP26

  MOV   SI,WORD PTR SPEED[8]

  MOV SD,SI

  JMP    EINT

CMP26:

  CMP AL,20H

  JNZ CMP27

  MOV   SI,WORD PTR SPEED[10]

  MOV SD,SI

  JMP    EINT

CMP27:

  MOV   SI,WORD PTR SPEED[12]

  MOV SD,SI

EINT:

  MOV AL,20H              ;发EOI命令

  OUT 20H,AL

  POP CX

  POP AX

  STI

  IRET

INT_PROC ENDP

CODE  ENDS

END START

9   系统调试运行结果说明、分析所出现得问题,设计体会与建议

软件环境:

硬件环境:

设计语言:汇编语言

调试过程中,在设计转速环节刚开始不清楚怎样引入速度值,后来经过多次试验以及同学探讨,终于明白可以通过改变CX的值而改变loop循环的次数,从而实现对延时的不同控制,得以完成实验。

   

6 结论及设计体会

      微机原理的学习使我对对汇编语言有了初步的了解。并且通过本实验让我对汇编语言产生很大的兴趣,让我掌握了汇编编程的总体思路,本实验利用微机控制步进电机的转向,在实验过程中遇到的问题告诉我们理论的编程要结合实际的电动机技术指标调试延迟时间。从这次实验中并让我进一步的学习到了8255的应用和掌握了8255 的初始化和其编程。对我们以后的工作和学习起到的积极的作用。

   

参考文献

**************************************************************


第二篇:微机原理课程步进电机设计报告


目     录

摘要:........................... 3

1 引言........................... 3

2 系统设计....................... 3

2.1系统的基本方案.............. 3

2.2 各模块的方案的选择和功能简述. 3

2.3 最终总体方案................ 4

2.4系统各模块的最终方案图....... 4

2.5 步进电机的工作原理.......... 4

2.6 8255的应用设计............. 5

2.7 转速的控制.................. 6

2.8 软件程序流程图.............. 7

2.9 系统的总体硬件原理图........ 8

3总结与致谢...................... 8

附件............................. 9

步进电机的微机控制

摘要:

微机原理是自动化专业和计算机专业的基础专业课,是对计算机系统和微处理器以及汇编语言、外围芯片的研究和学习。本设计就是基于8086CPU的微机控制,利用汇编语言,外围芯片8255的综合应用实例,连上硬件驱动电机电路,实施对步进电机的控制。通过此课程设计巩固了所学的知识,以及对汇编、C语言的温习和升华,同时是对我们动手、创新、独立思考问题能力的培养,为将来的计算机知识的进一步学习打下坚实的基础。

关键字:8086CPU  汇编程序   8255   驱动

1 引言

    在数控系统中,电机是控制系统的控制终端,所有的控制工作的目的就是为了控制电机的转速和方向。本文主要介绍一种控制步进电机的简单的系统搭建,和对电机的控制方法进行了论述。包括硬件接口的设计,汇编控制程序的编写,此方法简单,方便,通俗易懂。

2 系统设计

2.1系统的基本方案

PC机的控制模块,转速控制模块,转向控制模块,驱动模块

2.2 各模块的方案的选择和功能简述

由于本设计是基于星研环境下的汇编,以及给定实验室的实验仪器,PC机部分已经给定,可以直接利用。

转向控制模块:在设计当中,利用《微机原理和接口技术》所学知识,用8255外围接口芯片,通过对PC口的输出操作,实现对电机正反转的控制。

转速控制模块:在做8255并口实验的时候,利用对8255 A口或B口进行输入操作,检测各个开关的状态,而每个开关代表不同的速度,可以加速和减速。

驱动电路部分:经过查询,有两种方案可以进行驱动。

方案一:利用驱动芯片L297/L298芯片。SGS公司的L297单片步进电机控制集成电路适用于双极性两相步进电机或四相单极性步进电机的控制,与两片H桥式驱动芯片L298组合,组成完整的步进电机固定斩波频率的PWM恒流斩波驱动器。采用L297和L298实现的步进电机驱动,该电路为固定斩波频率的PWM恒流斩波驱动方式,适用两相双极性步进电机,最高电压46V,每相电流可达2A。采用此设计的步进电机驱动系统,在驱动二相或四相混合式步进电机时运动平稳,速度快,噪音低,控制精高,而且可选整步半步驱动。外观采用铝镁合金,散热性好,价格低廉,可广泛应用于需要驱动电流小于2A的混合式两相或四相步进电机的系统中。

方案二:利用驱动芯片ULN2003A。ULN2003A是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 输入5VTTL电平,是高耐压、大电流、内部由七个硅NPN 达林顿管组成的驱动芯片,灌电流可达500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。伺服电机、步进电机驱动等电路中。

 最终我选择了方案二。这两种驱动电路的不同之处在于驱动能力的不同,ULN2003的驱动电路只有500mA,可以驱动一些小型的电机,而298,297可以带动2A以上的电机。因为虽然方案一有很多的优点,但是要控制PWM斩波,调节占空比,对我来说有点困难,而且在实验仪器上的步进电机的功率不大,且仪器上用的ULN2003A驱动,用方案二完全可以完成实验,鉴于时间问题,只能在实验仪器上搭建硬件电路,综合以上考虑,选择了方案二。

2.3 最终总体方案

    以PC机为信息处理的核心,设计一块以可编程外围芯片8255为主体的硬件电路另加上驱动电机部分的ULN2003A芯片驱动,配合PC机对软件的控制处理,实现对电机转速、方向、加速和减速的控制。

2.4系统各模块的最终方案图

系统设计方案结构如图1所示

 

图1 系统设计总体方案

2.5 步进电机的工作原理

步进电机是将电脉冲信号转换成角位移或线位移的机电式元件,结构图如图2。这次试验仪上的电机是四相六线的。分A、B、C、D四相,其工作方式分为单四拍(A→B→C→D→A)、双四拍(AB→BC→CD→DA→AB)和单双八拍(A→AB→B→BC→C→CD→D→DA→A)。根据对各个相组合进行依次通电,便可以获得相应的节拍。本文采用的是双四拍的节拍信号。如图2所示为电机内部结构.

图2  电机内部链接

正转控制模型

反转控制模型 

2.6 8255的应用设计

可编程外围接口芯片8255有三个8位的输入输出端口A、B、C,有两种控制字:一类是定义各端口输入输出的工作方式,叫方式选择控制字。另一种是控制端口C的任一位的置位或复位操作,叫置位复位控制字。

本设计利用8255的方式选择控制字对其进行操作,A作输入端,C作输出端,工作于方式0:基本输入输出方式。A接在控制转速的开关上,C作输出操作A输入的各种响应。K0~K7为不同的速度控制键,其中K0为最低速度,K6为最高速度,K7控制电机的正反转,K7为0是反转,为1代表正转。硬件设计如图3所示

图3     8255硬件连接设计

  

2.7 转速的控制

    控制步进电机的速度,实际上是对控制系统发出的脉冲频率或换相的周期,即在升速的过程中使输出的脉冲频率逐渐增加;在减速的过程中使输出的脉冲频率逐渐减少。脉冲信号的频率可有软件控制和硬件控制。本文中采用了软件控制法,利用时间延迟的方法,利用不同的开关,写入不同的的延迟时间,表示不同的速度,可以加速,可以减速。

部分程序如下:

;定义延时子程序:延时程序是由两曾循环程序构成的BL是外曾循环的次数 CX是内层循环的次数延迟时间长则脉冲频率小转速慢

DELAY    PROC     NEAR  ;

DELAY1:   MOV     CX,0FFH

          MOV     BL,10H

DELAY2:   LOOP    DELAY2

          DEC     BL

          JNZ      DELAY1

          RET

DELAY ENDP

2.8 软件程序流程图

图4软件流程图

2.9 系统的总体硬件原理图

3总结与致谢

微机原理这门课程学完后我有很大的收获,对汇编语言有了初步的了解。并且通过本实验让我对汇编语言产生很大的兴趣,让我掌握了汇编编程的总体思路,本实验利用微机控制步进电机的调速,在实验过程中遇到的问题告诉我可以通过改变CX的赋值来控制电们理论的编程要结合实际的电动机技术指标调试延迟时间和实验箱的电机的转动速度。CX越小电动机的转动速度越大。也可以通过改变BL的值来改变单个开关的速度。我们把CX称为总开关,BL成为分开关。从而达到从K0到K6 速度逐渐变快,而K7控制电动机的反转。当K7闭合时 电动机反转。从这次实验中并让我进一步的学习到了8255的应用和掌握了8255 的初始化和其编程。对我们以后的工作和学习起到的积极的作用。

这次设计同时督促我查了许多的资料,让我学到了很多的知识,

附件

部分汇编程序

  DATA SEGMENT

COM_ADD       DW 00F3H  ;控制口偏移量

PA_ADD     DW 00F0H  ;PA口偏移量

PB_ADD     DW 00F1H  ;PB口偏移量

PC_ADD     DW      00F2H ;PC口偏移量     

BUF          DB     0      ;定义一个字节数据(用来存入开关的状态)

MES DB 'K0-K6 ARE SPEED CONTYOL',0AH,0DH;写入一些文字用来描述

    DB 'K6 IS THE HIGHEST SPEED ',0AH,0DH ;各个开关所代表的速度

    DB 'K0 IS THE LOWEST SPEED',0AH,0DH ;K0为最低速,K6为最高速

    DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$';K7为方向键

DATA ENDS

;2.代码段代码

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

       MOV     AX,DATA

       MOV     DS,AX  ;程序的初始化

       MOV     DX,OFFSET MES

       MOV     AH,09

       INT     21H    ;显示各个开关的信息

       MOV     DX,COM_ADD

        MOV     AL,92H ;(92H=10010010B,为控制字)

        OUT     DX,AL  ;  C口做输出,A口做输入

 ;送33H到A口输出 给后面电机的正反转提供初只  调用BIOS功能的INT16的1号功能,判断是否按下 如果有则返回DOS  如果没有判断开关的状态。

        MOV     BUF,33H

OUT1:   MOV     AL,BUF

         MOV     DX,PC_ADD

        OUT     DX,AL  ;间接寻址获得AL的值

        PUSH    DX

        MOV     AH,06h

        MOV     D1,0ffh

        INT     21H     ;检查是否有键按下               

        POP     DX

        JE      IN1     ;有键按下就停止,没有则转向IN1去执行

        MOV     AH,4CH

        INT     21H

IN1:    MOV     DX,PA_ADD

        IN      AL,DX   ;获得各个开关的状态               

        TEST    AL,01H

        JNZ     K0

        TEST    AL,02H

        JNZ     K1

        TEST    AL,04H

        JNZ     K2

         TEST    AL,08H

        JNZ     K3

        TEST    AL,10H

        JNZ     K4

        TEST    AL,20H

        JNZ     K5

        TEST    AL,40H

        JNZ     K6     ;检查各个开关的状态,分别转向相应的程序 

STOP:   MOV     DX,PA_ADD

        MOV     AL,0FFH

        JMP     OUT1   ;置停止信息并转向OUT1

;判断完状态则跳转到执行的程序  献给BL复制  实现岩石时间 控制转速  然后判断K7 的状态是1 还是0  。

K0:     MOV     BL,10H

SAM:    TEST    AL,80H;继续判断K7是否为0

         JZ      ZX0    ;为0就转向ZX0(循环右移程序)

        JMP     NX0    ;为1就转向NX0(循环左移程序)

K1:     MOV     BL,2FH ;BL为延时子程序的内层循环计数器

        JMP     SAM

K2:     MOV     BL,4FH

        JMP     SAM

K3:     MOV     BL,6FH

        JMP     SAM

K4:     MOV     BL,8FH

        JMP     SAM

K5:     MOV     BL,0AFH

        JMP     SAM

K6:     MOV     BL,0CFH

        JMP     SAM

ZX0:    CALL    DELAY ;调用延时子程序

        MOV     AL,BUF  

        ROR     AL,1

        MOV     BUF,AL

        JMP     OUT1   ;循环右移

NX0:    CALL    DELAY;调用延时子程序

        MOV     AL,BUF

        ROL     AL,1

        MOV     BUF,AL

        JMP     OUT1   ;循环左移

;延时程序是由两曾循环程序构成的 BL 是外曾循环的次数 CX是内层循环的次数严实时间长则脉冲频率小 转速慢

DELAY PROC NEAR  ;定义延时子程序

        MOV     CX,0FFH

DELAY2: LOOP    DELAY2

        DEC     BL

        JNZ     ST

ST:    RET

DELAY  ENDP

CODE  ENDS

END  START

更多相关推荐:
微机原理上机实验报告4

20xx06微机原理上机实验报告班级姓名学号成绩实验四物联网1班邓笑游01210261y11实验4综合程序设计一实验目的1上机解决试题的方法2综合程序设计的调试方法二预习要点1将习题变成程序的方法2综合程序的设...

微机原理及应用-汇编语言上机实验报告

西南石油大学实验报告实验一一实验目的熟悉汇编语言的上机过程掌握各项工具软件的使用方法二实验内容1硬件PC微机2软件DOS系统EDITEXEMASMEXELINKEXEDEBUGEXE三实验过程1前期准备在开始进...

答案版_微机原理实验报告

微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开发环境2掌握Emu8086软件使用方法3理解寻址方式的意义二实验环境1硬件环境微...

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程二实验内容将两个多位十进制数相加要求被加数和加数均以ASCII码形...

微机原理上机实验报告2

20xx06微机原理上机实验报告班级物联网姓名学号成绩实验二1班邓笑游01210261y111实验2汇编语言上机的一般过程实验一实验目的1了解汇编源程序的结构2了解基本伪指令的作用3掌握MASM的作用和使用方法...

微机原理及应用实验报告

实验报告课程名称实验日期学生专业学生学号学生姓名教师姓名成绩南京理工大学机械工程学院实验一DEBUG命令及其操作一实验目的1熟练掌握debug的常用命令学会用debug来调试程序2深入了解数据在存储器中的存取方...

北理(bit)微机原理上机软件实验报告

微机原理软件编程实验报告班级学号姓名一实验题目1IDE86集成开发环境的学习和运用2编写程序求出10个数中的最大值和最小值并以单步形式观察如何求出最大值最小值3求1到100的累加和并用十进制形式将结果显示在屏幕...

微机原理字符及字符串输入输出与顺序程序设计实验

22字符及字符串输入输出与顺序程序设计实验221实验目的1学习和掌握字符及字符串的输入输出方法2掌握顺序程序的设计方法3进一步掌握调试工具的使用方法222实验预习要求1复习DOS功能调用中用于字符输入功能号01...

微机原理实验指导书(11.17)

微机原理及其接口技术实验指导书电子与信息工程学院目录第一章汇编语言程序上机实验快览111汇编语言程序上机应具备的工具软件112调试程序DEBUG功能简介113预习报告格式314实验报告格式3第二章软件实验4实验...

32位微机原理上机实验报告:7种寻址方式指令编程

西北工业大学明德学院实验报告实验项目微机原理及应用班级121204姓名田家豪王辰硕学号121566121567指导老师伍明高时间20xx324实验题目7种寻址方式指令编程实验目的通过对传送和算术运算类指令的实验...

微机原理实验报告

物理与电子工程学院微机原理与接口技术实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程二实验内容将两个多位十进制数相加要求被...

微机原理实验报告

沈阳工程学院课程设计课程设计题目简单电子钟设计系别信息工程系班级学生姓名学号指导教师李贞踪念品职称教授副教授起止日期13年06月10日起至13年06月14日止沈阳工程学院课程设计任务书课程设计题目简单电子钟设计...

微机原理上机实验报告(39篇)