|
請(qǐng)教一下,我這個(gè)單片機(jī)程序是想讓步進(jìn)馬達(dá)正轉(zhuǎn)45度,反轉(zhuǎn)45度,重復(fù)三次然后停止,但是現(xiàn)在一直循環(huán)不停,不知問(wèn)題出在哪里,請(qǐng)大家指教,謝謝!
- /******************************28BYJ-48步進(jìn)電機(jī)測(cè)試程序*************************************
- ;FOSC = 12MHz
- ; 步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào)!!! 轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比!!!
- ; 本步進(jìn)電機(jī)步進(jìn)角為 5.625*2度 半步5.625度, 減速比為64. 一圈 360 度 , 需要512 個(gè)脈沖完成!!! 360=N*45/64
- ;---------------------------------------------------------------------------------
- ; A 組線圈對(duì)應(yīng) P3.2
- ; B 組線圈對(duì)應(yīng) P3.3
- ; C 組線圈對(duì)應(yīng) P3.4
- ; D 組線圈對(duì)應(yīng) P3.5
- ;----------------------------------------------------------------------------------
- **********************************************************************************/
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uint i,j,k,m;
- uint N=128; //角度范圍調(diào)節(jié),對(duì)應(yīng)于45度,512對(duì)應(yīng)于360度
- uchar code single_rev[4]={0x20,0x10,0x08,0x04}; /*單四拍反轉(zhuǎn)表*/
- uchar code single_pos[4]={0x04,0x08,0x10,0x20}; /*單四拍正轉(zhuǎn)表*/
- void delay(uint z);
- void m_single_pos();
- void m_single_rev();
- 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);
- }
- }
-
- void delay(uint z) /*延時(shí)z毫秒*/
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=350;y>0;y--) ; //轉(zhuǎn)速調(diào)節(jié),數(shù)值越大馬達(dá)越慢
- }
-
- /******************************單四拍驅(qū)動(dòng)正轉(zhuǎn)(N*45/16)*************************************/
- void m_single_pos()
- {
- for(k=0;k<N;k++)
- {
- for(i=0;i<4;i++) //單四拍一個(gè)脈沖轉(zhuǎn)子轉(zhuǎn)動(dòng)5.625*2=11.625度,四拍共45度
- {
- P3=single_pos[i] ;
- delay(5) ; //適當(dāng)延時(shí),保證轉(zhuǎn)子轉(zhuǎn)動(dòng)時(shí)間,延時(shí)過(guò)短會(huì)丟拍
- }
- }
- }
- /******************************單四拍驅(qū)動(dòng)反轉(zhuǎn)(N*45/16)*************************************/
- void m_single_rev()
- {
- for(k=0;k<N;k++)
- {
- for(i=0;i<4;i++) //單四拍一個(gè)脈沖轉(zhuǎn)子轉(zhuǎn)動(dòng)5.625*2=11.625度,四拍共45度
- {
- P3=single_rev[i] ;
- delay(5) ; //適當(dāng)延時(shí),保證轉(zhuǎn)子轉(zhuǎn)動(dòng)時(shí)間,延時(shí)過(guò)短會(huì)丟拍
- }
- }
- }
復(fù)制代碼
|
|