久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8749|回復: 1
打印 上一主題 下一主題
收起左側

stm32四相五線步進電機驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:400503 發表于 2018-9-20 13:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
引腳A4-A7作為電機的四個控制信號。

單片機源程序如下:
  1. //頭文件
  2. #include "stm32f10x.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "RTC_Time.h"
  6. #include <stdio.h>
  7. #include "delay.h"

  8. //=============================================================================
  9. //函數名稱:Delay
  10. //功能概要:延時函數
  11. //參數說明:無
  12. //函數返回:無
  13. //=============================================================================

  14. //=============================================================================
  15. //函數名稱:main
  16. //功能概要:主函數
  17. //參數說明:無
  18. //函數返回:int
  19. //=============================================================================
  20. #define uchar unsigned char
  21. #define uint unsigned int
  22.        
  23. void motor3(void);
  24. void motor4(void);



  25. u16 moto0_time=11000; //電機1的運行時間
  26. u16 moto1_time=2000; //電機2的運行時間

  27. void  Delay1 (uint32_t nCount)
  28. {
  29.   for(; nCount != 0; nCount--);
  30. }

  31. void delay1_ms(u16 time)
  32. {   
  33.    u16 i=0;  
  34.    while(time--)
  35.    {
  36.       i=12000;  
  37.       while(i--) ;   
  38.    }
  39. }




  40. int main(void)
  41. {
  42.                
  43.    u8 k=0;       

  44.                 //初始化LED
  45.     USART1_Config();
  46.    LED_GPIO_Config();
  47.    
  48.                        
  49.                
  50.     while (1)
  51.     {   
  52.        LED0_OFF;
  53.                 if(KEY0==0) //正轉按鈕
  54.                  {  
  55.                             Delay1(0x00FFFF);
  56.                             //motor1( );
  57.                 motor3( );
  58.                                          MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;         
  59.                             MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;         
  60.                             k=1;
  61.                  }
  62.                    if(KEY1==0) //反轉按鈕
  63.                  {
  64.                                    Delay1(0x00FFFF);
  65.                       //motor2( );
  66.                             motor4();
  67.                             MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;
  68.                             MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;
  69.                             k=0;
  70.                  }
  71.                        

  72.                        
  73.     }
  74. }





  75. //正轉函數
  76. void motor3(void)
  77.        
  78. {
  79.          u8 j=0;
  80.          u16 i;       

  81.        
  82.         for(i=0;i<moto0_time;i++)
  83.                         {        
  84.    switch(j)
  85.     {
  86.                        
  87.                          
  88.     case 0:{

  89.                                          { MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
  90.                                                                       if(i<moto1_time)
  91.                                          { MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
  92.                        else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  93.                
  94.                
  95.                     };break;
  96.     case 1:{
  97.                              
  98.                         {MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
  99.                                                 if(i<moto1_time)
  100.                               {MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
  101.                         else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  102.                      
  103.                      };break;
  104.     case 2:{
  105.                              
  106.                               { MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;}
  107.                                                  if(i<moto1_time)
  108.                                                 { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;}
  109.                         else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  110.                
  111.                           
  112.                        };break;
  113.     case 3:{
  114.                              
  115.                         {MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;}
  116.                                                                   if(i<moto1_time)
  117.                         {MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_OFF;}
  118.                         else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  119.                        };break;
  120.                
  121.                 case 4:{
  122.                              
  123.                                                  {MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;}
  124.      if(i<moto1_time)  
  125.                                                 {MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;}
  126.                         else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  127.                
  128.                        };break;
  129.     case 5:{
  130.                                
  131.                                                  { MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  132.                 if(i<moto1_time)  
  133.                                                  { MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
  134.                          else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  135.                
  136.                       };break;
  137.     case 6:{
  138.                                
  139.                          { MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  140.                                                         if(i<moto1_time)  
  141.                                                  { MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
  142.                          else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  143.                         };break;
  144.     case 7:{
  145.                                 
  146.                                 { MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  147.                                                                          if(i<moto1_time)  
  148.                                                         { MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  149.                           else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  150.                          };break;                               
  151.                                                

  152.                                                  
  153.                                                  

  154.                                                  
  155.                                                  
  156.                                                
  157.                                                
  158.                                                
  159.      }
  160.                 j++;
  161.                 if(j>=8) j=0;

  162.                 Delay1(0x01222);
  163.                  //delay1_ms(1);                 
  164.                         }
  165. }








  166. //反轉函數

  167. void motor4(void)
  168. {
  169.                 u8 j;
  170.           u16 i;
  171.                 j=0;
  172.                         for(i=0;i<moto0_time;i++)
  173.                         {        
  174.    switch(j)
  175.     {
  176.     case 0:{
  177.                              { MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  178.                          if(i<moto1_time)
  179.                               { MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  180.                                           else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  181.                                
  182.                        };break;
  183.     case 1:{   
  184.                                 
  185.                                                         { MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  186.                                    if(i<moto1_time)
  187.                                                          {MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
  188.                                                          else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}                     
  189.                        };break;
  190.     case 2:{  
  191.                        
  192.                       {  MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
  193.                                                         if(i<moto1_time)
  194.                                                 {MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
  195.                                                 else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  196.                                        
  197.                      
  198.                        };break;
  199.     case 3:{
  200.                                      
  201.                          { MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;}
  202.                          if(i<moto1_time)
  203.                                                         {MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;}
  204.                           else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  205.                                                  
  206.                
  207.                
  208.                        };break;
  209.                
  210.                 case 4:{
  211.                                                
  212.                                                 {  MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;}
  213.                                                   if(i<moto1_time)
  214.                                                   {  MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_OFF;  }
  215.                                 else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  216.                                
  217.                        
  218.                        };break;
  219.     case 5:{
  220.                        
  221.                                                 {        MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;}
  222.                           if(i<moto1_time)
  223.                        
  224.                                 { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;}
  225.                                                   else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  226.                        };break;
  227.     case 6:{
  228.                        
  229.                             
  230.                      {  MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
  231.                                  if(i<moto1_time)
  232.                              { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
  233.                        else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  234.                                
  235.                       };break;
  236.     case 7:{
  237.                              
  238.                                           {MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
  239.                                                                                   if(i<moto1_time)
  240.                               { MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
  241.                                           else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
  242.                        };break;                       

  243.                                          
  244.                                          
  245.                                  
  246.                                          
  247.          

  248.        
  249.      }
  250.                 j++;
  251.                 if(j>=8) j=0;

  252.                 Delay1(0x01222);
  253.                 // delay1_ms(2);
  254.                         }
  255.                        
  256.    LED0_ON;

  257. }











  258. /*
  259. 四拍
  260. void motor1(void)  反轉
  261. {
  262.                 u8 j;
  263.          u16 i;
  264.                 j=0;
  265.                         for(i=0;i<1000;i++)
  266.                         {        
  267.    switch(j)
  268.     {
  269.     case 0:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
  270.                        MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
  271.     case 1:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
  272.                         MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
  273.     case 2:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
  274.                         MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
  275.     case 3:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
  276.                         MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;
  277.      }
  278.                 j++;
  279.                 if(j>=4) j=0;
  280.                 //delay_ms(10);
  281.                 Delay1(0x003FFF);
  282.                         }
  283.                        
  284.    LED0_ON;

  285. }

  286. void motor2(void)  正轉
  287.        
  288. {
  289.         u8 j;
  290.          u16 i;
  291.         j=0;
  292.         for(i=0;i<1000;i++)
  293.                         {        
  294.    switch(j)
  295.     {
  296.     case 0:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
  297.                         MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;
  298.     case 1:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
  299.                         MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
  300.     case 2:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
  301.                         MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
  302.     case 3:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
  303.                         MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
  304.      }
  305.                 j++;
  306.                 if(j>=4) j=0;
  307.                 //delay_ms(5);
  308.                 Delay1(0x003FFF);
  309.                         }
  310. }


  311. */

















  312. /*
  313. 八拍加四拍混合

  314. void motor5(void)   反轉
  315. {
  316.                 u8 j;
  317.          u16 i;
  318.                 j=0;
  319.                         for(i=0;i<2000;i++)
  320.                         {        
  321.    switch(j)
  322.     {
  323.     case 0:{MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;       
  324.     case 1:{MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;
  325.                 case 2:{MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;
  326.                 case 3:{MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;};break;
  327.                
  328.                 case 4:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;};break;
  329.     case 5:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;};break;
  330.     case 6:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;};break;
  331.     case 7:{MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;};break;                       


  332.                                
  333.           case 8:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
  334.                        MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
  335.     case 9:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
  336.                         MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
  337.     case 10:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
  338.                         MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
  339.     case 11:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
  340.                         MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;                       
  341.                                                
  342.                                        
  343.      }
  344.                 j++;
  345.                 if(j>=8) j=0;

  346.                 Delay1(0x002FEE);
  347.                 // delay1_ms(2);
  348.                         }
  349.                        
  350. ……………………

  351. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
2.四相五線 步進電機 兩個小電機同步轉90度.rar (402.96 KB, 下載次數: 76)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-9-20 16:49 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天堂一区 | 91中文字幕在线观看 | 久久欧美高清二区三区 | 成人免费淫片aa视频免费 | 在线视频 亚洲 | 日本人爽p大片免费看 | 国产国语精品 | 国产一区二区三区免费 | 亚洲一区二区视频在线观看 | 欧美一二区 | 九九热精品视频在线观看 | 欧美.com| 久久亚洲国产精品日日av夜夜 | 成人免费看黄网站在线观看 | 日韩中文字幕视频在线观看 | 国产精品激情小视频 | 久久精品综合 | 欧美在线观看一区 | 美女久久久久久久久 | 欧美天堂在线观看 | 欧美在线a | 日本三级日产三级国产三级 | 日日夜夜天天 | 国产午夜精品一区二区三区四区 | 亚洲导航深夜福利涩涩屋 | 精品久久国产 | 一区二区中文 | 97精品久久| av黄色免费在线观看 | 波多野结衣一区二区三区在线观看 | 成人激情视频免费观看 | 成人欧美一区二区三区在线观看 | 中文av字幕| 亚洲一区二区在线播放 | 精品国产91乱码一区二区三区 | 亚洲免费精品 | 日韩欧美在线播放 | 国产日韩欧美在线 | 中文亚洲字幕 | 国产午夜在线观看 | 国产免费观看久久黄av片涩av |