康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
楼主  发表于: 2016-03-04 10:53
大家好,小弟用51单片机想控制步进电机正转和反转,但是现在只能够实现正转,反转无法实现。下面是正转程序(只能够是向一个方向运动):
#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit zmc=P1^0;
sbit fmc=P1^1;
sbit zfx=P1^2;
sbit ffx=P1^3;
void delayws(uchar);
void main()
{
    uchar i,a;
    for(a=1000;a>0;a--)
    {
        for(i=1000;i>0;i--)
        {
            zfx=1;
            ffx=0;
            zmc=1;
            fmc=0;
            zmc=0;        
        }
    }
    while(1)
    {
        zfx=0;
        ffx=0;
        zmc=0;
        fmc=0;
    }
}
接线图如下,采用的是差分接线办法。
我尝试过单独修改zfx=0;ffx=1,但是依旧不会改变方向,还是会向下运动;
尝试过单独修改fmc=1;zmc=0;fmc=0;这样修改,这次步进电机就不运动了。我若想通过程序实现步进电机能够反向运动,程序应该怎么修改?谢谢大家
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
1楼  发表于: 2016-03-04 15:45
引用
引用第1楼tingfenghu于2016-03-04 12:20发表的  :
        很久没有写过单片机程序呢。脉冲口输出好像用中断方式,你可以先输出方向,使能,然后再输出脉冲,看上面说明并不是差分方式。
      确定哪个P口是脉冲输出,方向,使能。使能输出不用改变,或者说你直接接线而不用单片机控制也可以,主要是脉冲输出和方向。

对呀,有三种接线方式,我选择的差分方式。现在只能够实现单向运动。。。
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
2楼  发表于: 2016-03-04 16:51
自己顶一下,求帮忙.....
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
3楼  发表于: 2016-03-05 10:42
引用
引用第4楼hdkcxym于2016-03-04 20:34发表的  :
呵呵,要用定时中断来改变脉冲I/O的,判断方向也要写在中断里。写的还好,建议搜一下

好的,谢谢