基于8086的直流电机的控制.docx
《基于8086的直流电机的控制.docx》由会员分享,可在线阅读,更多相关《基于8086的直流电机的控制.docx(9页珍藏版)》请在冰豆网上搜索。
基于8086的直流电机的控制
一、直流电机控制的设计思路:
1)通过按键改变电动机的启动与停止,当启动后再由按键选择工作方式。
2)通过改变pwm的极性从而改变电机的转向,实现正反转。
3)可实现顺、逆旋转的直接切换,不用按下停止后再启动反向运转。
二、直流电机控制的硬件框图:
通过按钮来控制电机的顺、逆时针转,并且可以实现顺、逆旋转直接切换,无需中间停顿。
2.1并行I\O口输入、输出
采用8255A作为信号的输入与输出接口,使用前需设置芯片的控制字来确定其工作方式,以及端口的使用。
本次采用的控制字为90H,即A组工作在方式0,作为输入接口,连接按钮,B组工作在方式0,作为输出接口连接电机驱动模块。
8255AI\O接口使用
2.2输出锁存
使用常见的74HC373芯片来实现输出锁存,由于按钮具有复位功能,当按钮按下后的一瞬间才产生输入,所以需要输出锁存来保持电机的连续运转,本次采用两块74HC373,一块与8255A的A0、A1口连接作为电机运行信号的控制,另一块与3-8译码器74H138相连,接入8255A的片选信号输入端,选中8255A运行。
74H373接口使用
2.3电机驱动模块
通过对IN1、IN2的状态改变来控制L293D芯片的输出,
从而实现电机的顺、逆时针转动
电机驱动模块
2.4仿真模拟图
三、软件设计
3.1程序流程图
当按下按键时,检测A口是否为01H,若是即跳转到子程序MOT1,实现电机顺时针旋转,否则检测A口是否为02H,若是即跳转到子程序MOT2,实现电机逆时针旋转,否则检测A口是否为04H,若是即跳转到子程序MOT3,使电机停止转动。
再进入循环。
3.2程序代码
CODESEGMENT'CODE'
ASSUMECS:
CODE,SS:
STACK,DS:
DATA;定义数据段
IOCONEQU8006H
IOAEQU8000H
IOBEQU8002H定义端口的地址
IOCEQU8004H
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,TOP1
MOVSP,AX
MOVAL,90HA口为输入,B口为输出
MOVDX,IOCON控制字设置,AB端口为“0”方式下,控制字10010000B
OUTDX,AL
NOP
NOP
TEST_BU:
MOVDX,IOA
INAL,DX检测总线系统
MOVDX,IOA
INAL,DX
NOP
test_1:
TESTAL,01H
JEMOT1
test_2:
TESTAL,02H
JEMOT2
test_3:
TESTAL,04H
JEMOT3
JMPTEST_BU
MOT1:
MOVAL,0FEH
MOVDX,IOB往B端口中输出11111110B=0FEH使电机顺时针旋转
OUTDX,AL
MOVDX,IOA
INAL,DX;从A口读入数据
TESTAL,02H;测试是否等于00000010即按下逆时针按钮
JEMOT2;如果是按下逆时针按钮,则跳转到MOT2
TESTAL,04H
JEMOT3
JMPMOT1
MOT2:
MOVAL,0FDH
MOVDX,IOB向B端口中输入11111101B=0FDH使电机逆时针旋转
OUTDX,AL
MOVDX,IOA
INAL,DX;从A口读入数据
TESTAL,01H测试A口数据是否为01H,若是则跳到
JEMOT1MOT1顺时针旋转模式
TESTAL,04H测试A口数据是否为04H,
JEMOT3若是则跳转到MOT3停止模式
JMPMOT2;否则跳转到MOT2逆时针旋转模式
MOT3:
MOVAL,0FFH
MOVDX,IOB向B端口输出11111111B=0FFH使电机停止
OUTDX,AL
MOVDX,IOA
INAL,DX
TESTAL,01H
JEMOT1
TESTAL,02H
JEMOT2
JMPMOT3
CODEENDS
STACKSEGMENT'STACK'
STADB100DUP(?
)
TOP1EQULENGTHSTA
STACKENDS
DATASEGMENT'DATA'
DATAENDS
输入信号真值表
ENDSTART
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
顺时针
1
1
1
1
1
1
1
0
逆时针
1
1
1
1
1
1
0
1
停止
1
1
1
1
1
0
1
1
四、项目体会
微机原理与接口技术的课程历时一个学期,通过自己编写、运行程序,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
这次的课程设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。
通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。
实验是使用8086微处理器芯片及其外设接口8255A,74HC373(373为三态输出的8D透明锁存器)、74HC138(3线-8线译码器)加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。