收藏 分销(赏)

基于8086的步进电机控制.doc

上传人:w****g 文档编号:1777918 上传时间:2024-05-09 格式:DOC 页数:20 大小:479KB
下载 相关 举报
基于8086的步进电机控制.doc_第1页
第1页 / 共20页
基于8086的步进电机控制.doc_第2页
第2页 / 共20页
基于8086的步进电机控制.doc_第3页
第3页 / 共20页
基于8086的步进电机控制.doc_第4页
第4页 / 共20页
基于8086的步进电机控制.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 郑州科技学院微型计算机原理课程设计 题 目 基于8086的步进电机控制学生姓名 * * * 专业班级 计算机科学与技术一班 学 号 201115009 院(系) 信息工程学院 指导教师 * * * 完成时间 2013年 12月20日 目 录1 课程设计的目的12 课程设计的任务与要求 13 设计方案与论证14 设计原理及功能说明 2 4.1 励磁线圈及其励磁顺序 3 4.2 工作原理 3 4.3 8086 CPU 5 4.4 8255工作方式选择 6 4.5 ULN2003A 6 4.6 74LS273 6 4.7 74LS138 65 单元电路的设计(计算与说明) 86 硬件的制作与调试

2、107 总结 11参考文献12附录1:总体电路原理图13附录2:元器件清单13附录3:源程序代码141 课程设计的目的培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,了解步进电机控制的基本原理,掌握控制步

3、进电机转动的编程方法,进一步熟练掌握8255A并行I/O口的工作方式以及编程方法,熟练应用8086以及汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。体会系统整体设计的流程与方法,为以后系统级设计积累经验。培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。2 课程设计的任务与要求01.通过开关K1实现步进电机的开始与停止;02. 通过开关K2来选择步进电机的正转与反转;03. 通过开关K3,K4组成(2-4译码)四档电机转速选择;04. 对每只开关的选择情况同时通过4位8段数码管来显示;05. 扩展设计:可以在以上功能基础

4、上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。3 设计方案与论证 本设计采用电压为DC12V的四相八拍步进电机35BYJ46型电机,用ULN2003作为步进电动机驱动电路主芯片,以8255A作为8086并行输出接口,8086对步进电机的控制信号则通过8255A送到ULN2003.根据课题要求,用8086处理器和可编程并行接口芯片8255组成控制系统,控制步进电机正转、反转以及转速控制,步进电机不能直接由8255驱动,而需要用相应的驱动芯片,因此,控制系统直接控制电机驱动即可控制步进电机。 转向分别用逆时针转动片段转速和顺时针转动片段则通过调用延时子程序

5、,当调用延时较长的子程序时,则步进电机转速慢,当调用延时较短的子程序时,步进电机转速快。设计流程图如下: 8086 CPU 8255 步进 电机 步进 电机 驱动 图3-1 总体设计流程图 本步进电机控制系统通过四个键盘来控制步进电机的正转、反转、启动和停止以及转速,步进电机旋转的角度取决于键盘接通时间长短,接通时间越长,旋转角度越大,其功能表如表1.2.1。 表3-1 键盘功能表键盘状态电机动作K1接通电机启动K1断开电机停止K2接通电机顺时针旋转K2断开电机逆时针旋转K3接通电机2档转速K4接通电机4档转速K3、K4接通电机3档转速4 设计原理及功能说明在该步进电机控制系统中,需要接收键盘

6、信息并识别,然后将数据传送给步进电机使步进电机旋转,采用8086CPU和8255接口芯片是可行的,系统框图如图4-1所示 图4-1系统方框图4.1 励磁线圈及其励磁顺序 表4-1励磁顺序表123456785+4-3-2-1- 图4-2励磁线圈图4.2 工作原理:4相步进电机示意图 四相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成 图4-3电机定子和转子示意图 图4-4电气连接示意图 当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。例如:若

7、送电的顺序为S1闭合断开S2闭合断开S3闭合断开S4闭合断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转: 图4-5电机旋转模拟图若送电的顺序为S4闭合断开S3闭合断开S2闭合断开S1闭合断开,周而复始的循环,则电机就逆时针旋转,原理同理。 图4-6 8255A向步进电机发出的控制脉冲4.3 8086 CPU:现将8086的引脚图和各引脚功能列出如下,其他具体内容详见微机原理及接口技术教材8086CPU的40条引脚信号可按功能分可分为四类,它们是:地址总线,数据总线,控制总线,其它(时钟与电源)。 在最小模式下各引脚功能(MN/MX接5V): AD15AD0,地址/数据总线 A1

