4350|5

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

步进电机如想设成一步一步反转,程序应怎样修改 [复制链接]

用89C51控制2相步进电机,按一次仿真器按键"运行",电机反向进两步,按6次就转360度,如想设成转动一步,程序应怎样修改?
请连接到这个网址http://bbs.21ic.com/upfiles/img/20079/200791111853101.jpg
可以看到电路接线图和2相时序图

loop:

mov p0,#0f9h
call delay

mov p0,#0fCh
call delay


mov p0,#0f6h
call delay


mov p0,#0f3h
call delay

;----------------------------------------------
mov p0,#0f3h
call delay

mov p0,#0f6h
call delay


mov p0,#0fCh
call delay


mov p0,#0f9h
call delay



ajmp loop

DELAY: MOV R7,#100
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET

end

最新回复

上上一楼主说程序没办法看出你的控制细节,本人修改了程序,现在按照同样的电路原理图 http://bbs.21ic.com/upfiles/img/20079/200791111853101.jpg 在89C51 P2.1  端接按键脚,另一端接地. 按键名为CCW         P2.0  端接按键脚,另一脚接地,按键名为CW 此程序的功能为按一下CW开关,马达顺时针转60度,按一下CCW开关,则反时钟循环60度 本程序使用20H.0与20H.1存放CW与CCW两开关新输入的数据,而使用21H.0与21H.1存放旧数据,用于检查是 否有按键. ACTION子程序的前半部做正转控制,后半部则做反转控制.程序首先检查21H.0,若21H.0=0,则表示已按正转 开关,所以将R5的低4位取出左循环1位,并自P1输出.而若21H.1=0,则表示已按反转开关,所以将R5的低4位 取出右循环1位,并自P1输出. 步进马达数据表 输入    CCW      CW 新      20H.1    20H.0 旧      21H.1    21H.0 本人从仿真器调试过程序,当按下CCW键,步进电机反转一步,再按CW电机正转一步,但本人重复按正转或反 按键,电动机都是向前向后原地踏步,请大家给点指示,我应怎样修改程序,我想按正转或反按键时电动机一 步一步转动,可以转360度 CW      EQU     P2.0      ;CW=0表示按下正转开关 CCW     EQU     P2.1      ;CCW=0表示按下反转开关 ;--------R5:    P1值暂存用--------------------- MAIN:   MOV     R5,#0FEH  ;设置R5的初值         MOV     20H,#00H  ;设置地址20H的初值         MOV     31H,#00H  ;设置地址21H的初值 CHEKSW: ACALL   SWIN      ;输入按键值至20H         MOV     A,20H     ;检查键值至20H         XRL     A,21H     ;         JZ      CHEKSW    ;若无键被按,则跳回CHEKSW         ACALL   DELAY     ;等待抖动时间         ACALL   SWIN      ;再输入按键值至20H         MOV     A,20H     ;检查键值是否改变         XRL     A,21H         JZ      CHEKSW    ;若无按键,则跳回CHEKSW         MOV     21H,20H   ;更新旧数据         ACALL   ACTION    ;调用主控制子程序:ACTION         SJMP    CHEKSW ;--------------输入按键值子程序:SWIN-------------------- SWIN:   MOV     C,CW      ;CW为正转开关         MOV     20H.0,C         MOV     C,CCW     ;CCW为反转开关         MOV     20H.1,C         RET ;-------------主控制子程序ACTION--------------------------- ACTION: JB      21H.0,REVERSE     ;若未按CW开关,则至REVERSE FORWARD:MOV     A,R5              ;取出R5的低4位左循环1位         RL      A         JB      ACC.4,SKIP1         MOV     A,#0FEH SKIP1:  MOV     R5,A         MOV     P0,A         SJMP    RETURN REVERSE:JB      21H.1,RETURN     ;若未按CCW开关,则至RETURN         MOV     A,R5             ;取出R5的低4位右循环1位         RR      A                ;并自P1输出         JB      ACC.7,SKIP2         MOV     A,#0F7H SKIP2:  MOV     R5,A         MOV     P0,A RETURN: RET DELAY:  MOV     R0,#00H XL2:    MOV     R1,#00H DL1:    NOP         DJNZ   R1,DL1         DJNZ   R0,XL2         RET         END   详情 回复 发表于 2007-9-7 17:46
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
从程序看是个死循环,应该不停的运行,怎么会只走两步呢?
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你给出的程序没办法看出你的控制细节
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个程序似乎是正转反转先后进行吧
LZ你实验过自己的程序吗?

