- >>兩相步進(jìn)電機(jī)
- >>無刷電機(jī)
- >>三相步進(jìn)電機(jī)
- >>行星減速機(jī)
- >>直流無刷電機(jī)
- >>兩相步進(jìn)驅(qū)動(dòng)器
- >>直流無刷驅(qū)動(dòng)器
- >>三相步進(jìn)驅(qū)動(dòng)器
- >>直流無刷伺服驅(qū)動(dòng)器
- >>韓國(guó)GGM電機(jī)減速機(jī)

深圳市東么川伺服控制技術(shù)有限公司
電話:13316379101
郵箱:1355229533@qq.com
地址:深圳市龍華區(qū)民治街道樟坑社區(qū)青創(chuàng)城A棟B502
步進(jìn)電機(jī)控制之一:查詢實(shí)現(xiàn)正反轉(zhuǎn)控制
發(fā)布時(shí)間:2020-11-20 07:34:04
步進(jìn)電機(jī)控制之一:查詢實(shí)現(xiàn)正反轉(zhuǎn)控制
/*設(shè)計(jì)思路:采用按鍵對(duì)標(biāo)志位flag1、flag2的
奇偶性判斷不同的鍵值含義,按鍵要加松手檢測(cè)
功能,否則會(huì)執(zhí)行多次無法區(qū)別其狀態(tài);步進(jìn)電
機(jī)采用四相四拍的工作方式;Proteus不支持八拍
工作模式,該程序在Keil5下運(yùn)行,低版本需修改
頭文件為:#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar code num[]={0x01,0x02,0x04,0x08};
sbit k1=P2^0;//啟??刂?/p>
sbit k2=P2^2;//正反轉(zhuǎn)控制
bit flag1,flag2;
void delay_ms(uint z);
bit k1_scan();
bit k2_scan();
void motorzz();
void motorfz();
void motorstop();
void main()
{
while(1)
{
if(k1_scan()==0)
motorstop();
else if(k2_scan()==0)
motorzz();
else
motorfz();
}
}
void delay_ms(uint z)
{
uchar i;
while(z--)
for(i=0;i<120;i++);
}
bit k1_scan()
{
if(k1==0)
{
delay_ms(5);
if(k1==0)
{
flag1=~flag1;
while(!k1);
}
}
return flag1;
}
bit k2_scan()
{
if(k2==0)
{
delay_ms(5);
if(k2==0)
{
flag2=~flag2;
while(!k2);
}
}
return flag2;
}
void motorstop()
{
P0=0X00;
}
void motorzz()
{
uchar i;
for(i=0;i<4;i++)
{
P0=num[i];
delay_ms(20);
}
}
void motorfz()
{
char i;
/*注意:此處定義為有符號(hào)字符型,如果定義為
無符號(hào)字符型,i=0,i-1=255,i=255,for循
環(huán)依舊成立,而num[255]是一個(gè)未知數(shù)*/
for(i=3;i>=0;i--)
{
P0=num[i];
delay_ms(20);
}
}
/*以上motorfz()函數(shù)又等價(jià)于
void motorfz()
{
uchar i;
for(i=4;i>0;i--)
{
P0=num[i-1];
delay_ms(20);
}
}
*/
產(chǎn)品推薦:兩相步進(jìn)電機(jī)
產(chǎn)品推薦:無刷電機(jī)
產(chǎn)品推薦:兩相步進(jìn)驅(qū)動(dòng)器
產(chǎn)品推薦:直流無刷驅(qū)動(dòng)器