8、9/S6A16/S3,地址/状态总线 BHE/ S7,高8位数据允许/状态线 MN/MX,最小/最大模式控制信号,输入 RD,读信号 WR,写信号 M/IO,存储器/输入输出控制信号ALE,地址锁存允许信号READY(Ready),准备就绪信号INTR,可屏蔽中断请求信号INTA,中断响应信号 NMI,非屏蔽中断请求信号RESET,系统复位信号 DEN,数据允许信号 DT/R,数据发送/接收控制信号HOLD,总线保持请求信号输入 HLDA,总线保持响应信号 TEST,测试信号 CLK,时钟输入信号 VCC(+5V),GND 4.4 8255工作方式选择: 8255有三个数据端口(A口、B口、C

9、口),8255有三种基本的工作方式,分别为:方式一(基本输入/输出方式),方式二(选通输入/输出方式),方式三(双向总线I/O方式)。其中A口可选择三种方式中的任意一种,B口只能选择方式0或方式1,C口常用作两个4为端口,若工作于方式0,其高四位工作方式与A端口一致,低四位与工作方式与端口B一致;若工作于其余两种方式,端口的部分信号作为A口和B口的控制联络信号。4.5 ULN2003A:ULN2003A是高压大电流达林顿晶体管阵列,由功率电路来扩展输出电流以满足被控元件的电流,电压。具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A

10、芯片主要用于如下领域:伺服电机,步进电机,电磁阀,可控照明灯。4.6 74LS273: 74LS273是一种带清除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。4.7 74LS138: 74LS138为3线-8线译码器。引出端口号:B、C 译码地址输入端G1 选通端/(G2A)、/(G2B) 选通端(低电平有效)Y0Y7 译码输出端(低电平有效)5 单元电路的设计(计算与说明) 本电路采用8086CPU来控制,8086是16位CPU,采用高性能的N沟道、耗尽型负载的硅栅工艺制造8086拥有四个16位的通用寄存器,也能够当作八个8位

11、寄存器来存取,以及四个16位索引寄存器。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入,以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。8086有四个 内存区段寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。8086 的寻址方式改变让内存扩充较有效率。8086处理器的时钟频率介于4.77MHz和10 MHz之间。 以8086CPU构成的微型计算机系统,有最小模式和最大模式两种配

12、置。最小模式是单机系统,系统中所需要的控制信号全部由8086CPU本身提供;最大模式可以构成多处理机系统,系统中所需要的控制信号由总线控制器8288提供。CPU工作模式的选择是由硬件决定的,当CPU的管脚 接高电平时,构成最小模式;当 接低电平的时候,构成最大模式。因为步进电机控制系统是一个单处理机系统,因而 接高电平,构成最小模式。8086通过16根数据总线来实现与8255的通信,高八位通过74HC373锁存器控制8255的四个端口,低八位与8255进行数据交换。8086的 和 控制8255的读写操作。8255四个端口的地址见表2.2.1所示表5-1 8255各端口地址分配8255端口端口地

13、址A端口IOY0+00H*4B端口IOY0+01H*4C端口IOY0+02H*4控制端口IOY0+03H*48255与CPU连接部分:8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。A0、A1的组合与端口关系如表2.2.2所示。表5-2 A1、A0组合与端口关系A1A08255端口IOY0+00H*4A口地址IOY0+01H*4B口地址IOY0+02H*4C口地址IOY0+03H*4控制口地址此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。数据

14、总线DB用于8255与CPU传送8位数据,地址总线AB用于选择A、B、C口与控制寄存器,控制总线CB用于片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。与外设接口部分:8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。A口用于8255向外设输入输出8位并行数据,B口用于8255向外设输入输出8位并行数据,C口用于8255向外设输入输出8位并行数据,当8255工作

15、于应答I/O方式时,C口用于应答信号的通信。 控制器:8255将3个通道分为两组,即A组和B组,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下为:A组控制器控制A口与上C口的输入与输出;B组控制器控制B口与下C口的输入与输出。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在三种方式下工作,具体方式见表2.2.3。表5-3 8255工作方式方式0基本输入/输出方式方式1选通输入/输出方式方式2双向传输方式74HC373为三态输出锁存器,可用来驱动数据总线。当OE为高电平时,D0D7呈高阻态,不驱动数据总线,但锁存器内部的逻辑操作不受影响。当锁存允许端 LE

