|
這是自己用4988步進(jìn)電機(jī)驅(qū)動(dòng)芯片做的,4988芯片一般用在3D打印機(jī)上,具有體積小等優(yōu)點(diǎn)。下面有我的測(cè)試程序,希望可以給需要的人提供參考。
單片機(jī)源程序如下:
- /***************************************************************
- * 實(shí) 驗(yàn) 名 :步進(jìn)電機(jī)實(shí)驗(yàn)
- * 實(shí)驗(yàn)說(shuō)明 :電機(jī)啟動(dòng)、停止、正轉(zhuǎn)、反轉(zhuǎn)
- * 實(shí)驗(yàn)平臺(tái) :51單片機(jī)開(kāi)發(fā)板
- * 連接方式 :pulse接P10 DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
- * 注 意 :本例程使用了中斷定時(shí)器,中斷介紹會(huì)在下一實(shí)驗(yàn)中說(shuō)明
- ****************************************************************************/
- #include <reg52.h>
- #include <intrins.h>
- #define FOSC 11059200L //晶振設(shè)置,默認(rèn)使用11.0592M Hz
- //#define FOSC 12000000L //晶振設(shè)置,使用12M Hz
- //#define FOSC 24000000L //晶振設(shè)置,使用24M Hz
- #define TIME_MS 1 //設(shè)定定時(shí)時(shí)間 ms ,在11.0592M晶振下,不易超過(guò)60ms
- //IO接口定義
- sbit pulse = P1^0;//脈沖信號(hào)
- sbit Dir = P1^1; //正反轉(zhuǎn)
- sbit EN = P1^2;
- sbit MS1 = P1^3;
- sbit MS2 = P1^4;
- sbit MS3 = P1^5;
- sbit KEY1 = P2^0; //啟動(dòng)
- sbit KEY2 = P2^1; //停止
- sbit KEY3 = P2^2; //正轉(zhuǎn)
- sbit KEY4 = P2^3; //反轉(zhuǎn)
- //全局變量定義
- unsigned char count=0;
- /*******************************************************************************
- * 函 數(shù) 名 :Delayms
- * 函數(shù)功能 :實(shí)現(xiàn) ms級(jí)的延時(shí)
- * 輸 入 :ms
- * 輸 出 :無(wú)
- *******************************************************************************/
- void Delayms(unsigned int ms)
- {
- unsigned int i,j;
- for(i=0;i<ms;i++)
- #if FOSC == 11059200L
- for(j=0;j<114;j++);
- #elif FOSC == 12000000L
- for(j=0;j<123;j++);
- #elif FOSC == 24000000L
- for(j=0;j<249;j++);
- #else
- for(j=0;j<114;j++);
- #endif
- }
- /*******************************************************************************
- * 函 數(shù) 名 :Timer0Init
- * 函數(shù)功能 :定時(shí)器0初始化
- * 輸 入 :無(wú)
- * 輸 出 :無(wú)
- *******************************************************************************/
- void Timer0Init()
- {
- TMOD=0x01; //設(shè)置定時(shí)器0工作方式為1
- TH0=(65536-FOSC/12/1000*TIME_MS)/256;
- TL0=(65536-FOSC/12/1000*TIME_MS)%256;
- ET0=1; //開(kāi)啟定時(shí)器0中斷
- // TR0=1; //開(kāi)啟定時(shí)器
- EA=1; //打開(kāi)總中斷
- }
- /*******************************************************************************
- * 函 數(shù) 名 :main
- * 函數(shù)功能 :主函數(shù)
- * 輸 入 :無(wú)
- * 輸 出 :無(wú)
- *******************************************************************************/
- void main()
- {
- Timer0Init();
- EN=0;
- MS1=0;
- MS2=0;
- MS3=0;
- while(1)
- {
- if(KEY1==0) //判斷是否按下鍵盤
- {
- Delayms(10); //延時(shí),軟件去干擾
- if(KEY1==0) //確認(rèn)按鍵按下
- {
- TR0=1;
- }
- while(KEY1==0);//按鍵鎖定,每按一次count只加1.
- }
- if(KEY2==0) //判斷是否按下鍵盤
- {
- Delayms(10); //延時(shí),軟件去干擾
- if(KEY2==0) //確認(rèn)按鍵按下
- {
- TR0=0;
- }
- while(KEY2==0);//按鍵鎖定,每按一次count只加1.
- }
-
- if(KEY3==0) //判斷是否按下鍵盤
- {
- Delayms(10); //延時(shí),軟件去干擾
- if(KEY3==0) //確認(rèn)按鍵按下
- {
- Dir=0;
- }
- while(KEY3==0);//按鍵鎖定,每按一次count只加1.
- }
-
- if(KEY4==0) //判斷是否按下鍵盤
- {
- Delayms(10); //延時(shí),軟件去干擾
- if(KEY4==0) //確認(rèn)按鍵按下
- {
- Dir=1;
- }
- while(KEY4==0);//按鍵鎖定,每按一次count只加1.
- }
-
-
- }
- }
- /*******************************************************************************
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
A4988步進(jìn)電機(jī)實(shí)驗(yàn).rar
(23.64 KB, 下載次數(shù): 811)
2017-6-22 20:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|