康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
楼主  发表于: 2016-03-05 10:46
下面是我写的步进电机程序。我细分装置设置的是4000,下面应该会有3200个脉冲,也就是会旋转0.8周,实际运行后并没有0.8周这么多;后来我将程序两个循环a>=0,和i>=0;发现电机运动停不下来,我想知道是怎么回事?谢谢
#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 delay5ws(uchar);
void main()
{

    uint i,a;
    i=0;
    a=0;
    zmc=0;
    fmc=0;
    zfx=0;
    ffx=0;
    delay5ws(5);
    zfx=1;
    for(a=80;a>0;a--)
    {
        for(i=40;i>0;i--)
        {
            
//            delay5ws(5);
            zmc=1;
//            delay5ws(2);
            zmc=0;
        }

    }
    while(1)
    {
        zmc=0;
        fmc=0;
        zfx=0;
        ffx=0;
    }
}
void delay5ws(uchar n)
{
    uint l,m;
    for(l=n;l>0;l--)
        for(m=2;m>0;m--);
}
wwusq
级别: 略有小成
精华主题: 0
发帖数量: 77 个
工控威望: 224 点
下载积分: 8017 分
在线时间: 81(小时)
注册时间: 2008-01-04
最后登录: 2024-11-11
查看wwusq的 主题 / 回贴
1楼  发表于: 2016-03-05 16:38
细分4000,转一圈应该脉冲数该是80000,0.8全就是64000个脉冲