16、为高电平时,Q随数据D而变。当 LE 为低电平时,Q被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。步进电机模块电路图如图5-1所示 图5-1 步进电机模块步进电机能将数字信号转换为角位移。步进电机输入一个电脉冲就前进一步,其输入的角位移与输入的脉冲数成正比,转速与脉冲频率成正比。从8255端口输出的脉冲,其电流还不足以驱动三相步进电机,因而在步进电机和8255中间接一个驱动芯片ULN2003。ULN2003A是一种高耐压、大电流复合晶体管,由七个硅NPN 复合晶体管组成,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出

17、还可以在高负载电流状态下并行运行。6 硬件的制作与调试 在上述功能模块以及工作原理的基础上,为了探索8086 CPU在proteus仿真软件中实现对步进电机的控制,简单了解仿真软件的应用,以及更形象的展现对步进电机控制的方法,在计算机上安装proteus软件并用proteus仿真软件对电路的各器件进行电路连接并载入EXE程序运行文件给与不断调试,最终使得电路图能够正常运转。如下图为电路连接图 图6-1 电路连接图1 图6-2 电路连接图27 总结先从整体上来说,我原本打算整个课程设计只需要1-2天即可完成,而实际的情况是用了将近4天还未完全实现设计要求,比如说,步进电机的加速与减速功能,用4位

18、7段数码管来显示步进电机的转速,这些功能都在代码实现时遇到了困难,而这也恰恰反应了汇编语言学习的不足练习太少,而见过的汇编源码也同样很少。举个例子,有其他小组做的抢答器设计,有十几行的一段程序是通过ROR循环右移指令和LOOPNZ指令来达到依次测试每个开关是否摁下,就是这样一段简单的代码,就看足足1个小时,原因有两点,它的代码中写成了LOONZ指令,还有就是ROR,因为它可以将移出的位都进入CF以保存该位,以供后续的程序测试。这些指令很是不熟悉,从这方面很是能够反应出一些问题。比如说我在网上查找他人的设计方案时,基本上都是用51单片机来控制步进电机的,当然都是通过Proteus软件仿真验证的,

19、很少有基于8086芯片的,很偶然的搜索一份后,我发现我需要把整个系统硬件连线理解透彻,很是花了一番功夫。一开始我以为Proteus软件不能做8086芯片的仿真,之前它都是用来仿真单片机的,而事实上它也确实是这样,8086芯片的仿真确实是这两年才添加的,应为做8086芯片的仿真需要一系列外围芯片的支持,比如说:8259A可编程中断控制器、8255A可编程并行接口芯片、D/A转换器、A/D转换器,8251A可编程异步通信接口芯片(这个在7.8版本中就没有)可见拿这个完全取代实验箱还有一定的距离。当然这次的课程设计我可以完全使用它,因为没有使用到8251A芯片。还有就是有很多辅助性芯片自己在以前根本

20、就没有关注过,直到这次课程设计,我才认认真真的查找了74系列芯片资料比如74LS273、74LS138,因为我在这次系统的硬件设计部分遇到了困难,因为之前的(包括上学期的组成原理和这学期的接口技术,用到的实验箱都是人家事先连好并预留出的,在实验时有都是按照实验手册上的电路图去连线的,几乎从来不去思考为什么要这样连接,这些芯片的内部结构是怎样的,除了这个型号的芯片,其他型号的芯片是否也能实现相应的功能,它们两者之间又有何异同和优缺点,等等这一系列的问题在硬件的设计时都让我给碰到了,我不知道是我的幸运还是不幸)这些问题让我认识到在现有实验箱上不管是进行实验的验证还是教学,都存在很大的缺陷,更不用提

21、系统的设计了。概括来说,芯片了解太少,汇编编程很不熟练,方案的整体设计把控很不足。学习的内容:初步理解掌握了在Proteus软件中进行硬件仿真的步骤及方法,了解了Proteus软件芯片库的构成体系,对芯片的选取不再过于盲目,理解并掌握了8255A芯片编程方法,了解了嵌入式系统设计的一般步骤与方法。 参考文献1 冯康 汇编语言M 武昌:武汉大学出版社2010,06 2 公保华 通用接口的步进电机控制驱动单元J电气自动化1994,033 王功利 基于PC机的步进电机控制系统J核电子学与探测技术1996,054 李瑞 基于单片机的步进电机驱动控制系统的设计与实现J科技致富向导2012,355 魏雅

