找回密码
 立即注册
查看: 373|回复: 5

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-04-10 16:59:05

45

主题

69

回帖

1223

积分

金牌会员

积分
1223
发表于 2025-1-25 17:18:43 | 显示全部楼层 |阅读模式
上传了普中资料到deepseek,不断的询问改进,下载验证,deepseek AI给出了优化版本,运行非常丝滑,人工智能还是杠杠的
  1. /*************************************************************************************
  2. *  标题:  步进电机试验四(采用2细分)                                                                                         *
  3. *                                                                                                                                                                          *
  4. *    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
  5. *;   单相四拍通电驱动时序:                                                          *
  6. *;   正转: A/  B  A  B/                                                                                                                         *
  7. *    反转: B/  A  B  A/                                                                                              *
  8. *                                                                                                                                                                     *
  9. *    UDN2916电流控制真值表:                                                                                                                 *
  10. *          I0    I1        输出电流                                                                                                                 *
  11. *          L            L                  最大                                                                                                                         *
  12. *          H                L                  最大*2/3                                                                                                                 *
  13. *          L                H                  最大*1/3                                                                                                                 *
  14. *     H     H         0                                                                     *
  15. *   请学员一定要消化掉本例程                                                                    *
  16. *   注意:J14短路冒需断开                                                                                    *
  17. **************************************************************************************/  
  18. #include "reg52.h"
  19. #define speed 38
  20. //Motor
  21. sbit PH1 = P1^0;          //定义管脚
  22. sbit PH2 = P1^1;
  23. sbit I01 = P1^2;
  24. sbit I11 = P1^3;
  25. sbit I02 = P1^4;
  26. sbit I12 = P1^5;
  27.                                      
  28. unsigned char TableA[] = { 0XF7,0XFB,0XF3};         //A线圈细分表
  29. unsigned char TableB[] = { 0XeF,0XdF,0XcF};         //B线圈细分表
  30. void delay(int time);
  31. /***************************************
  32. 函数功能:产生单相四拍脉冲控制步进机 2细分
  33. **************************************/
  34. void Go()
  35. {        char i ,temp;
  36.      //A
  37.     PH1 = 0;  //PH1为0 则A线圈为反向电流
  38.         for(i = 0; i<3; i++)
  39.         {  temp = P1;
  40.            P1 = TableA[i];
  41.            P1 = P1&temp;
  42.            delay(1);
  43.          }
  44.        
  45.         PH2 = 0;  //PH2为0 则B线圈为反向电流
  46.         I02 = 1;
  47.         I12 = 1;   //输出0
  48.         delay(speed);
  49.         //0
  50.         PH1 = 0;  //PH1为0 则A线圈为反向电流
  51.     I01 = 1;  //输出0
  52.         I11 = 1;
  53.        
  54.         PH2 = 1;  //PH2为1 则B线圈为正电流
  55.         for(i = 0; i<3; i++)
  56.         {  temp = P1;
  57.            P1 = TableB[i];
  58.            P1 = P1&temp;
  59.            delay(1);
  60.          }
  61.         delay(speed);
  62.         //B
  63.         PH1 = 1;   //PH1为1 则A线圈为正向电流
  64.         for(i = 0; i<3; i++)
  65.         {  temp = P1;
  66.            P1 = TableA[i];
  67.            P1 = P1&temp;
  68.            delay(1);
  69.          }
  70.         PH2 = 1;  //PH2为1 则B线圈为正向电流
  71.         I02 = 1;  //输出0
  72.         I12 = 1;
  73.                    ////
  74.         delay(speed);
  75.         //0
  76.         PH1 = 1;   //PH1为1 则A线圈为正向电流
  77.         I01 = 1;
  78.         I11 = 1;
  79.        
  80.         PH2 = 0;   //PH2为0 则B线圈为反向电流
  81.         for(i = 0; i<3; i++)
  82.         {  temp = P1;
  83.            P1 = TableB[i];
  84.            P1 = P1&temp;
  85.            delay(1);
  86.          }
  87.         delay(speed);
  88.                
  89.        
  90. }
  91. /*******************延时函数****************************/
  92. void delay(int time)
  93. {
  94.   int i,j;
  95.   
  96.   for(j=0; j <= time; j++)
  97.    for(i =0 ; i <= 120; i++);
  98. }
  99. void main()
  100. {
  101.   while(1)
  102.   {
  103.    
  104.     Go();  //步进电机运行
  105.        
  106.   }
  107. }
