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--);
    }
  • 相关阅读:
    【WPF】WPF Behavior 行为 实现鼠标移入按钮自动旋转
    cgo遇到的几个坑
    工程师什么时机最合适选择跳槽?
    在 ASP.NET Core 中自动启用 CAP 事务
    轻量级压力测试工具http_load
    纯C语言AES-128(可修改)-ECB模式加密-zero模式
    内存字符串暴力搜索定位代码
    windbg配置网络版双机调试
    安装docker compose
    linux安装基础软件包
  • 原文地址:https://www.cnblogs.com/toosuo/p/2370236.html
Copyright © 2011-2022 走看看