电机应该是一个脉冲一步吧(过的时间太久了,记不太清了)
这里连续给了6个脉冲
而且前3后3是相反的

另外LOOP是怎么启动的
调用几次
对结果影响都很大
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个程序试用过是步进电机反向循环转动,转6步为1周
你连接到这个网址http://bbs.21ic.com/upfiles/img/20079/200791111853101.jpg
就知道脉冲的时序。
上一楼主说的
“LOOP是怎么启动的
调用几次
对结果影响都很大”
你可以讲清楚吗?程序怎样更改?
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

6
 
上上一楼主说程序没办法看出你的控制细节,本人修改了程序,现在按照同样的电路原理图

http://bbs.21ic.com/upfiles/img/20079/200791111853101.jpg

在89C51 P2.1  端接按键脚,另一端接地. 按键名为CCW
        P2.0  端接按键脚,另一脚接地,按键名为CW

此程序的功能为按一下CW开关,马达顺时针转60度,按一下CCW开关,则反时钟循环60度

本程序使用20H.0与20H.1存放CW与CCW两开关新输入的数据,而使用21H.0与21H.1存放旧数据,用于检查是

否有按键.

ACTION子程序的前半部做正转控制,后半部则做反转控制.程序首先检查21H.0,若21H.0=0,则表示已按正转

开关,所以将R5的低4位取出左循环1位,并自P1输出.而若21H.1=0,则表示已按反转开关,所以将R5的低4位

取出右循环1位,并自P1输出.

步进马达数据表
输入    CCW      CW
新      20H.1    20H.0
旧      21H.1    21H.0

本人从仿真器调试过程序,当按下CCW键,步进电机反转一步,再按CW电机正转一步,但本人重复按正转或反

按键,电动机都是向前向后原地踏步,请大家给点指示,我应怎样修改程序,我想按正转或反按键时电动机一

步一步转动,可以转360度

CW      EQU     P2.0      ;CW=0表示按下正转开关
CCW     EQU     P2.1      ;CCW=0表示按下反转开关
;--------R5:    P1值暂存用---------------------
MAIN:   MOV     R5,#0FEH  ;设置R5的初值
        MOV     20H,#00H  ;设置地址20H的初值
        MOV     31H,#00H  ;设置地址21H的初值
CHEKSW: ACALL   SWIN      ;输入按键值至20H
        MOV     A,20H     ;检查键值至20H
        XRL     A,21H     ;
        JZ      CHEKSW    ;若无键被按,则跳回CHEKSW
        ACALL   DELAY     ;等待抖动时间
        ACALL   SWIN      ;再输入按键值至20H
        MOV     A,20H     ;检查键值是否改变
        XRL     A,21H
        JZ      CHEKSW    ;若无按键,则跳回CHEKSW
        MOV     21H,20H   ;更新旧数据
        ACALL   ACTION    ;调用主控制子程序:ACTION
        SJMP    CHEKSW
;--------------输入按键值子程序:SWIN--------------------
SWIN:   MOV     C,CW      ;CW为正转开关
        MOV     20H.0,C
        MOV     C,CCW     ;CCW为反转开关
        MOV     20H.1,C
        RET
;-------------主控制子程序ACTION---------------------------
ACTION: JB      21H.0,REVERSE     ;若未按CW开关,则至REVERSE
FORWARD:MOV     A,R5              ;取出R5的低4位左循环1位
        RL      A
        JB      ACC.4,SKIP1
        MOV     A,#0FEH
SKIP1:  MOV     R5,A
        MOV     P0,A
        SJMP    RETURN
REVERSE:JB      21H.1,RETURN     ;若未按CCW开关,则至RETURN
        MOV     A,R5             ;取出R5的低4位右循环1位
        RR      A                ;并自P1输出
        JB      ACC.7,SKIP2
        MOV     A,#0F7H
SKIP2:  MOV     R5,A
        MOV     P0,A
RETURN: RET
DELAY:  MOV     R0,#00H
XL2:    MOV     R1,#00H
DL1:    NOP
        DJNZ   R1,DL1
        DJNZ   R0,XL2
        RET
        END
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表