|
/******************************步進(jìn)電機(jī)的驅(qū)動(dòng)************************************* ;FOSC = 12MHz ;--------------------------------------------------------------------------------- ; 步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào)!!! 轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比!!! ; 本步進(jìn)電機(jī)步進(jìn)角為 5.625 度 . 一圈 360 度 , 需要 64 個(gè)脈沖完成!!! ;--------------------------------------------------------------------------------- ; A 組線圈對(duì)應(yīng) P0.0 ; B 組線圈對(duì)應(yīng) P0.1 ; C 組線圈對(duì)應(yīng) P0.2 ; D 組線圈對(duì)應(yīng) P0.3 ; 正轉(zhuǎn)次序: AB 組--BC 組--CD 組--DA 組 (即一個(gè)脈沖,正轉(zhuǎn) 5.625 度) ;---------------------------------------------------------------------------------- **********************************************************************************/ /*頭文件*/ #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char #define nop() _nop_() uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正轉(zhuǎn)表*/ uchar code table2[]={0x03,0x09,0x0c,0x06}; /*反轉(zhuǎn)表*/ #define motor P0 void delay(uchar ms) /*延時(shí)*/ { uchar j; while(ms--){ for(j=0;j<250;j++) {;} } }void main() { uchar i,j; while(1){ //正轉(zhuǎn) 3 圈共 192 個(gè)脈沖 j=0; for(i=0;i<192;i++){ motor = 0x00; motor = table1[j]; j++; if(j>=4) j=0; delay(2); } delay(200); delay(200); delay(200); delay(200); delay(200); //正轉(zhuǎn) 2 圈共 128 個(gè)脈沖 j=0; for(i=0;i<128;i++){ motor = 0x00; motor = table2[j]; j++; if(j>=4) j=0; delay(2); } delay(200); delay(200); delay(200); delay(200); delay(200); } } |
|