微机接口课程设计本地步进电机综合控制.docx

上传人:b****2 文档编号:543954 上传时间:2022-10-11 格式:DOCX 页数:19 大小:132.89KB
下载 相关 举报
微机接口课程设计本地步进电机综合控制.docx_第1页
第1页 / 共19页
微机接口课程设计本地步进电机综合控制.docx_第2页
第2页 / 共19页
微机接口课程设计本地步进电机综合控制.docx_第3页
第3页 / 共19页
微机接口课程设计本地步进电机综合控制.docx_第4页
第4页 / 共19页
微机接口课程设计本地步进电机综合控制.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机接口课程设计本地步进电机综合控制.docx

《微机接口课程设计本地步进电机综合控制.docx》由会员分享,可在线阅读,更多相关《微机接口课程设计本地步进电机综合控制.docx(19页珍藏版)》请在冰豆网上搜索。

微机接口课程设计本地步进电机综合控制.docx

微机接口课程设计本地步进电机综合控制

 

微机接口课程设计

 

题目:

本地步进电机综合控制

 

姓名:

xx

班级:

xx

学号:

xx

指导老师:

xx

 

完成日期:

2012年1月4日

一、任务要求

实现外接步进电机模块的“启动”、“正反转”功能,同时,电机的当前转速显示在数码管上。

通过小键盘按键结束整个程序的运行,显示相应的标志。

数码管和键盘的功能由74系列器件实现。

转速显示格式:

##转/分,表示顺时针每分钟##转

—##转/分,表示逆时针每分钟##转

自定义键:

显示在数码管上,结束整个程序运行。

二、硬件架构(连线)

1.实验设置

步进电机模块;8253A定时模块;8259A中断控制器;计数分频电路74LS393;74系列模块;4片8255A;小键盘和数码管等

2.硬件连线

74系列模块………………控制键盘输入;

前两片8255A……………显示正反转停止及转速信息;

第三片8255A……………显示步速信息;

第四片8255A……………驱动步进电机;

8253A……………………产生步进电机驱动的定时信号;

8259A……………………接收并处理来自8253A的定时中断请求;

具体连接如下

试验仪中部的地址输出端CS-1~CS-4分别连接到8255模块下方的CS-1~CS-4;8253的片选CS连接地址输出端CS1(300H),8253的A0、A1分别连地址总线A2、A3,8253的GATE0连+5V,8253的CLK0连74LS393分频输出的47K输出端,8253的OUT0连接到8259的IRQ0;8259的片选CS-1连地址输出CS6(3A0),8259的INT1连接总线输入INTR,8259的模块的INT-A连总线的INTA,8259的SP/1连+5V;75LS393的片选CS2连接地址输出CS4(360),片选CS1连接地址输出CS3(340)

如按以上连线,则8255的A口、B口,C口和控制口的地址依次为200H、204H、208H和20CH;8253的T0、T1、T2及控制口的地址分别为300H、304H、308H和30CH;8259的基地址是3A8H,偶地址为3A0H。

三、流程图

本程序主要包括以下几部分:

1、主程序;2、输入子程序;

3、延时子程序;4、中断服务程序。

以下为流程图:

主程序流程图

 

输入子程序流程图

 

中断服务程序流程图

 

 

延时子程序流程图略

四、代码实现

.486p

PORT1EQU340H;(cs1)数码管段码端口

PORT2EQU360H;(cs2)数码管位选端口,键盘矩阵的行列端口

DATASEGMENTAT0USE16

ORG1000H

FLAGDB?

BAIWEIDB?

SHIWEIDB?

GEWEIDB?

NUMDW?

STOPNDB?

DATAENDS

CODESEGMENTUSE16

ASSUMEDS:

DATA,CS:

CODE

ORG1500H

BEG:

JMPSTART

SEVENCODDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

KEYCODDB0EEH,0DEH,0BEH,0EDH,0DDH,0BDH;前两行按键的键码

DB0EBH,0DBH,0BBH,0E7H,0D7H,0B7H;在此处添加后两行键的键码

KEYVALDB0,1,2,3,4,5,6,7,8,9,0AH,0BH;12个按键的键值

TENDB10

RNUMDB10001000B

STEPDB0

START:

CLI

MOVEAX,60000000H

MOVCR0,EAX

;装载DS

MOVAX,DATA

MOVDS,AX

;初始化8255

MOVAL,80H

MOVDX,20CH

OUTDX,AL

MOVAL,80H

MOVDX,20DH

OUTDX,AL

MOVAL,80H

MOVDX,20EH

OUTDX,AL

;A

MOVAL,0FFH

MOVDX,200H

OUTDX,AL

MOVAL,0FFH

MOVDX,201H

OUTDX,AL

MOVAL,0FFH

MOVDX,202H

OUTDX,AL

;B

MOVAL,0FFH

MOVDX,204H

OUTDX,AL

MOVAL,0FFH

MOVDX,205H

OUTDX,AL

MOVAL,0FFH

MOVDX,206H

OUTDX,AL

;最右边8255

MOVAL,80H

MOVDX,20FH

OUTDX,AL

;初始化8259

;初始化8259ICW1,ICW2

MOVAL,00010011B

MOVDX,3A0H