复制代码
  1. /*************************************************************************************
  2. *  标题:  步进电机试验四(采用4细分)                                                                                         *
  3. *                                                                                                                                                                          *
  4. *    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
  5. *;   单相四拍通电驱动时序:                                                          *
  6. *;   正转: A/  B  A  B/                                                                                                                         *
  7. *    反转: B/  A  B  A/                                                                                              *
  8. *                                                                                                                                                                     *
  9. *    UDN2916电流控制真值表:                                                                                                                 *
  10. *          I0    I1        输出电流                                                                                                                 *
  11. *          L            L                  最大                                                                                                                         *
  12. *          H                L                  最大*2/3                                                                                                                 *
  13. *          L                H                  最大*1/3                                                                                                                 *
  14. *     H     H         0                                                                     *
  15. *   请学员一定要消化掉本例程                                                                    *
  16. *   注意:J14短路冒需断开                                                                                    *
  17. **************************************************************************************/  
  18. #include "reg52.h"
  19. #define speed 38
  20. #define MICRO_DELAY 10
  21. sbit PH1 = P1^0;
  22. sbit PH2 = P1^1;
  23. sbit I01 = P1^2;
  24. sbit I11 = P1^3;
  25. sbit I02 = P1^4;
  26. sbit I12 = P1^5;
  27. unsigned char A_I0_I1;
  28. unsigned char B_I0_I1;
  29. typedef struct {
  30.     unsigned char PH1;
  31.     unsigned char PH2;
  32.     unsigned char I0_I1;
  33. } SegStep;
  34. // 顺时针旋转细分表(4细分)
  35. SegStep SegTable[] = {
  36.     {0, 0, 0x00 | (0x01 << 2)},  // A反向,B反向,A=100%, B=67%
  37.     {0, 1, 0x01 | (0x02 << 2)},  // A反向,B正向,A=67%, B=33%
  38.     {1, 1, 0x02 | (0x00 << 2)},  // A正向,B正向,A=33%, B=100%
  39.     {1, 0, 0x00 | (0x01 << 2)}   // A正向,B反向,A=100%, B=67%
  40. };
  41. void delay(int time) {
  42.     int i, j;
  43.     for (j = 0; j < time; j++)
  44.         for (i = 0; i < 120; i++);
  45. }
  46. void Go() {
  47.         int i;
  48.     for (i = 0; i < sizeof(SegTable)/sizeof(SegStep); i++) {
  49.         PH1 = SegTable[i].PH1;
  50.         PH2 = SegTable[i].PH2;
  51.         
  52.         A_I0_I1 = SegTable[i].I0_I1 & 0x03;
  53.         B_I0_I1 = (SegTable[i].I0_I1 >> 2) & 0x03;
  54.         
  55.         I01 = A_I0_I1 & 0x01;
  56.         I11 = (A_I0_I1 >> 1) & 0x01;
  57.         I02 = B_I0_I1 & 0x01;
  58.         I12 = (B_I0_I1 >> 1) & 0x01;
  59.         
  60.         delay(MICRO_DELAY);
  61.     }
  62.     delay(speed);
  63. }
  64. void main() {
  65.     while (1) {
  66.         Go();
  67.     }
  68. }
复制代码

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:308
  • 最近打卡:2025-04-30 16:54:58

0

主题

37

回帖

1330

积分

金牌会员

积分
1330
发表于 2025-2-27 07:46:19 | 显示全部楼层
你弄个双电机的试试?不限大小那种
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:265
  • 最近打卡:2025-05-01 07:25:06

0

主题

206

回帖

1522

积分

金牌会员

积分
1522
发表于 2025-2-27 08:52:19 | 显示全部楼层
我要看运行视频,看看丝滑不
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-04-10 16:59:05

45

主题

69

回帖

1223

积分

金牌会员

积分
1223
发表于 2025-3-1 08:25:02 | 显示全部楼层
大*** 发表于 2025-2-27 08:52
我要看运行视频,看看丝滑不

现在的ai改代码,比绝大多数人还是要牛,效率更高
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:265
  • 最近打卡:2025-05-01 07:25:06

0

主题

206

回帖

1522

积分

金牌会员

积分
1522
发表于 2025-3-5 08:38:12 | 显示全部楼层
xujib*** 发表于 2025-3-1 08:25
现在的ai改代码,比绝大多数人还是要牛,效率更高

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-04-02 20:59:17
已绑定手机

1

主题

22

回帖

133

积分

注册会员

积分
133
发表于 2025-4-2 20:59:17 | 显示全部楼层
相比 DEEPSEEK逻辑分析能力比豆包强,豆包要人工多教几遍才理解正确
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:54 , Processed in 0.502493 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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