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

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 24005|回復(fù): 54
打印 上一主題 下一主題
收起左側(cè)

A4988步進(jìn)電機(jī)單片機(jī)驅(qū)動(dòng)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:213838 發(fā)表于 2017-6-22 20:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是自己用4988步進(jìn)電機(jī)驅(qū)動(dòng)芯片做的,4988芯片一般用在3D打印機(jī)上,具有體積小等優(yōu)點(diǎn)。下面有我的測(cè)試程序,希望可以給需要的人提供參考。

單片機(jī)源程序如下:
  1. /***************************************************************
  2. * 實(shí) 驗(yàn) 名 :步進(jìn)電機(jī)實(shí)驗(yàn)
  3. * 實(shí)驗(yàn)說(shuō)明 :電機(jī)啟動(dòng)、停止、正轉(zhuǎn)、反轉(zhuǎn)
  4. * 實(shí)驗(yàn)平臺(tái) :51單片機(jī)開(kāi)發(fā)板
  5. * 連接方式 :pulse接P10  DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
  6. * 注    意 :本例程使用了中斷定時(shí)器,中斷介紹會(huì)在下一實(shí)驗(yàn)中說(shuō)明
  7. ****************************************************************************/

  8. #include <reg52.h>
  9. #include <intrins.h>

  10. #define FOSC 11059200L //晶振設(shè)置,默認(rèn)使用11.0592M Hz
  11. //#define FOSC 12000000L //晶振設(shè)置,使用12M Hz
  12. //#define FOSC 24000000L //晶振設(shè)置,使用24M Hz

  13. #define TIME_MS 1 //設(shè)定定時(shí)時(shí)間 ms ,在11.0592M晶振下,不易超過(guò)60ms





  14. //IO接口定義
  15. sbit pulse = P1^0;//脈沖信號(hào)
  16. sbit Dir   = P1^1; //正反轉(zhuǎn)

  17. sbit EN    = P1^2;
  18. sbit MS1   = P1^3;
  19. sbit MS2   = P1^4;
  20. sbit MS3   = P1^5;



  21. sbit KEY1 = P2^0;  //啟動(dòng)
  22. sbit KEY2 = P2^1;  //停止
  23. sbit KEY3 = P2^2;  //正轉(zhuǎn)
  24. sbit KEY4 = P2^3;  //反轉(zhuǎn)


  25. //全局變量定義
  26. unsigned char count=0;

  27. /*******************************************************************************
  28. * 函 數(shù) 名 :Delayms
  29. * 函數(shù)功能 :實(shí)現(xiàn) ms級(jí)的延時(shí)
  30. * 輸    入 :ms
  31. * 輸    出 :無(wú)
  32. *******************************************************************************/
  33. void Delayms(unsigned int ms)
  34. {
  35.         unsigned int i,j;
  36.         for(i=0;i<ms;i++)
  37.         #if FOSC == 11059200L
  38.                 for(j=0;j<114;j++);
  39.         #elif FOSC == 12000000L
  40.           for(j=0;j<123;j++);
  41.         #elif FOSC == 24000000L
  42.                 for(j=0;j<249;j++);
  43.         #else
  44.                 for(j=0;j<114;j++);
  45.         #endif
  46. }

  47. /*******************************************************************************
  48. * 函 數(shù) 名 :Timer0Init
  49. * 函數(shù)功能 :定時(shí)器0初始化
  50. * 輸    入 :無(wú)
  51. * 輸    出 :無(wú)
  52. *******************************************************************************/
  53. void Timer0Init()
  54. {
  55.         TMOD=0x01; //設(shè)置定時(shí)器0工作方式為1
  56.         TH0=(65536-FOSC/12/1000*TIME_MS)/256;
  57.         TL0=(65536-FOSC/12/1000*TIME_MS)%256;
  58.         ET0=1; //開(kāi)啟定時(shí)器0中斷
  59. //        TR0=1;        //開(kāi)啟定時(shí)器       
  60.         EA=1;  //打開(kāi)總中斷
  61. }


  62. /*******************************************************************************
  63. * 函 數(shù) 名 :main
  64. * 函數(shù)功能 :主函數(shù)
  65. * 輸    入 :無(wú)
  66. * 輸    出 :無(wú)
  67. *******************************************************************************/
  68. void main()
  69. {
  70.         Timer0Init();
  71.         EN=0;
  72.         MS1=0;
  73.         MS2=0;
  74.         MS3=0;
  75.         while(1)
  76.         {
  77.   if(KEY1==0)  //判斷是否按下鍵盤
  78.         {
  79.                 Delayms(10); //延時(shí),軟件去干擾
  80.                 if(KEY1==0)   //確認(rèn)按鍵按下
  81.                 {
  82.       TR0=1;
  83.                 }
  84.                 while(KEY1==0);//按鍵鎖定,每按一次count只加1.
  85.         }
  86.         if(KEY2==0)  //判斷是否按下鍵盤
  87.         {
  88.                 Delayms(10); //延時(shí),軟件去干擾
  89.                 if(KEY2==0)   //確認(rèn)按鍵按下
  90.                 {
  91.       TR0=0;
  92.                 }
  93.                 while(KEY2==0);//按鍵鎖定,每按一次count只加1.
  94.         }       
  95.        
  96.         if(KEY3==0)  //判斷是否按下鍵盤
  97.         {
  98.                 Delayms(10); //延時(shí),軟件去干擾
  99.                 if(KEY3==0)   //確認(rèn)按鍵按下
  100.                 {
  101.       Dir=0;
  102.                 }
  103.                 while(KEY3==0);//按鍵鎖定,每按一次count只加1.
  104.         }       
  105.        
  106.                 if(KEY4==0)  //判斷是否按下鍵盤
  107.         {
  108.                 Delayms(10); //延時(shí),軟件去干擾
  109.                 if(KEY4==0)   //確認(rèn)按鍵按下
  110.                 {
  111.       Dir=1;
  112.                 }
  113.                 while(KEY4==0);//按鍵鎖定,每按一次count只加1.
  114.         }       
  115.        
  116.        
  117.         }
  118. }

  119. /*******************************************************************************
  120. ……………………

  121. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
A4988步進(jìn)電機(jī)實(shí)驗(yàn).rar (23.64 KB, 下載次數(shù): 811)


評(píng)分

參與人數(shù) 2黑幣 +35 收起 理由
dww465757120 + 30 共享資料的黑幣獎(jiǎng)勵(lì)!
Lucency1998 + 5 很給力!

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-6-24 21:47 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:138282 發(fā)表于 2017-6-25 20:31 來(lái)自觸屏版 | 只看該作者
必須頂��!終于有51單片機(jī)控制4988了
回復(fù)

使用道具 舉報(bào)

地板
ID:231918 發(fā)表于 2017-10-11 21:04 | 只看該作者
有51單片機(jī)控制4988了    參觀看看代碼 學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

5#
ID:144716 發(fā)表于 2017-10-26 23:42 來(lái)自觸屏版 | 只看該作者
樓主,用A4988驅(qū)動(dòng)電機(jī)時(shí)還有四拍八拍的整步、半步這個(gè)說(shuō)法嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:144716 發(fā)表于 2017-10-26 23:44 來(lái)自觸屏版 | 只看該作者
假如我要實(shí)現(xiàn)每秒鐘發(fā)5個(gè)脈沖,程序里定時(shí)器要怎么設(shè)置(計(jì)算)呢?小白一個(gè),樓主不要嫌棄。感謝…
回復(fù)

使用道具 舉報(bào)

7#
ID:144716 發(fā)表于 2017-10-26 23:46 來(lái)自觸屏版 | 只看該作者
假如我要實(shí)現(xiàn)每秒鐘發(fā)5個(gè)脈沖,程序怎么修改呢?小白一個(gè),樓主不要嫌棄,感謝!
回復(fù)

使用道具 舉報(bào)

8#
ID:283533 發(fā)表于 2018-2-10 15:45 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

9#
ID:283533 發(fā)表于 2018-2-10 15:47 | 只看該作者

有51單片機(jī)控制4988了    參觀看看代碼 學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

10#
ID:287420 發(fā)表于 2018-3-4 13:53 | 只看該作者
學(xué)習(xí)一下,留個(gè)記號(hào)
回復(fù)

使用道具 舉報(bào)

11#
ID:287420 發(fā)表于 2018-3-4 13:53 | 只看該作者
學(xué)習(xí)一下,留個(gè)記號(hào)~~!
回復(fù)

使用道具 舉報(bào)

12#
ID:219315 發(fā)表于 2018-3-11 11:38 | 只看該作者
必須頂��!終于有51單片機(jī)控制4988了
回復(fù)

使用道具 舉報(bào)

13#
ID:243748 發(fā)表于 2018-4-6 12:29 來(lái)自觸屏版 | 只看該作者
?學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

14#
ID:230020 發(fā)表于 2018-6-5 18:34 | 只看該作者
必須頂啊!終于有51單片機(jī)控制4988了
回復(fù)

使用道具 舉報(bào)

15#
ID:347013 發(fā)表于 2018-6-7 16:37 | 只看該作者
這個(gè)必須頂頂
回復(fù)

使用道具 舉報(bào)

16#
ID:218959 發(fā)表于 2018-6-12 17:32 | 只看該作者
666666666666666666
回復(fù)

使用道具 舉報(bào)

17#
ID:230020 發(fā)表于 2018-7-19 18:59 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

18#
ID:233449 發(fā)表于 2018-8-4 20:14 | 只看該作者
我想知道脈沖引腳要連在那里
回復(fù)

使用道具 舉報(bào)

19#
ID:384479 發(fā)表于 2018-8-9 10:26 來(lái)自觸屏版 | 只看該作者
厲害了,終于找到了
回復(fù)

使用道具 舉報(bào)

20#
ID:384755 發(fā)表于 2018-8-9 20:30 | 只看該作者
終于有51單片機(jī)控終于有51單片機(jī)控制4988了制4988了
回復(fù)

使用道具 舉報(bào)

21#
ID:381271 發(fā)表于 2018-8-13 10:16 | 只看該作者
假的 沒(méi)什么用
回復(fù)

使用道具 舉報(bào)

22#
ID:249545 發(fā)表于 2018-8-24 12:03 | 只看該作者
很好的步進(jìn)電機(jī)MCU驅(qū)動(dòng)資料,適合我們初學(xué)者學(xué)習(xí)制做和實(shí)驗(yàn)~
回復(fù)

使用道具 舉報(bào)

23#
ID:368790 發(fā)表于 2018-9-5 10:15 | 只看該作者
點(diǎn)贊。。。。。。。。。。。。。。。。等積分夠了再來(lái)下載
回復(fù)

使用道具 舉報(bào)

24#
ID:88617 發(fā)表于 2018-10-7 11:17 | 只看該作者
下載來(lái)學(xué)習(xí)下

回復(fù)

使用道具 舉報(bào)

25#
ID:85865 發(fā)表于 2018-11-1 11:16 | 只看該作者
可以驅(qū)動(dòng)48步進(jìn)電機(jī)嗎
回復(fù)

使用道具 舉報(bào)

26#
ID:191831 發(fā)表于 2018-11-11 23:05 | 只看該作者
為什么不行
回復(fù)

使用道具 舉報(bào)

27#
ID:425210 發(fā)表于 2018-11-12 19:25 | 只看該作者
哈哈哈,謝謝分享
回復(fù)

使用道具 舉報(bào)

28#
ID:428394 發(fā)表于 2018-11-17 20:03 | 只看該作者
非常感謝找了好久
回復(fù)

使用道具 舉報(bào)

29#
ID:433326 發(fā)表于 2018-11-26 11:56 | 只看該作者

必須頂啊!終于有51單片機(jī)控制4988了
回復(fù)

使用道具 舉報(bào)

30#
ID:434762 發(fā)表于 2018-11-28 10:09 | 只看該作者
想學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

31#
ID:326087 發(fā)表于 2018-12-28 14:35 | 只看該作者
這個(gè)是用51單片機(jī)驅(qū)動(dòng)的嗎
回復(fù)

使用道具 舉報(bào)

32#
ID:3802 發(fā)表于 2019-1-8 16:09 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

33#
ID:505656 發(fā)表于 2019-4-6 11:31 | 只看該作者
太棒了,終于可以驅(qū)動(dòng)42了
回復(fù)

使用道具 舉報(bào)

34#
ID:392259 發(fā)表于 2019-4-14 10:30 | 只看該作者
為啥我下載后電機(jī)只顫抖,而不轉(zhuǎn)了?
回復(fù)

使用道具 舉報(bào)

35#
ID:554670 發(fā)表于 2019-6-4 14:30 | 只看該作者
好資料,51黑有你更精彩
回復(fù)

使用道具 舉報(bào)

36#
ID:562192 發(fā)表于 2019-6-13 22:23 來(lái)自觸屏版 | 只看該作者
感謝,寫的很棒,
回復(fù)

使用道具 舉報(bào)

37#
ID:572447 發(fā)表于 2019-6-29 09:31 來(lái)自觸屏版 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

38#
ID:573271 發(fā)表于 2019-6-29 14:08 | 只看該作者
這個(gè)必須頂頂
回復(fù)

使用道具 舉報(bào)

39#
ID:579329 發(fā)表于 2019-7-8 19:39 | 只看該作者
感謝樓主分享,學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

40#
ID:609144 發(fā)表于 2019-9-8 16:34 | 只看該作者
還是不會(huì)連線  
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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