OUTDX,AL

MOVAL,70H

MOVDX,3A8H

OUTDX,AL

MOVAL,00000001b;ICW4非自动中断

OUTDX,AL

;中断屏蔽字

MOVAL,11111110B

MOVDX,3A8H

OUTDX,AL

;设置中断向量

MOVAX,0

MOVES,AX

MOVBX,70H*4

MOVAX,OFFSETRUN

MOVES:

[BX],AX

MOVAX,SEGRUN

MOVES:

[BX+2],AX

MOVSTOPN,-1

AG1:

LEABX,SEVENCOD

CALLINPUT

CMPAL,00H

JZST1

CMPAL,01H

JZZZ

CMPAL,02H

JZFZ

JMPAG1

;开始停止键

ST1:

NEGSTOPN

CMPSTOPN,1;判断是否需要启动设备

JNZBQIDONG

JMPS1

BQIDONG:

MOVDX,200H

MOVAL,92H

OUTDX,AL

CLI

JMPAG1

;设置默认值100

S1:

MOVDX,200H

MOVAL,0FFH

OUTDX,AL

MOVAL,1

MOVBAIWEI,AL

XLAT

MOVDX,204H

OUTDX,AL

MOVAL,0

MOVSHIWEI,AL

XLAT

MOVDX,201H

OUTDX,AL

MOVAL,0

MOVGEWEI,AL

XLAT

MOVDX,205H

OUTDX,AL

MOVFLAG,0

JMPEXIT

;正转

ZZ:

MOVDX,200H

MOVAL,0FFH

OUTDX,AL

A1:

CALLINPUT

CMPAL,03H

JBA1

SUBAL,3

MOVBAIWEI,AL

XLAT

MOVDX,204H

OUTDX,AL

CALLINPUT

SUBAL,3

MOVSHIWEI,AL

XLAT

MOVDX,201H

OUTDX,AL

CALLINPUT

SUBAL,3

MOVGEWEI,AL

XLAT

MOVDX,205H

OUTDX,AL

MOVFLAG,0;设置正反转标志位

MOVSTOPN,1

JMPEXIT

;反转

FZ:

MOVDX,200H;反转

MOVAL,0BFH

OUTDX,AL

A2:

CALLINPUT

CMPAL,03H

JBA2

SUBAL,3

MOVBAIWEI,AL

XLAT

MOVDX,204H

OUTDX,AL

SUBAL,3

MOVSHIWEI,AL

XLAT

MOVDX,201H

OUTDX,AL

CALLINPUT

SUBAL,3

MOVGEWEI,AL

XLAT

MOVDX,205H

OUTDX,AL

MOVFLAG,1

MOVSTOPN,1

JMPEXIT

;计算数值

EXIT:

MOVAL,BAIWEI

MULTEN

MOVBL,SHIWEI

ADDAL,BL

MULTEN

MOVBL,GEWEI

ADDAL,BL

MOVAH,0

MOVNUM,AX;输入的值放在num中

MOVDX,0

MOVAX,58750

DIVNUM

MOVNUM,AX;转换为计数初值

MOVAL,00110110B;8254方式3BCD码

MOVDX,30CH

OUTDX,AL

MOVDX,300H

MOVAX,NUM

OUTDX,AL

MOVAL,AH

OUTDX,AL

STI

JMPAG1

;通过行扫描法,将键值存储到al中

INPUTPROC

PUSHDX

PUSHBX

PUSHSI

PUSHDI

WT:

MOVAL,00H;00H为不显示任何信息时对应的七段代码

MOVDX,PORT1

OUTDX,AL

MOVAL,00000000B

MOVDX,PORT2

OUTDX,AL;使数码管全灭,并使3根列线输出全0

NOP

NOP

MOVDX,PORT2

INAL,DX;(粗扫描)若无键按下转至WT执行,否则顺序执行

ANDAL,0FH

CMPAL,0FH

JZWT

CALLDELAY

MOVDX,PORT2;再次确认是否有键按下

INAL,DX

ANDAL,0FH

CMPAL,0FH

JZWT

MOVCX,3;(细扫描)开始对每一列进行逐列扫描

MOVBL,0FEH

NEXT:

MOVAL,BL;在横线上添加一条语句

MOVDX,PORT2

OUTDX,AL

NOP

NOP

INAL,DX

ANDAL,0FH

CMPAL,0FH

JNZKEY

ROLBL,1;在横线上添加一条语句

LOOPNEXT

JMPWT;按键过早释放,可能导致无法识别

KEY:

SHLBL,4;8088/8086指令集中该指令格式错误!

ORAL,BL;字节键码信息存入AL,高4位为列信息低4位为行信息

LEASI,KEYCOD

LEADI,KEYVAL

MOVCX,12

NEXT1:

CMPAL,[SI]

JZFIND

INCSI

INCDI

LOOPNEXT1

JMPWT;本程序不支持多个按键同时按下

FIND:

MOVAL,[DI];AL中内容为所按键的键面值

PUSHAX

MOVAL,00000000B

MOVDX,PORT2

OUTDX,AL;使数码管全灭,并使3根列线输出全0

NOP

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

当前位置:首页 > 解决方案 > 学习计划

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

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