东北大学接口技术微机原理课程设计大作业.doc
《东北大学接口技术微机原理课程设计大作业.doc》由会员分享,可在线阅读,更多相关《东北大学接口技术微机原理课程设计大作业.doc(20页珍藏版)》请在冰豆网上搜索。
.专业整理.
东北大学
接口技术报告
步进电机控制系统
学院XXXXXXXXXXXXXXXXX
班级XXXXXXXXXXXXXXXXXXX
姓名XXXXX
学号XXXXXXXXXX
日期XXXXXXXXXXXX
【实验目的】
1、利用PC机和实验箱,设计并实现给定步进电机的控制。
2、进一步掌握对芯片的硬件和软件综合设计方法。
3、了解微机的工作原理,微型计算机的基本结构,接口技术及汇编语言程序设计。
【实验内容】
1、控制步进电机转动,要求转速1步/秒。
2、基于实验箱,设计并实现接口和驱动电路。
3、用汇编语言编制程序。
4、改善步进电机的控制性能,控制步进电机转/停;正转/反转;改变转速(至少3档);单步。
【实验设备】
1)MUT-III型实验箱
2)计算机
【总体设计】
1、8253定时控制步进速度。
2、8255输出控制脉冲,再经75452驱动电机。
3、系统运行时,通过按键的不同来控制电机转/停;正转/反转;改变转速(至少3档);单步。
【硬件设计】
因采用了PC机和PC总线接口应用平台,硬件电路相对简单,除利用了PC机本身资源外(如中断资源),还利用了平台上的8253计数/定时器、8255并行接口单元,再加上外围驱动电路,便构成可步进电机控制电路,硬件原理图如图1:
图中75452元件是正与非驱动器,OC门输出,所以加上拉电阻;8253的作用是输出定时信号向CPU申请中断要求输出电机走步的控制信号。
图1
【芯片介绍】
(1)8253定时器/计数器电路
该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口、地址、读、写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。
定时器输出、GATE控制孔对应如下:
OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。
原理图如下:
注:
GATE信号无输入时为高电平
(2)8255
8255可编程并口电路:
该电路由1片8255组成,8255的数据口,地址,读写线,复位控制线均已接好,片选输入端插孔为8255CS,A,B,C三端口的插孔分别为:
PA0~PA7,PB0~PB7,PC0~PC7.电路原理如图:
8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。
8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。
实验中,8255A工作于基本输入输出方式(方式0)。
另外,从原理图中看到,8255芯片的端口选择信号A0、A1,分别与地址总线A1、A2相连,因此,8255的四个端口地址应是:
04A0H、04A2H、04A4H、04A6H。
用8255A的PA0~3分别控制步进电机的A、B、C、D四相,“1”则该相绕组通电,“0”则不通电。
步进电机的驱动原理是使各相绕组依次通电来使其作步进式旋转,通过通电顺序和切换频率来调节其转速和转向。
步进电机可以四相四拍或四相八拍方式工作,即通电顺序为:
A→B→C→D→A;A→AB→B→BC→C→CD→D→DA→A。
按相反的顺序即可改变电机的旋转方向。
本实验系统采用的是:
AB→BC→CD→DA→AB。
B
8255A
PA1
7407
PA0
+12V
PA3
PA2
A
C
D
【软件设计】
本设计通过软件编程使8253输出定时信号申请中断,CPU发出命令由8255的下C口输出脉宽信号来控制步进电机的走步。
电机的转动和停止则是通过8255的A0端子输出高低电平来继续或暂停8253的计数从而控制中断申请来实现的。
8253的定时时间决定了电机转动的快慢。
相对简单的硬件电路,使软件设计成为本实验的中心内容。
控制系统分五个功能模块,分别是转速设置、转向设置、固定步数转动、连续转动、退出系统,在前四个功能块中都设置了ESC键来取消或暂停执行当前操作。
(1)转速设置
根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。
这里采用的是8253的0号计数器和方波产生方式,输入时钟为f=46875hz,设计数初值为n,要求转速为0.25转/秒,对四相步进电机而言即为5步/秒,则有:
f/n=5n=f/5=46875/5=9375
反过来,当计数器初值确定时,决定了电机的转速,如计数初值为0时,有电机转速为1步每秒(本设计中最慢速度);当计数初值为125时,电机转速为375步每秒(本设计中最快速度)。
具体设置初值及转速见表2。
步速
转速
按键
计数初值
1
0.05
F1
46875
3
0.15
F2
15625
5
0.25
F3
9375
15
0.75
F4
3125
25
1.25
F5
1875
75
3.75
F6
625
125
6.25
F7
375
375
18.75
F8
125
(2)转向设置
在内存单元中设置一方向标志FLAG1,假设FLAG1为0时为顺时针转向,则当设置FLAG1不为0时即可使电机转逆时针转动。
判断操作在中断子程序中进行。
(3)连续转动设置
在此功能模块中,通过让8255的A0口输出高电平到8253的GATE0使其0号计数器继续工作(平常时A0口为低电平使8253的0号计数器暂停计数),并开放中断进入循环等待中断状态,在等待状态中若有键盘的‘ESC’键按下,则认为暂停要求而关闭中断和暂停8253计数回到主菜单。
需要继续原转向原速度运行,再选择此功能模块即可。
(4)固定步数转动设置
通过键盘输入0到999的十进制值来设定转动步数。
判断已转步数即中断次数是这样实现的,设置一内存单元FLAG0,中断时在中断子程序中求反,而在循环等待中断的程序中判断其有无变化,无变化继续循环,有变化则使计数寄存器CX减1后继续循环,当CX=0时退出等待中断状态,并关中断和暂停8253计数。
在这个等待程序中也判断键盘有无ESC键按下,若有则认为暂停要求而退出。
(6)中断子程序
在中断子程序中,将值为11001100B的内存单元循环左移或右移一位,通过8255的下C口输出低四位,控制步进电机的相序变化,从而使电机连续转动。
左移或右移将使电机顺时针或逆时针转动,它由标志FLAG1来决定。
【程序流程图】
(1)主程序框图如图2
图2主程序框图
(2)中断服务子程序框图如图3
图3中断服务子程序框图
(3)速度设置自程序和方向设置单元程序的流程比较简单,如图4,5。
(4)固定步数转动单元子程序框图如图6
图6固定步数转动单元子程序框图
(5)连续转动单元子程序框图如图7
图7连续转动单元子程序框图
(6)8253和8255初始化子程序、菜单显示子程序请参考程序清单。
【实验程序】
DATASEGMENT
IRQEQU0DH
IMR1EQU0DFH
IMR2EQU20H
PA55EQU280H
PC55EQU282H
CTL55EQU283H
P0_53EQU290H
CTL53EQU293H
INTA0EQU20H
INTA1EQU21H
MES0DB0DH,0AH,'*****STEPPINGMOTORCONTROLSYSTEM!
*****',0DH,0AH,0DH,0AH
DB'PRESS1TOSPEEDSET!
',0DH,0AH
DB'PRESS2TODIRECTIONSET!
',0DH,0AH
DB'PRESS3TOTURNREQUIREDSTEPS!
',0DH,0AH
DB'PRESS4TOSTARTRUNNING!
',0DH,0AH
DB'PRESS5TOEXIT!
',0DH,0AH,'$'
MES1DB0DH,0AH,'*****SPEEDSET*****',0DH,0AH,0DH,0AH
DB'PRESSAFOR0.05R/S!
',0DH,0AH
DB'PRESSBFOR0.15R/S!
',0DH,0AH
DB'PRESSCFOR0.25R/S!
',0DH,0AH
DB'PRESSDFOR0.75R/S!
',0DH,0AH
DB'PRESSEFOR1.25R/S!
',0DH,0AH
DB'PRESSFFOR3.75R/S!
',0DH,0AH
DB'PRESSGFOR6.25R/S!
',0DH,0AH
DB'PRESSHFOR18.75R/S!
',0DH,0AH
DB'PRESSESCTOCANCEL!
',0DH,0AH,'$'
MES2DB0DH,0AH,'*****DIRECTIONSET*****',0DH,0AH,0DH,0AH
DB'PRESS1TORIGHT!
',0DH,0AH
DB'PRESS0TOLEFT!
',0DH,0AH,'$'
MES3DB0DH,0AH,'*****STEPS(<1000)SET*****',0DH,0AH,0DH,0AH
DB'PRESSESCTOCANCEL!
',0DH,0AH
DB'PLEASEINPUTSTEPS:
','$'
MES4DB0DH,0AH,'RUNNING.....',0DH,0AH
DB'PRESSESCTOSTOP!
',0DH,0AH,'$'
INTSEGDW?
INTOFFDW?
INTIMRDB?
FLAG1DB0
FLAG0DB0
NUMDB11001100B
CNTFFDW0B71BH,3D09H,249FH,0C35H,753H,271