实验四步进电机控制接口实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖北科技学院计算机科学与技术学院《微机接口技术》实验报告
学号: 124221031 姓名:李亮亮
实验题目:步进电机控制接口实验报告
指导老师:范建军
实验日期: 2014.12.12
一、实验目的
通过步进电机控制实验,学习并行接口电路及其控制程序的设计原理与方法。
二、实验内容
基本实验四相步进电机,以双八拍方式运行。按开关SW1启动;按开关SW2,停止。
三、实验要求
利用MFID实验平台和步进电机驱动模块板进行硬件连接,利用MFIDE-6集成开发环境进行步进电机软件控制程序的设计、调试,直到使步进电机正常运行。
四、实验原理
1.步进电机驱动模块板电路原理如图2.1.2所示。模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP,保护电路74LS373,相序指示灯以及开关SW1和SW2等。
2.步进电机接口设计原理与方法的详细阐述,参考《微型计算机接口技术及应用》教材第7.3节(P146~151)。
图2.1.2 步进电机驱动模块电路原理框图
五、实验资源配置
1.电源:机内供电,将平台的电源开关拔到“内”的位置上,并将模块电源中并口电源接通
2.电缆线:采用单线/20芯扁平线
3.开关:T区的SW1、SW2和SW3可以配置为用来控制步进电机的运行方向、速度和
启动/停止
4.本实验所涉及的模块:F(8255模块),P(步进电机),T(按键开关),L(跳线)四个模块
5.I/O端口地址:8255的4个端口地址为300H~303H。其中A口=300H,B口=301H,C口=302H,命令口=303H
6.软件资源:MFID-6集成开发环境软件提供了丰富的汇编语言和C/C++语言程序开发工具
六、实验的硬件连接与软件编程
1.硬件连线:
F区P区
PA0 A相
PA2 B相
PA4 C相
PA6 D相
PC4 OE#74LS373开关
2.步进电机接口控制参考程序
①流程图 如图2.1.3所示。
实验上位机界面如下图:
图2.1.3 步进电机程序流程图
8255初始化 关74LS373
查SW 1按下?
相序表指针→SI 循环次数→CX
查SW 2按下?
相序代码→PA 开74LS373
延时 相序表指针SI+1` 循环次数CX-1 关74LS373
已到8次?
N
N
Y
Y
N
Y
开始 结束
实验代码:
;*------------------------------------------------------*
;* StepM.asm(步进电机控制接口实验) *
;* 步进电机控制程序Source File *
;* Copyright (c) 2001 by HUST *
;* Modify Date 2005.4.10 * ;*------------------------------------------------------*
code segment
assume cs:code,ds:code
org 100h
start:jmp begin
psta db 05h,15h,14h,54h,50h,51h,41h,45h ;相序表
message db 'Press sw2 to start !' ;系统提示
db 0dh,0ah
db 'If you want to quit,press sw1!'
db 0dh,0ah,'$'
begin: mov ax,cs
mov ds,ax
mov ah,09h ;显示提示信息
mov dx,seg message
mov ds,dx
mov dx,offset message
int 21h
mov dx,303h ;初始化8255A
mov al,81h
out dx,al
mov al,09h ;置PC4=1关闭74LS373
out dx,al
L: mov dx,302h ;查SW2按下?(PC1=0 ) in al,dx
and al,02h ;未按下,等待
jnz L
mov dx,303h ;置PC4=0,打开74LS37
mov al,08h
out dx,al
reload: mov si,offset psta ;设相序表指针
mov cx,8 ;设8拍循环次数
lop: mov dx,302h ;查SW1按下?(PC0=0 ?)in al,dx
and al,01h
jz quit ;已按下,退出
mov al,[si] ;未按下,送相序代码到PA口
mov dx,300h
out dx,al
mov di,0afh
mov bx,0ffffh ;延时
delay: dec bx
jnz delay
dec di
jnz delay
inc si ;相序表指针+1
dec cx ;循环次数-1
jnz lop ;未到8次,继续
jmp reload ;已到8次,重新赋值
quit: mov dx,303h ;置PC4=1,关闭74LS373 mov al,09
out dx,al
mov ah,4ch ;程序退出
int 21h
code ends
end start