22、基于单片机的步进电机控制系统的研究J 电子设计工程 2013,186 胡全 51单片机的数码管动态显示技术J 信息技术 2009,137 王忠民微型计算机原理(第二版)M 西安:西安电子科技大学出版社 2007.6 附录1:总体电路原理图 附录2:元器件清单 8086 CPU 8255A ULN2003A MOTOR-STEPPER 74LS138 74LS273 74LS32 7411 开关BUTTON 附录3:源程序代码 IOY0 EQU 0C400H ;片选IOY0对应的端口起始地址 MY8255_A EQU IOY0+00H*4 ;8255的A口地址 MY8255_B EQU IOY0

23、+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT DTABLE1 DB 6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,40H DTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90H DTABLE4 DB 90H,80H,0C0H,40H,60H,20H,30H,10H DATA EN

24、DS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H MOV SI,00H MOV SI+2,09H MOV SI+4,03H MOV SI+6,05H MOV SI+8,01H MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A输出、B口输出,C口低四位输入,高四位输出 OUT DX,AL QIDONG: ;CALL CLEAR ;CALL DIS MOV DX,MY8255_C IN AL,DX TEST AL,01H JNZ STOP

25、;测试C口的PC0是否为0;若不为0则跳到STOP代码段;否则继续执行下面代码 SPEED: MOV SI,01H CMP SI+8,08H JZ ZHI;若3008H单元的值等于08H,则跳到ZHI代码段;否则的话,向下继续执行 MOV BX,SI+8 DEC BX MOV DX,MY8255_C IN AL,DX TEST AL,02H;测试PC1口的是否为1,若为0则跳转到SHUN代码段(顺时针旋转) JZ SHUN NI: MOV SI+4,03H MOV AL,DTABLE4BX PUSH AX JMP ZHUANG;逆时针转动片段 SHUN: MOV SI+4,04H MOV AL

26、,DTABLE3BX PUSH AX;顺时针转动片段 ZHUANG: MOV DX,MY8255_C IN AL,DX TEST AL,0CH JZ DANG3 TEST AL,04H JZ DANG2 TEST AL,08H JZ DANG4 DANG1:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV SI+8,BX MOV SI+6,05H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL

27、 DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 JMP SPEED DANG2:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV SI+8,BX MOV SI+6,06H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 JMP SPEED DANG3:POP AX MOV DX,MY8255_C OUT DX,AL

28、INC BX INC BX MOV SI+8,BX MOV SI+6,07H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1 JMP SPEED DANG4:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV SI+8,BX MOV SI+6,08H CALL DALLY JMP SPEED ZHI: MOV SI+8,01H JMP QIDONG STOP: MOV SI,00H MOV SI+4,03H MOV SI+6,05H CALL CLEAR CALL DIS JMP QIDONG DA

29、LLY PROC NEAR ;软件延时子程序 CALL CLEAR CALL DIS PUSH CX MOV CX,000FH D1: MOV AX,000FH D2: DEC AX JNZ D2 LOOP D1 POP CX RET DALLY ENDP CLEAR PROC NEAR ;清除数码管显示子程序 MOV DX,MY8255_B ;段位置0即可清除数码管显示 MOV AL,00H OUT DX,AL RET CLEAR ENDP DIS PROC NEAR ;显示键值子程序 PUSH AX PUSH SI MOV SI,3006H MOV DL,0F7H MOV AL,DL AG

30、AIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;设置X1X4,选通一个数码管 MOV AL,SI ;取出缓冲区中存放键值 MOV BX,OFFSET DTABLE1 AND AX,00FFH ADD BX,AX MOV AL,BX MOV DX,MY8255_B OUT DX,AL ;写入数码管ADp CALL DALLY1 DEC SI DEC SI ;取下一个键值 POP DX MOV AL,DL TEST AL,01H ;判断是否显示完? JZ OUT1 ;显示完,返回 ROR AL,1 MOV DL,AL JMP AGAIN ;未显示完,跳回继续 OUT1: POP SI POP AX RET DIS ENDP DALLY1 PROC NEAR ;软件延时子程序 PUSH CX MOV CX,002FH D3: MOV AX,002FH D4: DEC AX JNZ D4 LOOP D3 POP CX RET DALLY1 ENDPCODE ENDS END START最新范本,供参考!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服