步进电机实验微机原理
- 格式:doc
- 大小:199.50 KB
- 文档页数:13
大连理工大学本科设计报告(计算机原理接口实验综合设计)
题目:步进电机控制系统设计
课程名称:计算机原理实验
学院(系):电信
专业:自动化
班级:电自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