微机原理实验指导书.docx
- 文档编号:23195253
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:47
- 大小:277.26KB
微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(47页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书
微机原理实验指导书
(版本0.1)
余有灵副教授
控制科学与工程系
2007年12月11日
说明
本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。
本次实验包括三个实验系统。
任意完成其中一个即可。
实验6-1步进电机控制实验
1.实验目的
(1)学习步进电机的控制方法。
(2)学会用8255控制步进电机。
2.实验设备
PC微机一台、TD-PIT+实验系统一套、选配四项八拍步进电机一个。
3.实验内容
学习步进电机的控制方法,编写程序,利用8255的B口来控制步进电机的运转。
4.实验说明及步骤
使用开环控制方式能对步进电机的转动方向、速度、角度进行调节。
所谓步进,就是指每给步进电机一个递进脉冲,步进电机各绕组的通电顺序就改变一次,即电机转动一次。
根据步进电机控制绕组的多少可以将电机分为三相、四相和五相。
实验平台可连接的步进电机为四相八拍电机,电压为DC12V,其励磁线圈及其励磁顺序如图6-1及表6-1所示。
表6-1励磁顺序
图6-1励磁线圈
实验中PB端口各线的电平在各步中的情况如表6-2所示。
实验电路如图6-2所示。
表6-2PB端口各线的电平在各步中的情况
图6-2步进电机控制实验参考接线图
实验步骤如下:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。
b)首先运行CHECK程序,查看I/O空间始地址。
c)利用查出的地址编写程序,然后编译链接。
d)参考图6-2所示连接实验线路。
e)运行程序,观察步进电机的转动情况。
注意:
步进电机不使用时请断开连接器,以免误操作使电机过分发热。
步进电机控制实验代码
;*************根据查看端口资源修改下列符号值*******************
IOY0EQU9C00H;片选IOY0对应的端口始地址
;**************************************************************
MY8255_AEQUIOY0+00H*4;8255的A口地址
MY8255_BEQUIOY0+01H*4;8255的B口地址
MY8255_CEQUIOY0+02H*4;8255的C口地址
MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
TTABLEDB01H,03H,02H,06H,04H,0CH,08H,09H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MAIN:
MOVDX,MY8255_MODE;定义8255工作方式
MOVAL,80H;工作方式0,A口和B口为输出
OUTDX,AL
A1:
MOVBX,OFFSETTTABLE
MOVCX,0008H
A2:
MOVAL,[BX]
MOVDX,MY8255_B
OUTDX,AL
CALLDALLY
INCBX
LOOPA2
MOVAH,1;判断是否有按键按下
INT16H
JZA1;无按键则跳回继续循环,有则退出
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
DALLYPROCNEAR;软件延时子程序
PUSHCX
PUSHAX
MOVCX,0FFFH
D1:
MOVAX,5000H
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DALLYENDP
CODEENDS
ENDSTART
实验6-2直流电机闭环调速实验
1.实验目的
(1)了解直流电机闭环调速方法。
(2)掌握PID控制规律及算法。
2.实验设备
PC微机一台、TD-PIT+实验系统一套。
3.实验内容
本实验完成的是一个闭环调节直流电机转速的应用。
用8255的B口作为直流电机的控制信号,通过对电机转速反馈量的的运算,调节控制信号,达到控制电机匀速转动的作用。
并将给定转速和当前测量转速显示在屏幕上。
4.实验说明及步骤
直流电机闭环调速实验原理如图6-3所示。
图6-3直流电机闭环调速实验原理图
利用实验平台上8255的PB0产生脉冲信号作为控制量,经驱动电路驱动电机运转。
霍尔测速元件输出的脉冲信号记录电机转速构成反馈量。
在参数给定情况下,经PID运算,电机可在控制量作用下,按给定转速运转。
实验利用PC机定时器0号通道,设置为输出1ms方波,作为采样时钟,PB0产生PWM脉冲计时及转速累加,系统总线上INTR中断用于测量电机转速。
参考实验线路如图6-4所示,参考程序流程如图6-5所示。
实验步骤如下:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。
b)首先运行CHECK程序,查看I/O空间始地址。
c)利用查出的地址编写程序,然后编译链接。
d)参考图6-4所示连接实验线路。
e)运行程序,观察电机运转情况以及显示在屏幕上的结果。
f)实验程序参数表如表6-3所示。
图6-4直流电机闭环调速实验参考接线图
表6-3实验程序参数表
(a)主程序(b)测速中断处理程序(c)定时采样中断处理程序
图6-5直流电机闭环调速实验参考程序流程图
直流电机闭环调速实验
;**************根据CHECK配置信息修改下列符号值****************
INTR_IVADDEQU01CCH;INTR对应的中断矢量地址
INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址
INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址
INTR_IMEQU0F7H;INTR对应的中断屏蔽字
PCI_INTCSREQU9438H;PCI卡中断控制寄存器地址
IOY0EQU9C00H;片选IOY0对应的端口始地址
;**************************************************************
MY8255_AEQUIOY0+00H*4;8255的A口地址
MY8255_BEQUIOY0+01H*4;8255的B口地址
MY8255_CEQUIOY0+02H*4;8255的C口地址
MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址
PC8254_COUNT0EQU40H;PC机内8254定时器0端口地址
PC8254_MODEEQU43H;PC机内8254控制寄存器端口地址
STACK1SEGMENTSTACK
DW64DUP(?
)
TOPLABELWORD
STACK1ENDS
DATASEGMENT
TABLE1DB'AssumedFanSpeed:
(/s)',0AH,0DH,'$';字符串变量
TABLE2DB'CurrentFanSpeed:
(/s)',0AH,0DH,'$';字符串变量
ENTDB0AH,0DH,'$';换行,回车
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
CS_BAK1DW?
;保存定时器0中断处理程序入口段地址的变量
IP_BAK1DW?
;保存定时器0中断处理程序入口偏移地址的变量
IM_BAK1DB?
;保存定时器0中断屏蔽字的变量
TSDB14H;采样周期
SPECDW55;转速给定值
IBANDDW0060H;积分分离值
KPPDW1060H;比例系数
KIIDW0010H;积分系数
KDDDW0020H;微分系数
YKDW?
;反馈
CKDB?
;控制量
VADDDW?
;转速累加单元
ZVDB?
;转速计算变量
ZVVDB?
;转速计算变量
TCDB?
;采样周期
FPWMDB?
;PWM脉冲中间标志位
CK_1DB?
;上次控制量
EK_1DW?
;PID偏差
AEK_1DW?
;偏差变化
BEKDW?
;偏差变化的变化
AAAADB?
VAADB?
BBBDB?
VBBDB?
MARKDB?
R0DW?
R1DW?
R2DW?
R3DW?
R4DW?
R5DW?
R6DW?
R7DB?
R8DW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETTABLE1;显示字符串1
MOVAH,09H
INT21H
MOVAX,SPEC;显示给定值
CALLDECSHOW
MOVDX,OFFSETENT;回车,换行
MOVAH,09H
INT21H
MOVDX,OFFSETTABLE2;显示字符串2
MOVAH,09H
INT21H
CLI
MOVAX,0000H
MOVES,AX
MOVDI,0020H;定时器0中断地址(08H中断向量)
MOVAX,ES:
[DI]
MOVIP_BAK1,AX;保存定时器0中断处理程序入口偏移地址
MOVAX,OFFSETTIMERISR
MOVES:
[DI],AX;设置实验定时中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK1,AX;保存定时器0中断处理程序入口段地址
MOVAX,SEGTIMERISR
MOVES:
[DI],AX;设置实验定时中断处理程序入口段地址
INAL,21H;读取PC中8259屏蔽字(OCW1)
MOVIM_BAK1,AL;保存INTR原中断屏蔽字
ANDAL,0F7H
OUT21H,AL;打开定时器0中断屏蔽位
MOVDX,PCI_INTCSR;初始化PCI卡中断控制寄存器
MOVAX,1F00H;向PCI_INTCSR中写入003F1F00H
OUTDX,AX
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVDI,INTR_IVADD
MOVAX,ES:
[DI]
MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址
MOVAX,OFFSETMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址
MOVAX,SEGMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口段地址
MOVDX,INTR_OCW1
INAL,DX
MOVIM_BAK,AL;保存INTR原中断屏蔽字
ANDAL,INTR_IM
OUTDX,AL;打开INTR的中断屏蔽位
MOVVADD,0000H;变量的初始化
MOVZV,00H
MOVZVV,00H
MOVCK,00H
MOVYK,0000H
MOVCK_1,00H
MOVEK_1,0000H
MOVAEK_1,0000H
MOVBEK,0000H
MOVBBB,00H
MOVVBB,00H
MOVR0,0000H
MOVR1,0000H
MOVR2,0000H
MOVR3,0000H
MOVR4,0000H
MOVR5,0000H
MOVR6,0000H
MOVR7,00H
MOVR8,0000H
MOVMARK,00H
MOVFPWM,01H
MOVAAAA,7FH
MOVVAA,7FH
MOVTC,00H
MOVAL,80H;初始化8255
MOVDX,MY8255_MODE;A,B口均为输出
OUTDX,AL
MOVAL,00H
MOVDX,MY8255_B
OUTDX,AL
MOVDX,PC8254_MODE;初始化PC机定时器0,定时1ms
MOVAL,36H;计数器0,双字节传输,方式3,二进制计数
OUTDX,AL
MOVDX,PC8254_COUNT0;计数器0的CLK0=1.19318MHz
MOVAL,8FH;;计数值048FH=1167
OUTDX,AL
MOVAL,04H
OUTDX,AL
STI
M1:
MOVAL,TS;判断采样周期到否?
SUBAL,TC
JNCM1;没到则继续等待
MOVTC,00H;采样周期到,将采样周期变量清0
MOVAL,ZVV
MOVAH,00H
MOVYK,AX;得到反馈量YK
CALLPID;调用PID子程序,得到控制量CK
MOVAL,CK;把控制量转化成PWM输出
SUBAL,80H;
JCIS0;
MOVAAAA,AL
JMPCOU
IS0:
MOVAL,10H;电机的启动值不能低于10H
MOVAAAA,AL
COU:
MOVAL,7FH
SUBAL,AAAA
MOVBBB,AL
MOVAX,YK;将反馈值YK送到屏幕显示
CALLDECSHOW
MOVDL,0DH;回车
MOVAH,02H
INT21H
MOVAH,1;判断是否有按键按下
INT16H
JZM1;无按键则跳回继续等待,有则退出
EXIT:
CLI
MOVAL,00H;退出时停止电机运转
MOVDX,MY8255_B
OUTDX,AL
MOVDX,PC8254_MODE;恢复PC机定时器0状态
MOVAL,36H
OUTDX,AL
MOVDX,PC8254_COUNT0
MOVAL,00H
OUTDX,AL
MOVAL,00H
OUTDX,AL
MOVDX,PCI_INTCSR;恢复PCI卡中断控制寄存器
MOVAX,0000H
OUTDX,AX
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字
MOVAL,IM_BAK
OUTDX,AL
MOVDI,0020H
MOVAX,IP_BAK1;恢复定时器0中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK1;恢复定时器0中断处理程序入口段地址
MOVES:
[DI],AX
MOVAL,IM_BAK1
OUT21H,AL;恢复屏蔽字
STI
MOVAX,4C00H
INT21H
MYISRPROCNEAR;系统总线INTR中断处理程序
PUSHAX
PUSHCX
PUSHDX
MOVAX,DATA
MOVDS,AX
MOVAL,MARK
CMPAL,01H
JZIN1
MOVMARK,01H
JMPIN2
IN1:
MOVMARK,00H;计算转速
VV:
MOVDX,0000H
MOVAX,03E8H
MOVCX,VADD
CMPCX,0000H
JZMM1
DIVCX
MM:
MOVZV,AL
MOVVADD,0000H
MM1:
MOVAL,ZV
MOVZVV,AL
IN2:
MOVDX,PCI_INTCSR;清PCI卡控制寄存器标志位
SUBDX,19H
INAL,DX
MOVDX,PCI_INTCSR
ADDDX,2
MOVAX,003FH
OUTDX,AX
MOVDX,INTR_OCW2;向PC机内部8259发送中断结束命令
MOVAL,20H
OUTDX,AL
MOVAL,20H
OUT20H,AL
POPDX
POPCX
POPAX
IRET
MYISRENDP
TIMERISRPROCNEAR;PC机定时器0中断处理程序
PUSHAX
PUSHCX
PUSHDX
MOVAX,DATA
MOVDS,AX
INCTC;采样周期变量加1
CALLKJ
CLC
CMPMARK,01H
JCTT1
INCVADD
CMPVADD,0700H;转速值溢出,赋极值
JCTT1
MOVVADD,0700H
MOVMARK,00H
TT1:
MOVAL,20H;中断结束,发EOI命令
OUT20H,AL
POPDX
POPCX
POPAX
IRET
TIMERISRENDP
KJPROCNEAR;PWM子程序
PUSHAX
CMPFPWM,01H;PWM为1,产生PWM的高电平
JNZTEST2
CMPVAA,00H
JNZANOT0
MOVFPWM,02H
MOVAL,BBB
CLC
RCRAL,01H
MOVVBB,AL
JMPTEST2
ANOT0:
DECVAA
MOVAL,01H;PB0=1电机转动
MOVDX,MY8255_B
OUTDX,AL
TEST2:
CMPFPWM,02H;PWM为2,产生PWM的低电平
JNZOUTT
CMPVBB,00H
JNZBNOT0
MOVFPWM,01H
MOVAL,AAAA
CLC
RCRAL,01H
MOVVAA,AL
JMPOUTT
BNOT0:
DECVBB
MOVAL,00H;PB0=0电机停止
MOVDX,MY8255_B
OUTDX,AL
OUTT:
POPAX
RET
KJENDP
PID:
MOVAX,SPEC;PID子程序
SUBAX,YK;求偏差EK
MOVR0,AX
MOVR1,AX
SUBAX,EK_1
MOVR2,AX
SUBAX,AEK_1;求BEK
MOVBEK,AX
MOVR8,AX
MOVAX,R1;求偏差变化量AEK
MOVEK_1,AX
MOVAX,R2
MOVAEK_1,AX
TESTR1,8000H
JZEK1;若偏差EK为正数,则不需要求补码
NEGR1;若偏差EK为负数,则求偏差EK的补码
EK1:
MOVAX,R1;判断偏差EK是否在积分分离值的范围内
SUBAX,IBAND
JCII;在积分分离值范围内,则跳转到II,计算积分项
MOVR3,00H;若不在积分分离值范围内,则将积分项清0
JMPDDD;计算微分项
II:
MOVAL,TS;计算积分项,结果放在R3变量中(R3=EK*TS/KII)
MOVAH,00H;其中TS和KII均为正数,所以R3的正负由EK决定
MOVCX,R1
MULCX
MOVCX,KII
DIVCX
MOVR3,AX
TESTR0,8000H;判断积分项的正负
JZDDD;为正数,则跳转去计算微分项
NEGR3;为负数,则将积分项的结果求补码
DDD:
TESTBEK,8000H;判断BEK的正负
JZDDD1;为正数,则BEK不变
NEGBEK;为负数,则求BEK的补码
DDD1:
MOVAX,BEK;计算微分项(R4=KDD*BEK/8TS)
MOVCX,KDD
MULCX
PUSHAX
PUSHDX
MOVAL,TS
MOVAH,00H;将微分项缩小8倍,防止溢出
MOVCX,0008H
MULCX
MOVCX,AX
POPDX
POPAX
DIVCX
MOVR4,AX
TESTR8,8000H;判断微分项的正负
JZDD1;为正数,则结果不需要求补码
NEGR4;为负数,则微分项结果R4求补码
DD1:
MOVAX,R3;积分项和微分项相加,结果放在R5变量中
ADDAX,R4
MOVR5,AX
JOL9;判断溢出
L2:
MOVAX,R5
ADDAX,R2
MOVR6,AX;R6=R5+R2=积分项+微分项+AEK
JOL3
L5:
MOVAX,R6;计算KPP*R6
MOVCX,KPP
IMULCX
MOVCX,1000H
IDIVCX
MOVCX,AX
RCLAH,01H;判断溢出,溢出赋极值
PUSHF
RCRAL,01H
POPF
JCLLL1
CMPCH,00H
JZLLL2
MOVAL,7FH
JMPLLL2
LLL1:
CMPCH,0FFH
JZLLL2
MOVAL,80H
LLL2:
MOVR7,AL;CK=CK_1+CK
ADDAL,CK_1
JOL8
L18:
MOVCK_1,AL
ADDAL,80H
MOVCK,AL
RET
L8:
TEST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)