找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1824|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)控制步進(jìn)馬達(dá)程序問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
請(qǐng)教一下,我這個(gè)單片機(jī)程序是想讓步進(jìn)馬達(dá)正轉(zhuǎn)45度,反轉(zhuǎn)45度,重復(fù)三次然后停止,但是現(xiàn)在一直循環(huán)不停,不知問(wèn)題出在哪里,請(qǐng)大家指教,謝謝!
  1. /******************************28BYJ-48步進(jìn)電機(jī)測(cè)試程序*************************************
  2. ;FOSC = 12MHz

  3. ; 步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào)!!! 轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比!!!
  4. ; 本步進(jìn)電機(jī)步進(jìn)角為 5.625*2度 半步5.625度, 減速比為64. 一圈 360 度 , 需要512 個(gè)脈沖完成!!!  360=N*45/64
  5. ;---------------------------------------------------------------------------------
  6. ; A 組線圈對(duì)應(yīng) P3.2
  7. ; B 組線圈對(duì)應(yīng) P3.3
  8. ; C 組線圈對(duì)應(yīng) P3.4
  9. ; D 組線圈對(duì)應(yīng) P3.5

  10. ;----------------------------------------------------------------------------------
  11. **********************************************************************************/
  12. #include <reg52.h>      
  13. #include <intrins.h>
  14. #define uint unsigned int
  15. #define uchar unsigned char
  16. uint i,j,k,m;
  17. uint N=128;    //角度范圍調(diào)節(jié),對(duì)應(yīng)于45度,512對(duì)應(yīng)于360度

  18. uchar code single_rev[4]={0x20,0x10,0x08,0x04};  /*單四拍反轉(zhuǎn)表*/
  19. uchar code single_pos[4]={0x04,0x08,0x10,0x20};  /*單四拍正轉(zhuǎn)表*/

  20. void delay(uint z);
  21. void m_single_pos();
  22. void m_single_rev();

  23. void main()
  24. {
  25.    // while(1)
  26. for(m=0;m<3;m++);         
  27.         {
  28.      m_single_rev(); //單四拍反轉(zhuǎn)360度
  29.           delay(25);
  30.          m_single_pos(); //單四拍正轉(zhuǎn)360度
  31.           delay(25);
  32.         }
  33. }
  34.         
  35. void delay(uint z) /*延時(shí)z毫秒*/
  36. {
  37.     uint x,y;
  38.         for(x=z;x>0;x--)
  39.            for(y=350;y>0;y--) ;         //轉(zhuǎn)速調(diào)節(jié),數(shù)值越大馬達(dá)越慢
  40. }



  41.             
  42. /******************************單四拍驅(qū)動(dòng)正轉(zhuǎn)(N*45/16)*************************************/  
  43. void m_single_pos()
  44. {
  45.    for(k=0;k<N;k++)            
  46.     {  
  47.          for(i=0;i<4;i++)                                //單四拍一個(gè)脈沖轉(zhuǎn)子轉(zhuǎn)動(dòng)5.625*2=11.625度,四拍共45度
  48.             {
  49.                   P3=single_pos[i] ;
  50.                   delay(5) ;                //適當(dāng)延時(shí),保證轉(zhuǎn)子轉(zhuǎn)動(dòng)時(shí)間,延時(shí)過(guò)短會(huì)丟拍
  51.                  }
  52.          }
  53. }


  54. /******************************單四拍驅(qū)動(dòng)反轉(zhuǎn)(N*45/16)*************************************/  
  55. void m_single_rev()
  56. {
  57.    for(k=0;k<N;k++)                        
  58.     {  
  59.          for(i=0;i<4;i++)             //單四拍一個(gè)脈沖轉(zhuǎn)子轉(zhuǎn)動(dòng)5.625*2=11.625度,四拍共45度
  60.             {
  61.                   P3=single_rev[i] ;
  62.                   delay(5) ;            //適當(dāng)延時(shí),保證轉(zhuǎn)子轉(zhuǎn)動(dòng)時(shí)間,延時(shí)過(guò)短會(huì)丟拍
  63.                  }                        
  64.          }               
  65. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:495500 發(fā)表于 2023-3-9 15:15 | 只看該作者
void main()
{
   // while(1)
  {
    for(m=0;m<3;m++);         
        {
     m_single_rev(); //單四拍反轉(zhuǎn)360度
          delay(25);
         m_single_pos(); //單四拍正轉(zhuǎn)360度
          delay(25);
        }
  }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:1063163 發(fā)表于 2023-3-9 15:18 | 只看該作者
Опечатка "за"!
После скобок не должно быть точки с запятой.



回復(fù)

使用道具 舉報(bào)

地板
ID:1063163 發(fā)表于 2023-3-9 15:23 | 只看該作者
“為”拼寫錯(cuò)誤!
括號(hào)后不應(yīng)該有分號(hào)。




回復(fù)

使用道具 舉報(bào)

5#
ID:1034262 發(fā)表于 2023-3-9 15:34 | 只看該作者
main函數(shù)沒(méi)有大循環(huán),當(dāng)然會(huì)如此。
回復(fù)

使用道具 舉報(bào)

6#
ID:97678 發(fā)表于 2023-3-9 16:07 | 只看該作者
我的步進(jìn)電機(jī)工作的時(shí)候,一會(huì)卡頓一下。 不知道怎么回事。 有人知道嗎?
回復(fù)

使用道具 舉報(bào)

7#
ID:161164 發(fā)表于 2023-3-9 17:24 來(lái)自手機(jī) | 只看該作者
把while(1)放到最后

1.jpg (114.7 KB, 下載次數(shù): 49)

1.jpg
回復(fù)

使用道具 舉報(bào)

8#
ID:883242 發(fā)表于 2023-3-10 10:31 | 只看該作者
這么低級(jí)的錯(cuò)誤用indent或astyle格式化一下代碼一眼就能看出來(lái)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表