直流电机控制Word文档下载推荐.docx
《直流电机控制Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《直流电机控制Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
2013-01-10
1、题目及要求
1.1题目
1.2要求:
1)、可控制启动停止
2)、可实时控制高速低速运行状态
3)、数码管显示运行状态扩展功能:
可控制转动方向
2、功能设计
2.1控制直流电机启动
功能:
通过正转或者反转按钮启动直流电机。
2.2控制直流电机停止
功能:
通过停止按钮停止直流电机。
2.3降低直流电机的转速
通过减速按钮降低直流电机的转速,并显示大写“L”
2.4使直流电机正转
功能:
通过正转按钮控制直流电机正转,并显示小写“h”
2.5使直流电机反转
通过正转按钮控制直流电机反转,并显示大写“H”。
2.6显示模块
显示直流电机当前转到的方向以及速度
程序主要流程如下
图2-1程序主要流程
3、总体设计
直流电机控制系统以8086为控制核心,由控制模块、显示模块及电机驱动模块组成。
采用按键进行输入到8255的B端口,8255在程序控制下根据输出对直流电机的转向的控制;
同时8255不停的将根据控制模块的控制信息输出相应的数据到显示模块去显示出当前的运行状态。
图3-1总体设计
主流程图:
图3-2主流程图
4、详细设计
4.1电机驱动模块的电路设计
根据直流电机的工作原理,从PROTEUS选取元器件如下,放置元器件、放置电源和地]连线,我们参此设计的直流电机驱动模块电路如图4-1所示
图4-1电机驱动模块电路设计
4.27SEG-COM-AN-GRN显示模块
4.2.1显示模块连接图
图4-2显示模块连接图
4.3正转控制模块
流程图:
图4-3正转控制模块流程图
4.3反转控制模块
图4-4反转控制模块流程图
5.1原理图布局
此次设计的完整电路图包括矩阵式键盘部分,数码管数字显示,电动机的PWM调速控制以及整个电路设计中的核心芯片8255A和8086芯片。
图5-1直流电动机速度控制原理图布局
5.2运行结果图
图5-2直流电动机速度控制仿真效果(顺时针转)
图5-3直流电动机速度控制仿真效果(逆时针转)
图5-4直流电动机速度控制仿真效果(停止运行)
图5-5直流电动机速度控制仿真效果(低速运行)
6.总结
通过本次课程设计,加深了对计算机控制技术中许多芯片的认识和理解,对其应用有了更深沉的了解,这次课程设计是一次非常好的锻炼机会,历时二个星期左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的不怎么牢固,看到了自己的实践经验更是比较缺乏,理论联系实际的能力还急需提高。
通过多次的实践,使我深切的体会到培养动手能力的重要性,程序设计是一门实践性很强的东西,不仅要学好书本知识,那是远远不够的,还必须随时把所学知识投入实际应用之中,在此过程中多参照些相关资料,只有这样,才能达到学习的目的,才能学好一门编程语言。
通过这次实践,我感觉到自己的动手能力还很欠缺,也知道了自己其他方面的不足,我想今后我一定会加强这方面的培养。
在这次实验后,我更坚定这一观点:
只有非常熟悉编程语言的基础知识和基本理论,才能更顺手地编程,才能提高编程的效率,减少出现错误。
其实很多错误是不该出现的,只要我们注意一些语法细节。
7.参考文献
[1]戴梅萼,史嘉权编著,微型计算机技术及应用(第四版)清华大学出版社
[2]沈美明,温冬婵编著,IBM-PC汇编语言程序设计(第二版)清华大学出版社
8.源代码
STACKSEGMENT'
STACK'
STADB100DUP(?
)
TOPEQULENGTHSTA
STACKENDS
DATASEGMENT'
DATA'
DATAENDS
CODESEGMENT'
CODE'
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
IOCONEQU06H
IOAEQU00H
IOBEQU02H
IOCEQU04H
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,TOP
MOVSP,AX
TEST_BU:
MOVAL,82H
MOVDX,IOCON
OUTDX,AL;
82h控制字设置ab端口为0方式下a输出,b输入
NOP
CALLSTOP
M1:
MOVAL,11000111B;
显示L
MOVDX,IOC
OUTDX,AL
MOVDX,IOA
MOVAL,0FEH;
显示L时保持逆时针转动
MOVAL,0FCH
CALLDELAY
MOVDX,IOB
INAL,DX
TESTAL,01H
JEMOT1
TESTAL,02H
JEMOT2
TESTAL,04H
JESTOP
JMPM1
M2:
MOVAL,11000111B
MOVAL,0FDH
JMPM2
STOP:
MOVAL,10010010B;
准备好输出s
MOVAL,0FCH;
a端口输出的值不能使电机工作
JMPSTOP
MOT1:
MOVDX,IOA
MOVAL,0FEH
OUTDX,AL;
往a端口中输出11111110使电机逆时针转
MOVAL,10001011B
INAL,DX;
从b端口中读入数据
TESTAL,08H;
为08则减速
JEM1
TESTAL,04H;
为04则停止
TESTAL,02H;
测试是否等于00000010即按下了顺时针按钮
JEMOT2;
如果是按下顺时针按钮,跳转到mot2
JMPMOT1
MOT2:
MOVAL,0FDH
向a端口中输出11111101使电机顺时针旋转
MOVAL,10001001B
OUTDX,AL
TESTAL,08H
JEM2
TESTAL,01H;
从b端口中读入数据测试是否为00000001
JEMOT1;
如果是则跳转到mot1进行逆时针旋转
JMPMOT2
DELAY:
PUSHCX
MOVCX,0FH
DELAY1:
NOP
LOOPDELAY1
POPCX
RET
CODEENDS
ENDSTART