• 利记SBO

    

    步进电机

    步进驱动器
    电话:0755-29030191
    当前位置:首页>>新闻中心>>行业新闻
    新闻中心
    产品中心
    利记SBO

    深圳市利记SBO伺服控制技术有限公司

    电话:0755-29030191

    邮箱:983847136@qq.com

    地址:深圳市龙华区东环一路天汇大厦D栋306房

    步进电机控制之一:查询实现正反转控制


    步进电机控制之一:查询实现正反转控制

    步进电机控制之一:查询实现正反转控制

    /*设计思路:采用按键对标志位flag1、flag2的

    奇偶性判断不同的键值含义,按键要加松手检测

    功能,否则会执行多次无法区别其状态;步进电

    机采用四相四拍的工作方式;Proteus不支持八拍

    工作模式,该程序在Keil5下运行,低版本需修改

    头文件为:#include*/

    #include

    #define uint unsigned int

    #define uchar unsigned char

    uchar code num[]={0x01,0x02,0x04,0x08};

    sbit k1=P2^0;//启停控制

    sbit k2=P2^2;//正反转控制

    bit flag1,flag2;

    void delay_ms(uint z);

    bit k1_scan();

    bit k2_scan();

    void motorzz();

    void motorfz();

    void motorstop();

    void main()

    {

    while(1)

    {

    if(k1_scan()==0)

    motorstop();

    else if(k2_scan()==0)

    motorzz();

    else

    motorfz();

    }

    }

    void delay_ms(uint z)

    {

    uchar i;

    while(z--)

    for(i=0;i<120;i++);

    }

    bit k1_scan()

    {

    if(k1==0)

    {

    delay_ms(5);

    if(k1==0)

    {

    flag1=~flag1;

    while(!k1);

    }

    }

    return flag1;

    }

    bit k2_scan()

    {

    if(k2==0)

    {

    delay_ms(5);

    if(k2==0)

    {

    flag2=~flag2;

    while(!k2);

    }

    }

    return flag2;

    }

    void motorstop()

    {

    P0=0X00;

    }

    void motorzz()

    {

    uchar i;

    for(i=0;i<4;i++)

    {

    P0=num[i];

    delay_ms(20);

    }

    }

    void motorfz()

    {

    char i;

    /*注意:此处定义为有符号字符型,如果定义为

    无符号字符型,i=0,i-1=255,i=255,for循

    环依旧成立,而num[255]是一个未知数*/

    for(i=3;i>=0;i--)

    {

    P0=num[i];

    delay_ms(20);

    }

    }

    /*以上motorfz()函数又等价于

    void motorfz()

    {

      uchar i;

      for(i=4;i>0;i--)

      {

    P0=num[i-1];

    delay_ms(20);   

      }

    }

    */

     


        产品推荐:两相步进电机



        产品推荐:无刷电机



        产品推荐:两相步进驱动器



        产品推荐:直流无刷驱动器