单片机课程设计--步进电机角度控制
考试序列号 18
课 程 设 计
论文题目:步进电机角度控制(2)
课程名称:计算机控制技术 学 院 自动化学院 专业班级 学 号 8 姓 名 指导教师
2013 年 06 月 25 日
一、 目的:
1. 巩固和加深对《计算机控制技术》课程内容的认识和理解,提高应用水平。 2. 熟悉键盘控制和七段数码管的使用。 3. 掌握直流电机的速度控制和测试方法。 二、 课程设计内容
1. 在显示器上显示任意四位十进制数。 2. 将8个键定义键值为0~7,按任意键在显示器上显示对应键值。 3. 实现:
(1) 定义键盘按键:5个数字键;3个功
能键:设置SET、清零CLR、开始START;
(2) 显示器上第一位显示次数,后三位
显示每次行走的角度;
(3) 通过键盘的按键,设置步进电机各次的角度值;按动SET键后,开始设置:第一位设置次数,后三位设置角度值,再按动SET置入;可连续置入的角度。 (4) 按START键启动步进电机开始转
动,到位后停止;按CLR键清零步进电机回原位。
4. 电路框图(参见任务书)。 三、 任务要求
1. 设置键盘为下图所示:
2. 要求实现以下功能:
(1) 键入4(次数)270(角度值)键入SET设置完毕,键入START步进电机转动270度4次;停止后键入CLR返回零位;每个过程都必须有相关的显示。 (2) 键入7(次数)45(角度值)键入SET设置完毕,键入START步进电机转动45度7次;停止后键入CLR返回零位;每个过程都必须有相关的显示。
四、 程序代码 实验一:
按键设置为 0 1 7 8 E F A B
2 4 5 7 CLR SET START 0
程序:
ORG 0000H LJMP MAIN ORG 0100H
MAIN:
MOV 50H,#00H MOV 51H,#00H MOV 52H,#00H MOV 53H,#00H
MOV
R5,#53H ;------------------------------------------- BEGIN: MOV DPTR,#7F03H MOV A,#81H MOVX @DPTR,A ;-------------------------------------------
MOV DPTR,#7F00H MOV A,#00H MOVX @DPTR,A MOV DPTR,#7F02H MOV A,@DPTR ANL A,#03H CJNE A,#03H,INK1 ACALL DIS AJMP BEGIN INK1:
ACALL DL1MS
MOV DPTR,#7F02H MOVX A,@DPTR ANL A,#03H
CJNE A,#03H,INK2 INK2:
MOV DPTR,#7F00H MOV A,#0FEH MOVX @DPTR,A MOV DPTR,#7F02H MOVX A,@DPTR JNB ACC.1,KEY0 JNB ACC.0,KEYD AJMP BEGIN ;-------------------------------------------
MOV DPTR,#7F00H MOV A,#0FDH MOVX @DPTR,A MOV DPTR,#7F02H MOV A,@DPTR
JNB
ACC.1,KEY1
JNB ACC.0,KEYF MOV DPTR,#7F00H MOV A,#0FBH MOVX @DPTR,A MOV DPTR,#7F02H MOV A,@DPTR JNB ACC.1,KEY7 JNB ACC.0,KEYA MOV DPTR,#7F00H MOV A,#0FBH MOVX @DPTR,A MOV DPTR,#7F02H MOVX A,@DPTR JNB ACC.1,KEY8
JNB ACC.0,KEYB ;------------------------------------------- KEY0: MOV DPTR,#7F00H MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEY1:
MOV DPTR,#7F01H MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEY7:
MOV DPTR,#7F07H MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEY8:
MOV DPTR,#7F08H MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEYA:
MOV DPTR,#7F0AH MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF
ACALL DIS AJMP STTK KEYB:
MOV DPTR,#7F0BH MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEYE:
MOV DPTR,#7F0EH MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS AJMP STTK KEYF:
MOV DPTR,#7F0FH MOV A,#00H MOVX
@DPTR,A
ACALL PUTBUF ACALL DIS
AJMP
STTK
;------------------------------------------- PUTBUF: PUSH 00H PUSH ACC MOV A,R5 MOV R0,A POP ACC MOV @R0,A
DEC R5 CJNE R5,#4FH,GOBACK MOV R5,#53H GOBACK:
POP 00H RET DIS:
PUSH ACC PUSH 00H PUSH 03H PUSH DPH PUSH DPL MOV R0,#50H MOV R3,#F7H AA2:
MOV A,@R0 MOV DPTR,#AA1
MOVC
A,@A+DPTR
MOV MOVX MOV MOVX MOV JNB RR MOV INC AJMP POP POP POP POP POP RET DB DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,77H,7CH,39H,5EH,79H,71H R7,#01H R6,#0FFH R6,DL1 R7,DL0 DPTR,#7F01H @DPTR,A DPTR,#7F02H @DPTR,R3 A,R3 ACC.0,AA3 A R3,A R0 AA2 DPL DPH 03H 00H ACC
ACALL DL1MS
AA3:
AA1:
;------------------------------------------- DL1MS: MOV DL0: DL1:
MOV DJNZ DJNZ RET
ACALL DIS MOV MOV MOVX MOV MOV CJNE AJMP END
DPTR,#7F00H A,#00H @DPTR,A DPTR,#7F02H A,@DPTR A,#03H,STTK BEGIN
;------------------------------------------- STTK:
ANL A,#03H
;-----------------------------------------------------------------------------------------------------------------------------------------
实验二: 程序:
ORG 0000H LJMP
MAIN
ORG 0100H
MAIN:
MOV MOV MOV MOV 50H,#00H ;角度个位 51H,#00H 52H,#00H 53H,#00H ;角度十位 ;角度百位 ;转次数 MOV 54H,#00H ;START标志位
MOV 55H,#00H ;CLR标志位
MOV 56H,#00H
MOV 57H,#00H ;正反转标志位 MOV 58H,#01H ;前后4拍标志位 MOV 59H,#00H
;存放转的步数 MOV 60H,#00H ;角度个位 MOV 61H,#00H ;角度十位 MOV 62H,#00H ;角度百位
MOV
63H,#00H
;转次数 MOV DPTR,#7F03H MOV A,#81H
MOVX @DPTR,A
BEGIN: MOV
DPTR,#7F00H ;键盘检测
MOV
A,#00H MOVX @DPTR,A MOV
DPTR,#7F02H MOVX A,@DPTR ANL A,#03H CJNE A,#03H,INK1
MOV
A,54H ;电机运动及正反转判断 CJNE A,#01H,TEST1
;START=0跳
MOV A,55H
CJNE A,#01H ,ZHENG ;CLR=0跳 AJMP NT ;跳去显示 TEST1: MOV
A,55H ;START=0
CJNE
A,#01H,NT
;START=0,CLR=0跳去显示
FAN: MOV
57H,#00H ;给个反转标志 LCALL BJF
AJMP BEGIN ZHENG: MOV
57H,#01H
;给个正传标志
ACALL BJZ NT: ACALL DIS
AJMP
BEGIN INK1: ACALL DL1MS
MOV DPTR,#7F02H MOVX A,@DPTR
ANL A,#03H CJNE A,#03H,INK2
AJMP
BEGIN
INK2:
MOV MOV MOV DPTR,#7F00H A,#0FEH DPTR,#7F02H MOVX @DPTR,A MOVX A,@DPTR
JNB JNB MOV MOV
MOVX MOV
MOVX JNB JNB MOV MOV
MOVX MOV
MOVX JNB JNB MOV MOV
MOVX MOV
MOVX JNB JNB
LJMP
KEYCLR: MOV
LJMP KEYSTART:
MOV LJMP KEYSET: MOV MOV MOV MOV MOV MOV MOV
MOV LJMP KEY0: MOV
ACC.1,KEY2
ACC.0,KEYCLR
DPTR,#7F00H A,#0FDH @DPTR,A DPTR,#7F02H A,@DPTR ACC.1,KEY4
ACC.0,KEYSET
DPTR,#7F00H A,#0FBH @DPTR,A DPTR,#7F02H A,@DPTR ACC.1,KEY5
ACC.0,KEYSTART
DPTR,#7F00H A,#0F7H @DPTR,A DPTR,#7F02H A,@DPTR ACC.1,KEY7
ACC.0,KEY0
STTK 54H,#00H STTK 54H,#01H STTK
60H,50H
61H,51H 62H,52H 63H,53H 50H,#00H
51H,#00H 52H,#00H 53H,#00H
STTK A,#00H
ACALL PUTBUF ACALL DIS LJMP
STTK KEY2: MOV
A,#02H
ACALL PUTBUF ACALL DIS LJMP
STTK KEY4: MOV
A,#04H
ACALL PUTBUF ACALL DIS LJMP
STTK KEY5: MOV
A,#05H
ACALL PUTBUF ACALL DIS LJMP
STTK KEY7: MOV
A,#07H
ACALL PUTBUF ACALL DIS LJMP STTK
PUTBUF:
PUSH
00H PUSH ACC MOV R1,#3 MOV R0,#52H PUTBUF0:MOV
A,@R0 INC R0 MOV @R0,A DEC R0 DEC R0
DJNZ R1,PUTBUF0 POP ACC MOV 50H,A POP
00H
RET DIS:
PUSH ACC PUSH 00H PUSH
03H MOV R0,#50H MOV R3,#0F7H AA2:
MOV A,@R0 MOV DPTR,#A1 MOVC A,@A+DPTR MOV DPTR,#7F01H MOVX @DPTR,A
MOV
DPTR,#7F00H
MOV
A,R3
MOVX @DPTR,A ACALL DL1MS MOV JNB RR MOV INC AJMP AA3:
POP POP POP RET
STTK:
ACALL MOV
MOV
MOVX MOV
MOVX ANL CJNE AJMP A1:
DB
DB DL1MS: MOV DL0: MOV DL1:
DJNZ DJNZ RET BJZ:
MOV
ACALL MOV MOV MOV MOV MOV MOV MOV MOV MOV ACALL MOV
MOV
RET
A,R3 ACC.0,AA3
A R3,A R0 AA2 03H
00H ACC
DIS
DPTR,#7F00H A,#00H @DPTR,A DPTR,#7F02H A,@DPTR A,#03H A,#03H,STTK BEGIN
3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,77H,7CH,39H,5EH,79H,71H R7,#02H R6,#0FFH R6,DL1 R7,DL0 57H,#01H
;正转标志
BJ1
40H,50H 41H,51H 42H,52H 43H,53H 50H,60H
51H,61H 52H,62H 53H,63H 57H,#01H ;正转标志
BJ1
54H,#01H 55H,#01H
BJF: MOV
57H,#00H
;反转标志
ACALL BJ1
MOV 60H,#00H MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 50H,40H MOV 51H,41H MOV 52H,42H MOV
MOV
ACALL MOV MOV MOV MOV MOV MOV RET BJ1:
PUSH
MOV MOV MOV CLR MUL MOV MOV MOV ADD MOV CLR MUL MOV ADD MOV CLR DIV ADD MOV
MOV
MOV MOV
CJNE MOV
53H,43H 57H,#00H
;反转标志
BJ1 50H,#00H 51H,#00H 52H,#00H 53H,#00H
54H,#00H 55H,#00H 03H ;转动角数据处理 R0,#52H
;百位
A,@R0 B,#6H
;100=15*6+10 C AB R1,A
;n次15的一个分量 R0,#51H
;十位
A,@R0 A,52H B,#0AH C AB R0,#50H ;个位
A,@R0
;将个位和十位和陈一个数B,#0FH C AB A,R1 ;要转A次15 59H,A
R0,53H
56H,53H A,R0 A,#00H,AAA4 54H,#00H
MOV AJMP AAA4: MOV AAA3: AAA2:
MOV MOV CJNE CJNE 55H,#00H BACK R5,53H R1,59H A,57H A,#01H,FZ A,#01H,ZX
;看标志位是走前4拍还是后4拍
58=1,走ZS
;转R1次*15
R0,#04H ;步距4拍
MOV
MOV A,58H
MOV CPL MOV AJMP ZX:
MOV CPL MOV AJMP FZ: MOV CJNE MOV CPL MOV AJMP FX:
MOV CPL MOV AAA1:
MOV MOVC MOV ACALL INC PUSH PUSH DEC MOV ACALL INC POP POP DJNZ DJNZ ACALL DJNZ
MOV
DPTR,#L1
A
58H,A
AAA1 DPTR,#L2
A 58H,A AAA1
A,58H
A,#01H,FX DPTR,#L3
A
58H,A
AAA1 DPTR,#L4 A 58H,A A,#00H A,@A+DPTR P1,A DL1M
DPTR
DPH
DPL R5 53H,R5 DIS
R5 DPL
DPH R0,AAA1 R1,AAA2 DL2MS
R5,AAA3 53H,56H
;前4拍
;标志位区反 ;后4拍
看标志位是走前4拍还是后4拍
;前4拍
;标志位区反 ;后4拍
58=1,走ZS
;
BACK: POP
RET L1: L2: L3: L4: DL1M: DL2: DL3:
DL4: DL5:
DB DB DB DB MOV MOV DJNZ RET
R7,#0FFH R6,#0FFH R6,DL5 R7,DL4
MOV DJNZ RET END
01H,03H,02H,06H 04H,0CH,08H,09H 09H,08H,0CH,04H 06H,02H,03H,01H R7,#05H R6,#0FFH R6,DL3 R7,DL2
03H
DJNZ DL2MS: MOV
DJNZ
设计流程图 开始
8255初始化 检测是否有 N 按键按下 Y 检测是否有 转动电位 SET键按下 Y 器调角度 N 检测START Y 根据保存的 N 检测C键
键是否按下 数据依次转 是否按下 动步进电机
N Y 检测CLR N 保存所调的 键是否按下 角度数据 Y 根据保存的 数据依次反 转步进电机
因篇幅问题不能全部显示,请点此查看更多更全内容