zoukankan      html  css  js  c++  java
  • 两相四线步进电机驱动代码

    #include<reg52.h>
    #define uint unsigned int
    #define uchar unsigned char

    sbit a0=P0^0;
    sbit a1=P0^1;
    sbit b0=P0^2;
    sbit b1=P0^3;
    sbit en0=P1^0;  //使能1
    sbit en1=P1^1//使能2

    const uint eighttb[8][4]={{0,1,1,0},{0,1,0,0},{0,1,0,1},{0,0,0,1},{1,0,0,1},{1,0,0,0},{1,0,1,0},{0,0,1,0}};
    const uint fourtb[4][4]={{0,1,1,0},{0,1,0,1},{1,0,0,1},{1,0,1,0}};

    void Delay(uint z);
    void FullStep(uint count,uint dy,uchar anti);
    void OneHalfStep(uint count,uint dy,uchar anti);

    void main()
    {
        uint n=2000;

        for(n;n>0;n--)
        {
            en0=1;
            en1=1;
            FullStep(4,15,0);
            en0=0;
            en1=0;
            Delay(1000);
        }
        while(1);
    }

    void OneHalfStep(uint count,uint dy,uchar anti)     //count为脉冲数,dy为延时时间,anti为0正转非0反转
    {
        uchar i,j;
        i = count;
        for(i;i>0;i--)
        {
            for(j=0;j<8;j++)
            {
                if(anti == 0)
                {
                    a0 = eighttb[j][0];
                    a1 = eighttb[j][1];
                    b0 = eighttb[j][2];
                    b1 = eighttb[j][3];
                }else{
                    a0 = eighttb[7-j][0];
                    a1 = eighttb[7-j][1];
                    b0 = eighttb[7-j][2];
                    b1 = eighttb[7-j][3];
                }
                Delay(dy);
            }    
        }
        P0=0x00;
    }

    void FullStep(uint count,uint dy,uchar anti)   //count为脉冲数,dy为延时时间,anti为0正转非0反转
    {
        uchar i,j;
        i = count;
        for(i;i>0;i--)
        {
            for(j=0;j<4;j++)
            {
                if(anti == 0)
                {
                    a0 = fourtb[j][0];
                    a1 = fourtb[j][1];
                    b0 = fourtb[j][2];
                    b1 = fourtb[j][3];
                }else{
                    a0 = fourtb[3-j][0];
                    a1 = fourtb[3-j][1];
                    b0 = fourtb[3-j][2];
                    b1 = fourtb[3-j][3];
                }
                Delay(dy);
            }    
        }
        P0=0x00;
    }

    void Delay(uint z) //延时函数
    {
     uint x,y;
     for(x=z;x>0;x--)
      for(y=114;y>0;y--);
    }
  • 相关阅读:
    QT小技巧
    C#通用类库设置开机自运行禁用任务管理器注册表等操作
    C#通用类库农历类(很全面)
    C#通用类库导出数据(比其他方式快200倍)
    如果你想当程序员!请看!
    C#通用类库汉字转拼音
    C#通用类库加密解密类
    C#制作图片压缩工具
    QT编写图片数据转换工具
    C++面试题 virtual
  • 原文地址:https://www.cnblogs.com/toosuo/p/2370236.html
Copyright © 2011-2022 走看看