1微机原理与接口技术 步进电机控制课程设计Word格式.docx
《1微机原理与接口技术 步进电机控制课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《1微机原理与接口技术 步进电机控制课程设计Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
![1微机原理与接口技术 步进电机控制课程设计Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/fbfc77e8-aeb7-4cbe-8a09-02e06c6f7a18/fbfc77e8-aeb7-4cbe-8a09-02e06c6f7a181.gif)
系统联调,提交一个满足要求的步进电机控制系统设计。
1.3软硬件运行环境及开发工具:
1.3.1、软硬件运行环境
利用TDN86/88实验平台面包板和步进电机模块进行硬件连接,利用TDN集成开发环境进行步进电机控制系统的程序设计(采用8086汇编语言),调试,直到满足设计要求。
1.3.2、开发工具
实验所使用的实验开发设备是TDN86/88型多功能微机实验平台,它的硬件由基本系
统、外设功能模块和面包板实验区三大部分,按模块化开放式结构设计而成。
微机器
1.2.1初始条件:
步进电机采用三相双八拍运行方式
TDN86/88型多功能微机实验平台
1.2.2要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
画出硬件原理图(接口芯片和外设部分)和实验连线图;
用1个开关控制步进电机起停,分别用2/4个开关控制步进电机四种工作模式:
送电时和步进电机停止时,七段码显示器显示数字“0”;
时间安排:
(部分时间,某些工作可以重叠进行)
12月29日
布置题目,确定任务、查找相关资料
1月2日~1月4日
功能分析,硬件设计,拟定实验电路,编写程序,调试程序、运行系统;
1月5日
答辩后撰写设计报告。
1月5日下午4:
00前交设计报告。
具体要求:
设计报告撰写格式要求(按提供的设计报告统一格式撰写)
具体内容如下:
①设计任务与要求②总体方案与说明
③硬件原理图与说明④实验电路图与说明
⑤软件主要模块流程图⑥源程序清单与注释
⑦问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);
⑧小结与体会
附录:
①源程序(必须有简单注释)②使用说明③参考资料
指导教师签字:
2012年12月29日
系主任签字:
年月日
设计报告封面1
2.概要设计
2.1设计原理及实现方法:
2.1.1步进电机控制原理:
步进电机是将电脉冲信号转换成角位移的一种机电式数模转换器。
步进电机旋转的角位移与输入脉冲的个数据成正比;
步进电机的转速与输入脉冲的频率成正比;
步进电机的转动方向号输入脉冲对绕组加电的顺序有关。
因此,步进电机旋转的角度位移、转速以及方向均受输入脉冲的控制。
2.1.2步进电机的驱动
8086内部没有时钟系统,故需要外部时钟驱动系统来给CPU提供时钟信号。
本系统中我们采用8284A时钟驱动芯片外加5MHz晶振的电路连接产生时钟信号。
其电路连接图如图2-2所示。
2.1.3运行方式与方向的控制——循环查表法
步进电机运行方式是指各绕组循环轮流通电的方式。
如四相步进电机有单四拍A-B-C-D/双四拍AB-BC-CD-DA、单双八拍AB-B-BC-C-CD-D-DA-A和双八拍AB-ABC-BC-BCD-CD-CDA-DA-DAB几种方式。
为了实现对各绕组按一定方式轮流加电,需要一个脉冲循环分配器。
循环分配器可用硬件电路来实现(在此不介绍),也可以用软件来实现。
采用软件来设计脉冲循环分配器,又有两种方法:
控制字法和循环查表法。
循环查表法是将各绕组加电顺序的控制代码制成一张表——步进电机相序表,存放在内存区,再设置一个地址指针。
相序表的建立,要考虑两个因素:
一是应根据步进电机运行方式的要求;
二是步进电机的各绕组与数据线的对应关系。
2.1.4步进电机运行速度的控制——软件延时法
控制步进电机速度有两个途径:
一是硬件改变输入脉冲的频率,通过对定时器(如:
8253)定时常数的设定,使其升频、降频或恒频。
二是软件延时,或调用延时子程序。
2.2主要芯片说明
由于8086CPU它只是一个拥有控制和计算能力的主控芯片,而并不像如8位51单片机、16位MSP430单片机等MCU一样可以单独作为一片“单芯片微型计算机”,可以直接接上外设工作。
因此,需要在8086的周边接上相应的接口芯片,才能使系统有可以工作的基础。
以下,便介绍8086周边配置及其接口电路。
Intel8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。
Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入(或32K16位元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
Intel8086有四个内存区段(segment)寄存器,可以从索引寄存器来设定。
区段寄存器可以让CPU利用特殊的方式存取1MB内存。
8086把段地址左移4位然后把它加上偏移地址。
大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。
尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,使在编程中使用指针(如C编程语言)变得困难。
它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。
更坏的是,这种方式产生要让内存扩充到大于1MB的困难。
而8086的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz(在原先的IBMPC)和10MHz之间。
8086没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。
8086作为一款CPU,也是有很强的工作能力的,但是需要对其本身进行配置,他才有可能按我们的意愿进行工作。
图2-1为8086CPU配置电路。
图中:
21号引脚通过轻触开关接VCC,当按下次轻触开关的时候,系统程序将回到起始点,系统重新开始工作;
22号READY引脚接高,说明外部准备好,CPU可进行相应的操作,这样可以让CPU一直工作;
17号引脚接高是为了屏蔽不可屏蔽外部中断,本系统它将不可用;
33号引脚接高表示该系统中8086工作于最小模式。
8255AIntel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种:
方式0:
基本的输入输出方式,即无须联络就可以直接进行的I/O方式。
其中A、B、C口的高四位或低四位可分别设置成输入或输出。
方式1:
选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.
方式2:
双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:
A组包括A口及C口高4位,B组包括B口及C组的低4位。
A口可以设置为方式0、方式1、方式2,B口与C口只能设置为方式0或方式1.
其方式控制字应按如下方式设置:
这是一个8位的控制字,代表的信息也很丰富。
格式如下:
D7
D6
D5
D4
D3
D2
D1
D0
1
A组控制
B组控制
D7=1,为该控制字的标志。
A组由D6、D5、D4、D3组成。
其中D6、D5为工作方式选择;
D4为A口的输入/输出选择;
D3为C口高四位输入/输出选择。
如下所示:
表2-3
D6D5
A口工作方式
00
方式0
01
方式1
1X
方式2
表2-4
输入/输出选择
A口为输出
A口为输入
表2-5
C口高四位为输出
C口高四位为输入
B组有由D2、D1、D0组成。
其中D2为工作方式选择;
D1为输入/输出选择;
D0为C口低四位输入/输出选择。
表2-6
B口工作方式
工作方式0
工作方式1
表2-7
B口为输出
B口为输入
表2-8
C口低四位为输出
C口低四位为输入
在本系统中,仅使用8255A的A口和B口,且设置A口为输出,B口为输入,故可选择8255A的工作方式0。
由此,其方式控制字可为:
82H、83H、8AH或8BH。
8255A在系统中的连线图如下:
2.3步进电机控制系统流程
根据软硬件分析,可以得到软件设计流程图如下:
3.详细设计
3.1.1硬件设计与实现
步进电机接口的硬件部分主要是根据输送相序代码的并行数据线(8根),以及保护电机绕组的器件。
3.1.2设计方案:
本次课程设计中,按要求,我们采用8086CPU作为主控制器,加上其对应的接口芯片并连接电路,通过电机驱动器驱动步进电机运行并在仿真软件proteus中进行仿真实验。
系统框图如下所示。
3.1.374LS373锁存器电路
74LS373为三态输出的八D透明锁存器。
373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
3.1.4ULN2003电机驱动电路
ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN复合晶体管组成。
它的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
其内部结构和引脚图如下:
3.2软件设计
3.2.1软件设计原理分析:
由上面的分步设计可得到系统的总设计图(见附件一)。
由总电路图可知,该8255A的地址为:
A口地址
8000H
B口地址
8100H
C口地址
8200H
控制口地址
8300H
步进电机分为A、B、C、D四相,因此,该步进电机控制脉冲如下:
表3-2
电机运行状态
控制脉冲
单拍正转
A→B→C→D→A
单拍反转
D→C→B→A→D
双拍正转
AB→BC→CD→DA→AB
双拍反转
DC→CB→BA→AD→DC
单双拍正转
A→AB→B→BC→C→CD→D→DA→A
单双拍反转
D→DC→C→CB→B→BA→A→AD→D
其相应的控制字如下表所示:
表3-3
控制字
01H→02H→04H→08H→01H
08H→04H→02H→01H→08H
0CH→06H→03H→09H→0CH
09H→03H→06H→0CH→09H
01H→0CH→02H→06H→04H→03H→08H→09H→01H
08H→09H→04H→03H→02H→06H→01H→0CH→08H
本次设计中采用其中四相八拍的控制方式,及上面表中的单双拍正反转控制,程序中加上设计的状态指示灯后控制字如下(PA口高四位为状态位):
表3-4
41H→4CH→42H→46H→44H→43H→48H→49H→41H
88H→89H→84H→83H→82H→86H→81H→8CH→88H
启动
11H→1CH→12H→16H→14H→13H→18H→19H→11H
停止
20H→20H→20H→20H→20H→20H→20H→20H→20H
3.2.2代表性程序段及其分析
选取程序段及其注解如下:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
TAB1DB03H,07H,06H,0EH,0CH,0DH,09H,0BH;
定义段代码
TAB2DB3FH,06H,5BH,4FH,66H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,90H;
?
8255A,10010000H,PA输入,PC输出
OUT63H,AL;
方式命令字写入控制口
MOVSI,OFFSETTAB1
S:
MOVAL,0
MOVBX,OFFSETTAB2;
;
指向首地址
XLAT
OUT61H,AL
INAL,60H
ANDAL,04H;
;
读取开关P2的值
CMPAL,00H
JZS;
K2=1启动,K2=0等待启动
L0:
INAL,60H
ANDAL,03H
CMPAL,00H;
K1K0=00调用正慢程序
JZAA1
CMPAL,01H;
K1K0=01调用正快程序
JZAA2
CMPAL,02H;
K1K0=10调用反慢程序
JZAA3
CMPAL,03H;
K1K0=11调用反快程序
JZAA4
AA1:
MOVDL,1
MOVAL,DL
MOVBX,OFFSETTAB2
MOVAL,[SI]
CMPAL,0BH
JNZA1
SUBSI,8
A1:
INCSI
MOVAL,[SI]
OUT62H,AL;
将TAB2的当前数据读入C口显示
CALLDELAY1;
调用短延时
JMPL0
AA2:
MOVAL,2
JNZA2
SUBSI,8
A2:
OUT62H,AL
CALLDELAY2;
调用长延时
AA3:
MOVAL,3
CMPAL,03H;
判断是否是第一个数
JNZA3;
不是第一个数,反转
ADDSI,8;
否则加8到0BH
A3:
DECSI
CALLDELAY1
AA4:
MOVAL,4
JNZA4;
是,第一个数加8
A4:
DECSI
CALLDELAY2
DELAY1:
PUSHCX
MOVCX,0E300H;
修改cx的值提高转速
ADD1:
PUSHAX
POPAX
LOOPADD1
POPCX
RET
DELAY2:
PUSHCX
MOVCX,04300H;
CX的值为循环次数
ADD2:
LOOPADD2
CODEENDS
ENDSTART
第5章课程设计总结与体会
这次课程设计是我感受很多,因为这次课程设计需要自己动手动脑,把自己课堂上学到的软件和硬件知识全部应用进来,要想完成好这次课程设计首先要弄懂步进电机的工作原理,与外部电机的连接,汇编语言等。
这其中有以前课堂上学到的也有我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。
我想通过这次课程设计,我对电机的了解拓宽了对课设芯片和系统电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。
大几天尽管过去了,看着自己的劳动成果,心里满足欣慰,尽管时间很短并不能很深入的了解更多汇编程序的一些技巧,可我还是很感谢学校的安排,最后真的很感谢我们的老师,对我们提出比较高的要求,虽然我做的不够好,但是也从中学到了很多知识,还有钻研的精神,不敷衍。
在这次课程设计中,使用到了汇编语言进行编程,在以前的课设或实践中并未使用过,感觉既新鲜又担心。
刚开始自己接触汇编编程的时候,觉得那太难了,甚至有些害怕编程。
不过当我接触了一段时间编程之后,我开始对汇编程序有了更多的认识与理解。
于是,我慢慢的一句一句的编写,直到最后编出了我的第一个实践汇编程序,我真的高兴之极,成功的喜悦溢于言表。
然后,这次课设还让我对8086CPU、8255A等芯片,有了更多的理解与记忆。
本次设计还用到了很多相关的软件,如PROTEUS、EMU8086、MASMFORWINDOWS等。
由于自身和其他一些外界因素,导致我在软件的选择与使用时出现了一些重大的失误。
不过在同学和指导老师的帮助下,最终问题得到了圆满的解决。
总而言之,这次课设我收获良多。
我既学到了新知识、新方法,也懂得了更多一些值得我学习与改正的东西。
但是,这也说明我在进步。
在以后的学习与生活中,我也会像现在一样,认真学习、慢慢进步的!
参考文献
参考文献:
【1】王小明。
电动机的控制(第一版).北京航空航天大学出版社.2002
【2】楼天顺、周佳社.微机原理与接口技术,北京科学出版社.2006
【3】迟成文、王保秀.汇编语言程序设计,中国科学技术大学出版社.1993
【4】陆忠华.汇编语言程序设计,科学出版社.1993
设计者:
日期:
2013年1月4日
与封面日期相同)
设计过程中质疑(或答辩)记载:
1.TAB1的作用及生成方法
答:
定义段代码,储存显示七段码中1-8的二进制源码
2.如何控制步进电机正反转?
用PTO指令让Q0.0ORQ0.1高速脉冲,另一个点如Q0.2做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速。
CMPAL,03H;
指导教师评语:
评分:
签名:
年月日