步进电机实验微机原理.docx

上传人:b****5 文档编号:30039018 上传时间:2023-08-04 格式:DOCX 页数:14 大小:105.09KB
下载 相关 举报
步进电机实验微机原理.docx_第1页
第1页 / 共14页
步进电机实验微机原理.docx_第2页
第2页 / 共14页
步进电机实验微机原理.docx_第3页
第3页 / 共14页
步进电机实验微机原理.docx_第4页
第4页 / 共14页
步进电机实验微机原理.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

步进电机实验微机原理.docx

《步进电机实验微机原理.docx》由会员分享,可在线阅读,更多相关《步进电机实验微机原理.docx(14页珍藏版)》请在冰豆网上搜索。

步进电机实验微机原理.docx

步进电机实验微机原理

 

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

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

 

题目:

步进电机控制系统设计

 

课程名称:

计算机原理实验

学院(系):

电信

专业:

自动化

班级:

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主程序中主要变量说明

变量名称

内存单元

功能

FLAG

AX

转向标志

BUF

AL

步进电机初始相位

SPEED

SI

可调转速

SD

AL

默认转速

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

子程序名称

入口参数

出口参数

功能描述

INT_PROC

io8255_B

SD

中断服务

DELAY

延时

 

7主程序程序流程图

 

 

8程序清单

io8255_AEQU200H

io8255_BEQU201H

io8255_KEQU203H

io8253_0EQU270H

io8253_1EQU271H

io8253_KEQU273H

DATASEGMENT

SPEEDDW0280H,0380H,0480H,05800H,0680H,0780H,0880H

SDDW0300H;默认转速

FLAGDB?

BUFDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

CLI;关中断

MOVFLAG,00H;标志位置一

MOVAX,DATA

MOVDS,AX

MOVES,AX

INAL,21H;设置中断屏蔽字

ANDAL,11011111B

OUT21H,AL

PUSHDS;设置中断向量表

MOVAX,0

MOVDS,AX

LEAAX,CS:

INT_PROC

MOVSI,35H

ADDSI,SI

ADDSI,SI

MOVDS:

[SI],AX

PUSHCS

POPAX

MOVDS:

[SI+2],AX

POPDS

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

MOVAL,82H

OUTDX,AL

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

MOVDX,io8253_K;计数器0,分频

MOVAL,00110101B

OUTDX,AL

MOVDX,io8253_0

MOVAX,10000

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,io8253_K;0.5S脉冲

MOVAL,01110111B

OUTDX,AL

MOVDX,io8253_1

MOVAX,200

OUTDX,AL

MOVAL,AH

OUTDX,AL

OUT1:

MOVAL,BUF;写相位

MOVDX,io8255_A

OUTDX,AL

STI;开中断

LLL:

CALLDELAY;延时

CMPFLAG,01H

JZNEX0

MOVAL,BUF

RORAL,1

JMPNEX1

NEX0:

MOVAL,BUF

ROLAL,1

NEX1:

MOVDX,io8255_A

OUTDX,AL

MOVBUF,AL

JMPLLL

DELAYPROC;延时函数

PUSHAX

PUSHCX

PUSHDX

MOVDH,6

X1:

MOVCX,SD

X2:

LOOPX2

DECDH

JNZX1

POPDX

POPCX

POPAX

RET

DELAYENDP

INT_PROCPROCFAR;中断服务子程序

PUSHAX;保护现场

PUSHCX

MOVDX,io8255_B;读8255B口输入

INAL,DX

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

JBCMP20

MOVFLAG,01H

JNZCMP10

MOVSD,0300H

JMPEINT

CMP10:

CMPAL,81H

JNZCMP11

MOVSI,WORDPTRSPEED[0]

MOVSD,SI

JMPEINT

CMP11:

CMPAL,82H

JNZCMP12

MOVSI,WORDPTRSPEED[2]

MOVSD,SI

JMPEINT

CMP12:

CMPAL,84H

JNZCMP13

MOVSI,WORDPTRSPEED[4]

MOVSD,SI

JMPEINT

CMP13:

CMPAL,88H

JNZCMP14

MOVSI,WORDPTRSPEED[6]

MOVSD,SI

JMPEINT

CMP14:

CMPAL,90H

JNZCMP15

MOVSI,WORDPTRSPEED[8]

MOVSD,SI

JMPEINT

CMP15:

CMPAL,0A0H

JNZCMP16

MOVSI,WORDPTRSPEED[10]

MOVSD,SI

JMPEINT

CMP16:

MOVSI,WORDPTRSPEED[12]

MOVSD,SI

JMPEINT

CMP20:

MOVFLAG,00H

CMPAL,00H

JNZCMP21

MOVSD,0300H

JMPEINT

CMP21:

CMPAL,01H

JNZCMP22

MOVSI,WORDPTRSPEED[0]

MOVSD,SI

JMPEINT

CMP22:

CMPAL,02H

JNZCMP23

MOVSI,WORDPTRSPEED[2]

MOVSD,SI

JMPEINT

CMP23:

CMPAL,04H

JNZCMP24

MOVSI,WORDPTRSPEED[4]

MOVSD,SI

JMPEINT

CMP24:

TESTAL,08H

JNZCMP25

MOVSI,WORDPTRSPEED[6]

MOVSD,SI

JMPEINT

CMP25:

CMPAL,10H

JNZCMP26

MOVSI,WORDPTRSPEED[8]

MOVSD,SI

JMPEINT

CMP26:

CMPAL,20H

JNZCMP27

MOVSI,WORDPTRSPEED[10]

MOVSD,SI

JMPEINT

CMP27:

MOVSI,WORDPTRSPEED[12]

MOVSD,SI

EINT:

MOVAL,20H;发EOI命令

OUT20H,AL

POPCX

POPAX

STI

IRET

INT_PROCENDP

CODEENDS

ENDSTART

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

软件环境:

硬件环境:

设计语言:

汇编语言

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

6结论及设计体会

微机原理的学习使我对对汇编语言有了初步的了解。

并且通过本实验让我对汇编语言产生很大的兴趣,让我掌握了汇编编程的总体思路,本实验利用微机控制步进电机的转向,在实验过程中遇到的问题告诉我们理论的编程要结合实际的电动机技术指标调试延迟时间。

从这次实验中并让我进一步的学习到了8255的应用和掌握了8255的初始化和其编程。

对我们以后的工作和学习起到的积极的作用。

参考文献

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

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

当前位置:首页 > 初中教育 > 语文

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

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