康小印
级别: 探索解密
精华主题: 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;这样修改,这次步进电机就不运动了。我若想通过程序实现步进电机能够反向运动,程序应该怎么修改?谢谢大家
hdkcxym
行者无疆勇者无畏
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 103 点
下载积分: 433 分
在线时间: 51(小时)
注册时间: 2014-11-22
最后登录: 2019-04-14
查看hdkcxym的 主题 / 回贴
1楼  发表于: 2016-03-04 20:34
呵呵,要用定时中断来改变脉冲I/O的,判断方向也要写在中断里。写的还好,建议搜一下