实验八 数控工作台“点动”
一.实验目的
掌握MCS-51单片机应用于输入和输出结合的驱动步进电机的程序设计和调试方法。
二.实验设备
1.ME-5103在线仿真器1台;
2.IBM-PC微机1台;
3.直流稳压电源1台;
4.步进电机数控工作台驱动系统1套。
三.实验内容
1.实验设计
数控工作台“点动”驱动实验; 定时中断程序控制步进电机速度
定时器0于方式1,16位,10ms中断一次键盘上数字分别表示方向, 如8为上, 7为左上等,如下表示:
U-L UP U-R 7 8 9
LEFT STOP RIGHT 4 5 6
D-L DOWN D-R 1 2 3
当按下对应的数字键时,X轴(左右)和Y轴(上下)的步进电机按三相六拍的工作方式运动:
Y轴 X轴
C B A C B A
P1.6 P1.5 P1.4 P1.2 P1.1 P1.0
用键盘上方的发光二极管(3FH)对应指示:
Y轴 X轴
D6 D5 D4 D2 D1 D0
2.参考程序
;内存分配
TCER EQU 40H ;10ms计数单元
XSTAT EQU 52H
YSTAT EQU 53H
SM_OUT EQU 55H
; 位地址,工作标志
XP EQU 02H ;X轴正反转
YP EQU 03H ;Y轴正反转
XW EQU 04H ;X轴工作
YW EQU 05H ;Y轴工作
;
DISP EQU 0DE00H ;显示子程序入口
TKB EQU 0DE60H ;判键子程序
KEYB EQU 0DE70H ;键分析子程序
;
ORG 0000H
START: AJMP MAIN
;
ORG 000BH ;定时器0中断服
AJMP TINT0 ;务程序入口
;
ORG 0030H
MAIN: MOV R0,#39H ;显示缓冲区初始化
MAIN_0: MOV @R0,#0
INC R0
CJNE R0,#40H,MAIN_0
MOV XSTAT,#01
MOV YSTAT,#01
MOV SM_OUT,#11H
MOV TMOD,#01H
MOV IE,#10000010B
MOV TH0,#0ECH;10ms:EC78H
MOV TL0,#78H
SETB TR0
MAIN_1: ACALL CONT ;主程序循环
ACALL KEY_0
SJMP MAIN_1
;
CONT: MOV 3FH,SM_OUT
LCALL DISP ;控制显示程序
RET
;
KEY_0: LCALL TKB ;有键?
JNZ KEY_1
CLR XW ;清标志
CLR YW
RET ;无键返回
KEY_1: LCALL KEYB
JZ KEY_0 ;=0
CJNE A,#0AH,KEY_2
KEY_2: JNC KEY_0 ;>9
CJNE A,#1,KEY_3
SJMP KEYB_1
KEY_3: CJNE A,#2,KEY_4
SJMP KEYB_2
KEY_4: CJNE A,#3,KEY_5
SJMP KEYB_3
KEY_5: CJNE A,#4,KEY_6
SJMP KEYB_4
KEY_6: CJNE A,#5,KEY_7
RET
KEY_7: CJNE A,#6,KEY_8
SJMP KEYB_6
KEY_8: CJNE A,#7,KEY_9
SJMP KEYB_7
KEY_9: CJNE A,#8,KEY_A
SJMP KEYB_8
KEY_A: SJMP KEYB_9
KEYB_1: SETB XW
CLR XP
SETB YW
SETB YP
RET
KEYB_2: CLR XW
SETB YW
SETB YP
RET
KEYB_3: SETB XW
CLR XP
SETB YW
SETB YP
RET
KEYB_4: SETB XW
SETB XP
CLR YW
RET
KEYB_6: SETB XW
CLR XP
CLR YW
RET
KEYB_7: SETB XW
CLR XP
SETB YW
CLR YP
RET
KEYB_8: CLR XW
SETB YW
CLR YP
RET
KEYB_9: SETB XW
CLR XP
SETB YW
CLR YP
RET
;
;定时器0中断服务程序
TINT0: MOV TH0,#0ECH
MOV TL0,#78H
PUSH ACC ;保护现场
PUSH PSW
PUSH 01H
INC TCER
MOV A,TCER
CJNE A,#50,TINT0R
MOV TCER,#0
JNB XW,TINT_1
ACALL XPD
TINT_1: JNB YW,TINT0R
ACALL YPD
TINT0R: MOV P1,SM_OUT ;输出到P1口
POP 01H ;恢复现场
POP PSW
POP ACC
RETI
;步进电机驱动处理
XPD: CLR 01H ; 01H=0为X轴
MOV R1,#XSTAT
MOV C,XP
AJMP PPD
YPD: SETB 01H ; 01H=1为Y轴
MOV R1,#YSTAT
MOV C,YP
PPD: JC PPD2
INC @R1
CJNE @R1,#07H,PPD3
MOV @R1,#1
AJMP PPD3
PPD2: DEC @R1
CJNE @R1,#00H,PPD3
MOV @R1,#06
PPD3: MOV A,@R1
ADD A,#1
MOVC A,@A+PC
AJMP PPD5
SM_TAB: DB 33H,11H,55H
DB 44H,66H,22H
PPD5: JB 01H,PPD6
ANL A,#0FH ;X轴低4位新值
ANL SM_OUT,#0F0H ;Y保持
ORL SM_OUT,A
RET
PPD6: ANL A,#0F0H ;Y轴高4位新值
ANL SM_OUT,#0FH ;X保持
ORL SM_OUT,A
RET
;
四.实验报告
1.写出本程序调试过程和运行结果.
2.如按某键运动,而用5作停止,如何修改?