找回密码
 立即注册
查看: 528|回复: 4

求大老帮写个代码,利用STC8g1k08-38i-tssop20与A4988做一个42步进电机驱动控制器

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-10-11 17:27:35
已绑定手机

1

主题

1

回帖

17

积分

新手上路

积分
17
发表于 2025-10-9 23:25:34 | 显示全部楼层 |阅读模式
利用STC8g1k08-38i-tssop20与A4988做一个42步进电机驱动控制器,有一个正转开关,一个反转开关,开关点动模式,一个电位器调速开关。在线等高手

下面这个代码只有正转和反转,没有调速,帮我加个调度也可以

#include <STC8G.H>
#include <intrins.h>

// 引脚定义(严格按需求分配)
sbit STEP     = P3^2;    // 第13脚:A4988 STEP
sbit DIR      = P3^3;    // 第14脚:A4988 DIR
sbit KEY_FWD  = P3^5;    // 第16脚:正转开关(低电平有效)
sbit KEY_REV  = P3^4;    // 第15脚:反转开关(低电平有效)

// 函数声明(修复:添加所有函数原型)
void Delay_us(unsigned int us);
void Delay_ms(unsigned int ms);
void GPIO_Init(void);

// 全局变量
unsigned int pulse_delay = 1000;  // 固定速度1000us(可调)

void main()
{
    // 初始化
    GPIO_Init();
    STEP = 0;
    DIR = 0;
   
    while(1)
    {
        // 点动控制逻辑
        if(KEY_FWD == 0)
        {
            DIR = 0;  // 正转方向
            do {
                STEP = 1;
                Delay_us(50);    // 50us脉冲宽度
                STEP = 0;
                Delay_us(pulse_delay);
            } while(KEY_FWD == 0);
        }
        else if(KEY_REV == 0)
        {
            DIR = 1;  // 反转方向
            do {
                STEP = 1;
                Delay_us(50);
                STEP = 0;
                Delay_us(pulse_delay);
            } while(KEY_REV == 0);
        }
        else
        {
            STEP = 0;  // 停止
            Delay_ms(10);
        }
    }
}

// GPIO初始化
void GPIO_Init(void)
{
    P3M0 = 0x00;  // P3口准双向模式
    P3M1 = 0x00;
    KEY_FWD = 1;  // 启用内部上拉
    KEY_REV = 1;
}

// 微秒延时函数(12MHz时钟优化)
void Delay_us(unsigned int us)
{
    while(us--)
    {
        _nop_(); _nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_(); _nop_();
    }
}

// 毫秒延时函数
void Delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for(i = ms; i > 0; i--)
        for(j = 1100; j > 0; j--);
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:361
  • 最近打卡:2026-03-26 08:46:35

844

主题

1万

回帖

2万

积分

管理员

积分
22719
发表于 2025-10-10 09:36:36 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-10-11 17:27:35
已绑定手机

1

主题

1

回帖

17

积分

新手上路

积分
17
发表于 2025-10-11 17:27:35 | 显示全部楼层
神*** 发表于 2025-10-10 09:36
51开源,步进电机驱动 程序, 直接驱动, 或驱动步进电机驱动器 一共8个程序 - 步进电机控制 国芯人工智能 ...

那个好像没调速度开关,
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:624
  • 最近打卡:2026-03-26 20:44:51

0

主题

37

回帖

2652

积分

金牌会员

积分
2652
发表于 2025-11-14 12:17:42 来自手机 | 显示全部楼层
WYP 发表于 2025-10-11 17:27
那个好像没调速度开关,

例程里有加减速
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2026-03-26 23:16:14
已绑定手机

15

主题

616

回帖

1577

积分

荣誉版主

积分
1577
发表于 2026-1-18 01:02:46 | 显示全部楼层
https://www.stcaimcu.com/thread-22154-1-1.html
我发的这个库正好适合你啊.超级简单,啥也不用关注,调用函数即可,速度模式,距离模式都支持,任意调速
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-27 12:31 , Processed in 0.109202 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表