康小印
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 14 個(gè)
工控威望: 105 點(diǎn)
下載積分: 601 分
在線時(shí)間: 4(小時(shí))
注冊(cè)時(shí)間: 2015-12-19
最后登錄: 2016-03-09
查看康小印的 主題 / 回貼
樓主  發(fā)表于: 2016-03-04 10:53
大家好,小弟用51單片機(jī)想控制步進(jìn)電機(jī)正轉(zhuǎn)和反轉(zhuǎn),但是現(xiàn)在只能夠?qū)崿F(xiàn)正轉(zhuǎn),反轉(zhuǎn)無(wú)法實(shí)現(xiàn)。下面是正轉(zhuǎn)程序(只能夠是向一個(gè)方向運(yùn)動(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;
    }
}
接線圖如下,采用的是差分接線辦法。
我嘗試過(guò)單獨(dú)修改zfx=0;ffx=1,但是依舊不會(huì)改變方向,還是會(huì)向下運(yùn)動(dòng);
嘗試過(guò)單獨(dú)修改fmc=1;zmc=0;fmc=0;這樣修改,這次步進(jìn)電機(jī)就不運(yùn)動(dòng)了。我若想通過(guò)程序?qū)崿F(xiàn)步進(jìn)電機(jī)能夠反向運(yùn)動(dòng),程序應(yīng)該怎么修改?謝謝大家
hdkcxym
行者無(wú)疆勇者無(wú)畏
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 14 個(gè)
工控威望: 103 點(diǎn)
下載積分: 433 分
在線時(shí)間: 51(小時(shí))
注冊(cè)時(shí)間: 2014-11-22
最后登錄: 2019-04-14
查看hdkcxym的 主題 / 回貼
1樓  發(fā)表于: 2016-03-04 20:34
呵呵,要用定時(shí)中斷來(lái)改變脈沖I/O的,判斷方向也要寫(xiě)在中斷里。寫(xiě)的還好,建議搜一下