《直流电机控制.pdf》由会员分享,可在线阅读,更多相关《直流电机控制.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-信息科学与技术学院信息科学与技术学院微机原理与接口技术微机原理与接口技术课程设计报告课程设计报告课题名称:课题名称:直流电机控制直流电机控制学生姓名:学生姓名:*学学号:号:*专业年级:专业年级:*班班级:级:*指导教师:指导教师:*完成时间:完成时间:2013-01-102013-01-10-1 1、题目及要求题目及要求1.11.1 题目题目直流电机控制1.21.2 要求:要求:1)、可控制启动停止2)、可实时控制高速低速运行状态3)、数码管显示运行状态扩展功能:可控制转动方向2 2、功能设计功能设计2.12.1 控制直流电机启动控制直流电机启动功能:通过正转或者反转按钮启动直流电机。2.
2、22.2 控制直流电机停止控制直流电机停止功能:通过停止按钮停止直流电机。2.32.3 降低直流电机的转速降低直流电机的转速功能:通过减速按钮降低直流电机的转速,并显示大写“L”2.42.4 使直流电机正转使直流电机正转功能:通过正转按钮控制直流电机正转,并显示小写“h”2.52.5 使直流电机反转使直流电机反转功能:通过正转按钮控制直流电机反转,并显示大写“H”。2.62.6 显示模块显示模块功能:显示直流电机当前转到的方向以及速度程序主要流程如下初始设置输出当前状态将从键盘读取的数据送到B 端口中,从而设置相应的状态跳转到相应的状态RETI图 2-1 程序主要流程-3 3、总体设计、总体设
3、计直流电机控制系统以 8086 为控制核心,由控制模块、显示模块及电机驱动模块组成。采用按键进行输入到8255 的 B 端口,8255 在程序控制下根据输出对直流电机的转向的控制;同时 8255 不停的将根据控制模块的控制信息输出相应的数据到显示模块去显示出当前的运行状态。直流电机直流电机A 口驱动模块驱动模块直流电机8255A顺时针控制端AT89C51逆时针控制端B 口显示模块C 口停止控制端低速控制端图 3-1 总体设计-主流程图:开始8255 初始化读取 B 端口数据正转反转停止低速图 3-2 主流程图4 4、详细设计详细设计4.14.1电机驱动模块的电路设计电机驱动模块的电路设计根据直
4、流电机的工作原理,从 PROTEUS 选取元器件如下,放置元器件、放置电源和地连线,我们参此设计的直流电机驱动模块电路如图4-1所示-图 4-1 电机驱动模块电路设计4.2 7SEG-COM-AN-GRN4.2 7SEG-COM-AN-GRN 显示模块显示模块4.2.1 显示模块连接图图 4-2 显示模块连接图-4.34.3 正转控制模块正转控制模块流程图:开始往 A 端口中输出 0FDH把 0F9H 从 C 端口输出从 B 端口读取数值进入对应的模块图 4-3 正转控制模块流程图4.34.3 反转控制模块反转控制模块流程图:开始往 A 端口中输出 0FEH把 C0H 从 C 端口输出从 B
5、端口读取数值进入对应的模块-图 4-4 反转控制模块流程图5.15.1 原理图布局原理图布局此次设计的完整电路图包括矩阵式键盘部分,数码管数字显示,电动机的PWM调速控制以及整个电路设计中的核心芯片8255A和8086芯片。图5-1直流电动机速度控制原理图布局-5.25.2 运行结果图运行结果图图5-2直流电动机速度控制仿真效果(顺时针转)图5-3直流电动机速度控制仿真效果(逆时针转)-图5-4 直流电动机速度控制仿真效果(停止运行)图5-5 直流电动机速度控制仿真效果(低速运行)-6.6.总结总结通过本次课程设计,加深了对计算机控制技术中许多芯片的认识和理解,对其应用有了更深沉的了解,这次课
6、程设计是一次非常好的锻炼机会,历时二个星期左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的不怎么牢固,看到了自己的实践经验更是比较缺乏,理论联系实际的能力还急需提高。通过多次的实践,使我深切的体会到培养动手能力的重要性,程序设计是一门实践性很强的东西,不仅要学好书本知识,那是远远不够的,还必须随时把所学知识投入实际应用之中,在此过程中多参照些相关资料,只有这样,才能达到学习的目的,才能学好一门编程语言。通过这次实践,我感觉到自己的动手能力还很欠缺,也知道了自己其他方面的不足,我想今后我一定会加强这方面的培养。在这次实验后,我更坚定这一观点:只有非常熟悉编程语言的基础知识和基本理论,
7、才能更顺手地编程,才能提高编程的效率,减少出现错误。其实很多错误是不该出现的,只要我们注意一些语法细节。7.7.参考文献参考文献1 戴梅萼,史嘉权编著,微型计算机技术及应用(第四版)清华大学出版社2 沈美明,温冬婵编著,IBM-PC 汇编语言程序设计(第二版)清华大学出版社8.8.源代码源代码STACKSEGMENT STACKSTADB100 DUP(?)TOPEQU LENGTH STASTACKENDSDATASEGMENT DATADATAENDS-CODESEGMENT CODEASSUME CS:CODE,SS:STACK,DS:DATAIOCONEQU 06HIOAEQU 00H
8、IOBEQU 02HIOCEQU 04HSTART:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXTEST_BU:MOV AL,82HMOV DX,IOCONOUT DX,ALNOPNOPCALL STOPM1:MOV AL,11000111BMOV DX,IOCOUT DX,ALMOV DX,IOAMOV AL,0FEHOUT DX,ALMOV AL,0FCHOUT DX,ALCALL DELAYMOV DX,IOBIN AL,DXTEST AL,01HJE MOT1TEST AL,02HJE MOT2TEST AL
9、,04HJE STOPJMP M1M2:MOV AL,11000111BMOV DX,IOCOUT DX,AL;82h 控制字设置 ab 端口为 0 方式下 a 输出,b 输入;显示 L;显示 L 时保持逆时针转动-MOV DX,IOAMOV AL,0FDHOUT DX,ALMOV AL,0FCHOUT DX,ALCALL DELAYMOV DX,IOBIN AL,DXTEST AL,01HJE MOT1TEST AL,02HJE MOT2TEST AL,04HJE STOPJMP M2STOP:MOV AL,10010010BMOV DX,IOCOUT DX,ALMOV DX,IOAMOV
10、AL,0FCHOUT DX,ALCALL DELAYMOV DX,IOBIN AL,DXTEST AL,01HJE MOT1TEST AL,02HJE MOT2CALL DELAYJMP STOPMOT1:MOV DX,IOAMOV AL,0FEHOUT DX,ALMOV AL,10001011BMOV DX,IOCOUT DX,ALCALL DELAYMOV DX,IOBINAL,DXTEST AL,08H;准备好输出 s;a 端口输出的值不能使电机工作;往 a 端口中输出 1111 1110使电机逆时针转;从 b 端口中读入数据;为 08 则减速-JE M1TEST AL,04H;为 04
11、 则停止JE STOPTEST AL,02H;测试是否等于 0000 0010 即按下了顺时针按钮JE MOT2;如果是按下顺时针按钮,跳转到mot2CALL DELAYJMP MOT1MOT2:MOV DX,IOAMOV AL,0FDHOUT DX,ALMOV AL,10001001BMOV DX,IOCOUT DX,ALCALL DELAYMOV DX,IOBINAL,DXTEST AL,08HJE M2TEST AL,04HJE STOPTEST AL,01HJE MOT1CALL DELAYJMP MOT2DELAY:PUSH CXMOV CX,0FHDELAY1:NOPNOPNOPNOPLOOP DELAY1POP CXRETCODEENDSEND START向 a 端口中输出 1111 1101使电机顺时针旋转从 b 端口中读入数据测试是否为0000 0001如果是则跳转到 mot1 进行逆时针旋转;
限制150内