微机课程设计电机的控制课程设计文档格式.docx

上传人:b****6 文档编号:17638733 上传时间:2022-12-07 格式:DOCX 页数:16 大小:224.86KB
下载 相关 举报
微机课程设计电机的控制课程设计文档格式.docx_第1页
第1页 / 共16页
微机课程设计电机的控制课程设计文档格式.docx_第2页
第2页 / 共16页
微机课程设计电机的控制课程设计文档格式.docx_第3页
第3页 / 共16页
微机课程设计电机的控制课程设计文档格式.docx_第4页
第4页 / 共16页
微机课程设计电机的控制课程设计文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

微机课程设计电机的控制课程设计文档格式.docx

《微机课程设计电机的控制课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《微机课程设计电机的控制课程设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

微机课程设计电机的控制课程设计文档格式.docx

反转单步走则类似。

这个模块作为键盘主程序的子程序使用,使用键盘的第三行为功能键,操作步进电机的正反转,数字键送入NUM的值则控制电机的步数。

功能键说明:

“+”控制步进电机正向转NUM步

“-“控制步进电机反向转NUM步

“,”控制步进电机正向单步走

“.”控制步进电机反向单步走

正向走NUM步的程序流程图:

(反向走NUM步的省略)

正向单步走程序流程图:

(反向单步的省略)

四、源程序代码:

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

MOVCH,00h;

键值左移4位存CH用,先初始化

MOVCL,00h;

控制步进电机单步走用作标志

MOVDX,203H;

置8255A控制口地址

MOVAL,90H;

A口输入,C口输出

OUTDX,AL

LOOP1:

MOVDX,202H;

8255A的C口

MOVAH,00000110B

MOVAL,00000110B;

键盘第一行

OUTDX,AL

MOVDX,200h;

8255A的A口

INAL,DX;

获取列码

CMPAL,0FFH

JNELOOP2;

有键按下

列码全1无键按下扫描第二行

MOVAH,00000101B

MOVAL,00000101B

MOVDX,200h

INAL,DX

CMPAL,0FFH

JNELOOP2

第三行

MOVAH,00000011B

MOVAL,00000011B

JMPLOOP1

LOOP2:

CALLDelay;

消除抖动

JELOOP1

MOVBL,0FEH;

确定有键按下则求列值

MOVBH,0;

BH存键值

LOOP3:

CMPAL,BL;

扫描列值

JEONE

CMPBH,7;

所有列码都扫描完

JELOOP1;

重新检测按键

INCBH

ROLBL,1;

列码循环左移一位

JMPLOOP3

ONE:

CMPAH,00000110B;

第一行按键

JEONE2

CMPAH,00000101B;

第二行按键

JETWO2

CMPAH,00000011B;

第三行功能键

JETHREE2

CALLJUMP

JMPwait1

ONE2:

CALLFirst;

调用第一行处理程序

TWO2:

CALLSecond;

调用第二行处理程序

THREE2:

CALLThird;

调用第三行处理程序

wait1:

wait2:

CMPAL,0FFh

JNEwait2;

等待按键

ORG200H

NUMDB?

;

存步进电机步数

FirstPROCNEAR

开控制口

MOVAL,90h;

A口输入,C口输出

CMPCH,0;

第一次执行按键

JZCH0;

ADDBH,CH;

显示八位,

CH0:

MOVDX,201H;

B口

MOVAL,BH;

键值送AL

OUTDX,AL;

在二极管上显示BH即输入的键值

MOVDX,208H;

打开D/A

控制直流电机转速

MOVNUM,AL;

步进电机转的步数

MOVCL,4

SALBH,CL;

BH值左移四位

MOVCH,BH;

BH值送CH

MOVCL,0;

CL清零,不影响步进电机单步走

RET

FirstENDP

SecondPROCNEAR

ADDBH,8h;

扫描第二行

MOVDX,203H

MOVAL,90h

JZCH1

ADDBH,CH

CH1:

8255A的B口输出

MOVAL,BH

输出键盘的值

MOVDX,208H

步进电机步数

SALBH,CL;

左移4位

MOVCH,BH

