• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

有51单片机连a4988的例程吗?

STM64 2018-10-12 浏览量:1715
有51单片机连a4988的例程吗?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • EN脚置零,DIR脚控制方向,给STEP送脉冲,100Hz左右,就可以了

    具体方法其实和arduino一样的

    • 发布于 2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:14
  • 参考arduino就可以,一个引脚设置方向,一个引脚用来输出高速脉冲,剩下的细分等可以不接,再接电源和步进电机就可以了。
    • 发布于2018-10-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以参考https://download.csdn.net/download/teshu2010/9103049
    • 发布于2018-10-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个步进电机要用一个驱动芯片才可以驱动的,单片机无法使用IO口驱动
    • 发布于2018-10-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以去参考下,A4988步进电机单片机驱动程序 ,51单片机A4988驱动源码,步进电机驱动A4988步进电机驱动程序编写 ,等资料
    • 发布于2018-10-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个就是一个普通的步进电机,参考51控制步进电机程序,或者Arduino有现成的可以参考下https://blog.csdn.net/ling3ye/article/details/47001251
    • 发布于2018-10-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种就上一个普通的电机驱动,一个引脚设置方向,一个发送PWM进行控制
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • A4988只需要两个脚,一个选择方向的,一个输出脉冲的,脉冲那个,在51上面可以通过定时器中断实现
    • 发布于2018-10-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个芯片通过一个引脚控制方向,一个发送脉冲就可以驱动
    • 发布于2018-10-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个用PWM去控制你的输出引脚,然后再控制你的电机驱动就可以
    • 发布于2018-10-30
    • 举报
    • 评论 0
    • 0
    • 0

  • a4988是通过pwm控制的,51可以发出pwm波来控制这个器件。
    • 发布于2018-10-31
    • 举报
    • 评论 0
    • 0
    • 0


  • #include <reg52.h>
    #include <intrins.h>

    #define FOSC 11059200L //晶振设置,默认使用11.0592M Hz
    //#define FOSC 12000000L //晶振设置,使用12M Hz
    //#define FOSC 24000000L //晶振设置,使用24M Hz

    #define TIME_MS 1 //设定定时时间 ms 在11.0592M晶振下,不易超过60ms





    //IO接口定义
    sbit pulse = P1^0;//脉冲信号
    sbit Dir   = P1^1; //正反转

    sbit EN    = P1^2;
    sbit MS1   = P1^3;
    sbit MS2   = P1^4;
    sbit MS3   = P1^5;



    sbit KEY1 = P2^0;  //启动
    sbit KEY2 = P2^1;  //停止
    sbit KEY3 = P2^2;  //正转
    sbit KEY4 = P2^3;  //反转


    //全局变量定义
    unsigned char count=0;

    /*******************************************************************************
    * 函 数 名 :Delayms
    * 函数功能 :实现 ms级的延时
    * 输    入 :ms
    * 输    出 :无
    *******************************************************************************/
    void Delayms(unsigned int ms)
    {
            unsigned int ij;
            for(i=0;i<ms;i++)
            #if FOSC == 11059200L
                    for(j=0;j<114;j++);
            #elif FOSC == 12000000L
              for(j=0;j<123;j++);
            #elif FOSC == 24000000L
                    for(j=0;j<249;j++);
            #else
                    for(j=0;j<114;j++);
            #endif
    }

    /*******************************************************************************
    * 函 数 名 :Timer0Init
    * 函数功能 :定时器0初始化
    * 输    入 :无
    * 输    出 :无
    *******************************************************************************/
    void Timer0Init()
    {
            TMOD=0x01; //设置定时器0工作方式为1
            TH0=(65536-FOSC/12/1000*TIME_MS)/256;
            TL0=(65536-FOSC/12/1000*TIME_MS)%256;
            ET0=1; //开启定时器0中断
    //        TR0=1;        //开启定时器        
            EA=1;  //打开总中断
    }


    /*******************************************************************************
    * 函 数 名 :main
    * 函数功能 :主函数
    * 输    入 :无
    * 输    出 :无
    *******************************************************************************/
    void main()
    {
            Timer0Init();
            EN=0;
            MS1=0;
            MS2=0;
            MS3=0;
            while(1)
            {
      if(KEY1==0)  //判断是否按下键盘
            {
                    Delayms(10); //延时软件去干扰
                    if(KEY1==0)   //确认按键按下
                    {
          TR0=1;
                    }
                    while(KEY1==0);//按键锁定每按一次count只加1.
            }
            if(KEY2==0)  //判断是否按下键盘
            {
                    Delayms(10); //延时软件去干扰
                    if(KEY2==0)   //确认按键按下
                    {
          TR0=0;
                    }
                    while(KEY2==0);//按键锁定每按一次count只加1.
            }        
            
            if(KEY3==0)  //判断是否按下键盘
            {
                    Delayms(10); //延时软件去干扰
                    if(KEY3==0)   //确认按键按下
                    {
          Dir=0;
                    }
                    while(KEY3==0);//按键锁定每按一次count只加1.
            }        
            
                    if(KEY4==0)  //判断是否按下键盘
            {
                    Delayms(10); //延时软件去干扰
                    if(KEY4==0)   //确认按键按下
                    {
          Dir=1;
                    }
                    while(KEY4==0);//按键锁定每按一次count只加1.
            }        
            
            
            }
    }
    • 发布于2018-11-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个芯片的驱动可以看看https://blog.csdn.net/asszz/article/details/79399681
    • 发布于2018-11-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般就是一个引脚控制方向,一个引脚用脉冲去控制运动
    • 发布于2018-11-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以参考雷赛的步进电机驱动器控制,方式是一样的
    • 发布于2018-11-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

有51单片机连a4988的例程吗?