xujibicool 发表于 2025-1-25 17:18:43

普中HC6800-EM3 V2.2+deepseek,UDN2916 2相4线步进电机

上传了普中资料到deepseek,不断的询问改进,下载验证,deepseek AI给出了优化版本,运行非常丝滑,人工智能还是杠杠的
/*************************************************************************************
*标题:步进电机试验四(采用2细分)                                                                                       *
*                                                                                                                                                                        *
*    通过本例程了解步进马达使用及驱动程序编写                                                                               *
*;   单相四拍通电驱动时序:                                                          *
*;   正转: A/BAB/                                                                                                                       *
*    反转: B/ABA/                                                                                              *
*                                                                                                                                                                   *
*    UDN2916电流控制真值表:                                                                                                               *
*          I0    I1      输出电流                                                                                                               *
*          L          L                  最大                                                                                                                       *
*          H                L                  最大*2/3                                                                                                               *
*          L                H                  最大*1/3                                                                                                               *
*   H   H         0                                                                   *
*   请学员一定要消化掉本例程                                                              *
*   注意:J14短路冒需断开                                                                                *
**************************************************************************************/
#include "reg52.h"

#define speed 38
//Motor
sbit PH1 = P1^0;          //定义管脚
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;
                                     
unsigned char TableA[] = { 0XF7,0XFB,0XF3};       //A线圈细分表
unsigned char TableB[] = { 0XeF,0XdF,0XcF};       //B线圈细分表

void delay(int time);

/***************************************
函数功能:产生单相四拍脉冲控制步进机 2细分
**************************************/
void Go()
{        char i ,temp;
   //A
    PH1 = 0;//PH1为0 则A线圈为反向电流
        for(i = 0; i<3; i++)
        {temp = P1;
           P1 = TableA;
           P1 = P1&temp;
           delay(1);
       }
       

        PH2 = 0;//PH2为0 则B线圈为反向电流
        I02 = 1;
        I12 = 1;   //输出0

        delay(speed);
        //0
        PH1 = 0;//PH1为0 则A线圈为反向电流
    I01 = 1;//输出0
        I11 = 1;
       

        PH2 = 1;//PH2为1 则B线圈为正电流
        for(i = 0; i<3; i++)
        {temp = P1;
           P1 = TableB;
           P1 = P1&temp;
           delay(1);
       }

        delay(speed);
        //B
        PH1 = 1;   //PH1为1 则A线圈为正向电流
        for(i = 0; i<3; i++)
        {temp = P1;
           P1 = TableA;
           P1 = P1&temp;
           delay(1);
       }

        PH2 = 1;//PH2为1 则B线圈为正向电流
        I02 = 1;//输出0
        I12 = 1;
                   ////
        delay(speed);
        //0
        PH1 = 1;   //PH1为1 则A线圈为正向电流
        I01 = 1;
        I11 = 1;
       

        PH2 = 0;   //PH2为0 则B线圈为反向电流
        for(i = 0; i<3; i++)
        {temp = P1;
           P1 = TableB;
           P1 = P1&temp;
           delay(1);
       }
        delay(speed);
               

       
}
/*******************延时函数****************************/
void delay(int time)
{
int i,j;

for(j=0; j <= time; j++)
   for(i =0 ; i <= 120; i++);
}


void main()
{

while(1)
{
   
    Go();//步进电机运行
       
}

}

/*************************************************************************************
*标题:步进电机试验四(采用4细分)                                                                                       *
*                                                                                                                                                                        *
*    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
*;   单相四拍通电驱动时序:                                                          *
*;   正转: A/BAB/                                                                                                                         *
*    反转: B/ABA/                                                                                              *
*                                                                                                                                                                     *
*    UDN2916电流控制真值表:                                                                                                               *
*          I0    I1      输出电流                                                                                                               *
*          L            L                  最大                                                                                                                         *
*          H                L                  最大*2/3                                                                                                               *
*          L                H                  最大*1/3                                                                                                               *
*   H   H         0                                                                     *
*   请学员一定要消化掉本例程                                                                  *
*   注意:J14短路冒需断开                                                                                    *
**************************************************************************************/
#include "reg52.h"

#define speed 38
#define MICRO_DELAY 10

sbit PH1 = P1^0;
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;

unsigned char A_I0_I1;
unsigned char B_I0_I1;

typedef struct {
    unsigned char PH1;
    unsigned char PH2;
    unsigned char I0_I1;
} SegStep;

// 顺时针旋转细分表(4细分)
SegStep SegTable[] = {
    {0, 0, 0x00 | (0x01 << 2)},// A反向,B反向,A=100%, B=67%
    {0, 1, 0x01 | (0x02 << 2)},// A反向,B正向,A=67%, B=33%
    {1, 1, 0x02 | (0x00 << 2)},// A正向,B正向,A=33%, B=100%
    {1, 0, 0x00 | (0x01 << 2)}   // A正向,B反向,A=100%, B=67%
};

void delay(int time) {
    int i, j;
    for (j = 0; j < time; j++)
      for (i = 0; i < 120; i++);
}

void Go() {
      int i;
    for (i = 0; i < sizeof(SegTable)/sizeof(SegStep); i++) {
      PH1 = SegTable.PH1;
      PH2 = SegTable.PH2;
      
      A_I0_I1 = SegTable.I0_I1 & 0x03;
      B_I0_I1 = (SegTable.I0_I1 >> 2) & 0x03;
      
      I01 = A_I0_I1 & 0x01;
      I11 = (A_I0_I1 >> 1) & 0x01;
      I02 = B_I0_I1 & 0x01;
      I12 = (B_I0_I1 >> 1) & 0x01;
      
      delay(MICRO_DELAY);
    }
    delay(speed);
}

void main() {
    while (1) {
      Go();
    }
}

手机刷机菜鸟 发表于 2025-2-27 07:46:19

你弄个双电机的试试?不限大小那种

大叶子 发表于 2025-2-27 08:52:19

我要看运行视频,看看丝滑不

xujibicool 发表于 2025-3-1 08:25:02

大叶子 发表于 2025-2-27 08:52
我要看运行视频,看看丝滑不

现在的ai改代码,比绝大多数人还是要牛,效率更高{:dabing:}

大叶子 发表于 2025-3-5 08:38:12

xujibicool 发表于 2025-3-1 08:25
现在的ai改代码,比绝大多数人还是要牛,效率更高

同意,AI牛,
我要看视频,
是不是有比对,
好的效果来一个,展示一下飒

wangkgg 发表于 2025-4-2 20:59:17

相比 DEEPSEEK逻辑分析能力比豆包强,豆包要人工多教几遍才理解正确
页: [1]
查看完整版本: 普中HC6800-EM3 V2.2+deepseek,UDN2916 2相4线步进电机