MOVCL,0

SecondENDP

ThirdPROCNEAR

ADDBH,10H;

扫描第三行

设置方式控制字

MOVAL,90H

二极管显示为全0;

MOVAL,00h;

CMPBH,13H;

比较键值13H为”+”

JZDONE2

正转

CMPBH,12H;

12H为”-”

JZDONE3

反转

CMPBH,11H;

11H为”,”

JZDONE4

正向一步一步转

CMPBH,10H;

10H为”.”

JZDONE5;

反向一步一步转

ThirdENDP

DONE2:

CALLPROGRAM1

DONE3:

CALLPROGRAM2

DONE4:

CALLPROGRAM3

DONE5:

CALLPROGRAM4

DelayPROCNEAR;

键盘延时子程序

PUSHCX

MOVCX,1800H

NEXT:

DECCX

JNENEXT

POPCX

DelayENDP

Delay2PROCNEAR;

电机延时子程序

MOVCX,5000H

NEXT2:

JNENEXT2

Delay2ENDP

JUMPPROCNEAR

JUMPENDP

PROGRAM1PROCNEAR;

正向连续转

MOVDX,203H

MOVAL,90H

MOVDX,202H;

C口

MOVCL,NUM;

电机步数

ZHENG:

MOVAL,10H;

正向

给A相通电

CALLDelay2

DECCL;

计算已进步数

JZDONE1;

步数已完成,返回

MOVAL,20H;

输出第二拍模型

给B相通电

CALLDelay2;

延迟;

DECCL

JZDONE1

MOVAL,40H;

输出第三拍模型

给C相通电

MOVAL,80H;

输出第四拍

给D相通电

回到原点

JNZZHENG;

ABCDA循环通电

PROGRAM1ENDP

DONE1:

JMPLOOP1

PROGRAM2PROCNEAR;

反向连续转

C口

设置转的步数

FAN:

反向转动

给A通电

给D通电

给C通电

给B通电

JNZFAN;

ADCBA通电

PROGRAM2ENDP

PROGRAM3PROCNEAR;

正向单步走

CMPCL,00H;

第一次按,给A通电转一步

JZAA1;

CMPCL,01H;

CL=1,B通电

JZBB1

CMPCL,02H;

CL=2,C通电

JZCC1

CMPCL,03H;

CL=3,D通电

JZDD1

JMPLOOP1;

检测键盘

AA1:

MOVAL,10H

INCCL;

自动加一,CL为01H

JNZDONE

BB1:

MOVAL,20H

INCCL

CC1:

MOVAL,40H

JNZDONE

DD1:

MOVAL,80H

MOVCL,00H

JZDONE

JMPLOOP1

PROGRAM3ENDP

PROGRAM4PROCNEAR;

反向单步走

MOVDX,202H

MOVCL,0

CL=0,A通电

JZAA2

CL=1,D通电

JZDD2

CL=2,C通电

JZCC2

CL=3,B通电

JZBB2

AA2:

DD2:

CC2:

BB2:

MOVCL,00H;

CL重新置0

PROGRAM4ENDP

DONE:

扫描键盘

CODEENDS

ENDSTART

五、设计的问题及难点

1在实现直流电机控制速度的时候也遇到了不少问题,起先连怎么把数据送入DAC0832转换处理都不知道,后来到图书馆查阅点资料才理解了。

在这里把旧键值送高4位,新键值送低4位花了不少时间,后面实现了才发现这有点容易了。

2刚开始在实现键盘扫描功能时遇到比较多的问题,如怎么根据行码和列码来判断到底是哪个键被按下,以及键值该如何处理,数字键和功能键又怎么区分等等,在询问同学和老师的过程中了解到了实现的一些方法。

3实现步进电机单步走的时候不知如何控制什么时候给哪相通电,后面想到用一个寄存器才标志该给哪个相通电,实现了单步走的功能。

六设计的不足:

控制直流电机的时候,按下数字键,速度不应该马上变化,可以设置一个功能键,实现先按下数字键先显示在B口,不直接送入DAC0832,等检测到按下那个功能键后才送进去,改变电机速度。

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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