步进电机实验微机原理

  • 格式:doc
  • 大小:199.50 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连理工大学本科设计报告(计算机原理接口实验综合设计)

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

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

学院(系):电信

专业:自动化

班级:电自1301

学号:201382062

学生姓名:宁博

成绩:

2015年12月26 日

题目:步进电机

1. 设计要求

利用实验台上的开关K7控制步进电机的转向,利用电位器控制步进电机的转速。具体要求如下:

1.利用D8255A的PA0-PA3做输出,输出步进电机的相序、驱动步进电机工作,相序之间的

时间决定着步进电机的转速,而间隔时间由延时程序中的CX寄存器的初值决定。

2.利用D8255A的PB7做输入控制转向,与K7连接。其中K7做步进电机的转向控制,用

ADC0809实现AD转换,利用电位器控制转速,程序运行时通过K7和电位器对步进电机

实施动态控制;

3.利用8253做秒脉冲发生器,产生约2秒的周期性方波信号。其中CNT0做分频器:将1MHZ

信号分频为100HZ;CNT1做秒脉冲输出(0.5HZ);

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

请求信号,引发中断服务ISR;

5.在中断服务程序中实现对步进电机的转速、转向实时控制。方法如下:在ISR中,对D8255A

的PB口进行一次输入操作,并根据输入的数据:

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

2)ADC0809读入的数据为步进电机的转速控制。

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

1.使用“寄存器间接寻址”的方式输出相序信号:将步进电机的相序数据定义在数据段当中,

使用SI查表(间接寻址)获取相序数据。其中查表顺序决定着电机转动方向;

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

笔监测OUT1的输出;

3.编制与中断相关的程序。包括中断屏蔽字的设定、中断向量表的创建以及开中断的操作。

上述这些操作都应当加到程序的初始化中;

4.编写中断服务程序ISR。在ISR中读取D8255A的PB口数据和AD转换的数据,然后进行

数据分析、根据数据来调整CX寄存器中的数据,因而改变步进电机的转速和转向。

3.系统电路图

1MHZ 脉

冲 图 1 .1 实验参考逻辑电路

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

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

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

ADC0809 是8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D 转换,具有转换起停控制端。模拟输入电压范围0~+5V,不需零点和满刻度校准。

5 主程序中主要变量说明

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

7.主程序程序流程图

(a)主程序流程图(b)中断服务程序流程图

图 1.2 程序流程图

8.程序清单

IO_ADDRESS equ 200h

time equ 210h

ad_io equ 220h

data segment

order1 db 01h,03h,02h,06h,04h,0ch,08h,09h

order2 db 09h,08h.0ch,04h,06h,02h,03h,01h

FLAG db ?

speed dw 0300h,0380h,0480h,0580h,0680h,0780h,0880h

SD dw 0280h ;默认转速

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,IO_ADDRESS

add dx,03

mov al,82h ;B端口输入,A、C输出,方式0 out dx,al

cli

mov FLAG,00h ;标志位置0

in al,021h ;设置中断屏蔽字

and al,11011111b ;IR5

out 021h,al

push ds ;设置中断向量表

mov ax,0

mov ds,ax

mov si,35h

add si,si

add si,si

mov ax,offset service

mov [si],ax

push cs

pop ax

mov [si+2],ax

pop ds

mov dx,time ;分频得到0,5s脉冲

add dx,03

mov al,37h ;计数器0,方式3,BCD码计数,先低后高 out dx,al

mov dx,time ;计数器0设初值

mov al,0

out dx,al

out dx,al ;写初值10000

mov dx,time

add dx,03

mov al,56h ;计数器1,方式3,二进制计数,低8位 out dx,al

mov dx,time ;设计数器1初值为200

inc dx

mov al,200 ;产生0.5s脉冲

out dx,al

sti

speedin:

cmp FLAG,01h ;转向,转速

jz ccc

mov dx,IO_ADDRESS

mov cx,08

lea si,order1

aaa: mov al,[si]

out dx,al

call delay

inc si

loop aaa

jmp speedin