东北大学接口技术微机原理课程设计大作业Word文档格式.docx
《东北大学接口技术微机原理课程设计大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学接口技术微机原理课程设计大作业Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
该电路由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。
【软件设计】
本设计通过软件编程使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
18.75
F8
(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)中断服务子程序框图如图3
(3)速度设置自程序和方向设置单元程序的流程比较简单,如图4,5。
(4)固定步数转动单元子程序框图如图6
(5)连续转动单元子程序框图如图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
PRESS2TODIRECTIONSET!
0DH,0AH
PRESS3TOTURNREQUIREDSTEPS!
PRESS4TOSTARTRUNNING!
PRESS5TOEXIT!
0DH,0AH,'
$'
MES1DB0DH,0AH,'
*****SPEEDSET*****'
PRESSAFOR0.05R/S!
PRESSBFOR0.15R/S!
PRESSCFOR0.25R/S!
PRESSDFOR0.75R/S!
PRESSEFOR1.25R/S!
PRESSFFOR3.75R/S!
PRESSGFOR6.25R/S!
PRESSHFOR18.75R/S!
PRESSESCTOCANCEL!
MES2DB0DH,0AH,'
*****DIRECTIONSET*****'
PRESS1TORIGHT!
0DH,0AH
PRESS0TOLEFT!
MES3DB0DH,0AH,'
*****STEPS(<
1000)SET*****'
PLEASEINPUTSTEPS:
'
MES4DB0DH,0AH,'
RUNNING.....'
PRESSESCTOSTOP!
INTSEGDW?
INTOFFDW?
INTIMRDB?
FLAG1DB0
FLAG0DB0
NUMDB11001100B
CNTFFDW0B71BH,3D09H,249FH,0C35H,753H,271H,177H,7DH
DATAENDS
STACKSEGMENTPARASTACK'
STACK'
DB256DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,CTL53
MOVAL,00110110B
OUTDX,AL
MOVDX,P0_53
MOVAL,1BH
MOVAL,0B7H
MOVDX,CTL55
MOVAL,10000000B
MOVDX,PA55
MOVAL,0
MOVAL,11001100B
MOVDX,PC55
CLI
MOVAH,35H
MOVAL,IRQ
INT21H
MOVAX,ES
MOVINTSEG,AX
MOVINTOFF,BX
PUSHDS
MOVAX,SEGINTPROC
LEADX,INTPROC
MOVAH,25H
MOVDX,INTA1
INAL,DX
MOVINTIMR,AL
ANDAL,IMR1
POPDS
STI
MAIN:
LEADX,MES0
MOVAH,09H
LP0:
MOVAH,8
INT21H
CMPAL,'
1'
JELP1
2'
JELP2
3'
JELP3
4'
JELP4
5'
JEEXIT
JMPLP0
LP1:
CALLAA
JMPMAIN
LP2:
CALLBB
LP3:
CALLCC
LP4:
CALLDD1
EXIT:
MOVAL,INTIMR
MOVDX,INTOFF
MOVAX,INTSEG
MOVAH,4CH
INTPROCPROC
PUSHAX
PUSHDX
PUSHCX
CMPFLAG1,0
JEKK
RORNUM,1
JMPYY
KK:
ROLNUM,1
YY:
MOVAL,NUM
ANDAL,00001111B
NOTFLAG0
;
INCFLAG0
MOVDX,INTA0
MOVAL,20H
POPCX
POPDX
POPAX
IRET
INTPROCENDP
AAPROC
PUSHBX
PUSHDI
MOVAH,9
LEADX,MES1
CMPAL,1BH
JZKK0
SUBAL,'
A'
MOVAH,0
ADDAX,AX
MOVDI,AX
MOVBX,OFFSETCNTFF
MOVAX,WORDPTR[BX+DI]
XCHGAH,AL
KK0:
POPDI
POPBX
RET
AAENDP
BBPROC
LEADX,MES2
JZXX
0'
MOVFLAG1,AL
XX:
BBENDP
CCPROC
PUSHCX
MOVDX,OFFSETMES3
MOVBX,0
GETCHAR:
MOVAH,1
SUBAL,30H
JLXX0
CMPAL,09H
JGXX0
XCHGAX,BX
MOVCX,0AH
MULCX
ADDBX,AX
JMPGETCHAR
XX0:
LEADX,MES4
MOVCX,BX
MOVCX,10
MOVAL,1
MOVBL,FLAG0
XX1:
CLI
MOVAH,6
MOVDL,0FFH
JEXX2
STI
HLT
CMPBL,FLAG0
JEXX1
MOVBL,FLAG0
LOOPXX1
XX2:
CCENDP
DD1PROC
LOP:
JNZLOP
DD1ENDP
CODEENDS
ENDSTART
【心得体会】
《接口技术》是一门应用性很强的课程,其中包括软硬件的结合,接口技术,中断的处理。
由于平时对硬件的接触较少所以学习起来多少有些困难。
但课程中融入了实验,并且还有这次的大作业。
对于理论知识的理解就更深刻了。
本次大作业的内容是步进电机的控制设计,其中包括转速设置、转向设置、固定步数转动、连续转动、退出系统。
程序完全是自己设计的,这与平时的实验很不同,对编程的要求很高。
而且平时的实验都是给出程序的。
这个可给我出了个难题,我认真查阅资料,学习关于这方面的知识,比如说要了解怎么样去使用8255这个可编程并行接口芯片,怎么样使用8253来定时及输出一定频率的脉冲。
在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;
也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,查每一条指令的作用与功能,又巩固了我的对汇编语言的了解。
感谢老师这个学期对我们的悉心教授,让我们对接口技术有了更多的了解!