康小印
級別: 探索解密
![]() |
大家好,小弟用51單片機想控制步進(jìn)電機正轉和反轉,但是現在只能夠實(shí)現正轉,反轉無(wú)法實(shí)現。下面是正轉程序(只能夠是向一個(gè)方向運動(dòng)): #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit zmc=P1^0; sbit fmc=P1^1; sbit zfx=P1^2; sbit ffx=P1^3; void delayws(uchar); void main() { uchar i,a; for(a=1000;a>0;a--) { for(i=1000;i>0;i--) { zfx=1; ffx=0; zmc=1; fmc=0; zmc=0; } } while(1) { zfx=0; ffx=0; zmc=0; fmc=0; } } 接線(xiàn)圖如下,采用的是差分接線(xiàn)辦法。 我嘗試過(guò)單獨修改zfx=0;ffx=1,但是依舊不會(huì )改變方向,還是會(huì )向下運動(dòng); 嘗試過(guò)單獨修改fmc=1;zmc=0;fmc=0;這樣修改,這次步進(jìn)電機就不運動(dòng)了。我若想通過(guò)程序實(shí)現步進(jìn)電機能夠反向運動(dòng),程序應該怎么修改?謝謝大家 |
---|---|
|
tingfenghu
級別: 工控俠客
![]() ![]() |
很久沒(méi)有寫(xiě)過(guò)單片機程序呢。脈沖口輸出好像用中斷方式,你可以先輸出方向,使能,然后再輸出脈沖,看上面說(shuō)明并不是差分方式。 確定哪個(gè)P口是脈沖輸出,方向,使能。使能輸出不用改變,或者說(shuō)你直接接線(xiàn)而不用單片機控制也可以,主要是脈沖輸出和方向。 |
|
---|---|---|
|
康小印
級別: 探索解密
![]() |
對呀,有三種接線(xiàn)方式,我選擇的差分方式,F在只能夠實(shí)現單向運動(dòng)。。。 |
---|---|
|
hdkcxym
行者無(wú)疆勇者無(wú)畏
級別: 探索解密
![]() |
呵呵,要用定時(shí)中斷來(lái)改變脈沖I/O的,判斷方向也要寫(xiě)在中斷里。寫(xiě)的還好,建議搜一下 |
---|---|
|
康小印
級別: 探索解密
![]() |
好的,謝謝 |
---|---|
|