|
|
我嘗試了,但是把while(1)去掉就不可以,我想用藍(lán)牙控制,實(shí)現(xiàn)不了,只能用按鍵控制
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時(shí)鐘旋轉(zhuǎn)相序表
uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時(shí)鐘旋轉(zhuǎn)相序表
sbit K1=P3^0; //反轉(zhuǎn)按鍵
sbit K2=P3^1; //正轉(zhuǎn)按鍵
sbit K3=P3^2; //停止按鍵
uchar b,t,i,j,r; //聲明變量
void delaynms(uint a)
{
while(a--)
{
for(b=0;b<115;b++) //1ms基準(zhǔn)延時(shí)程序
{
;
}
}
}
void motor_ccw(void) //正轉(zhuǎn)函數(shù)
{
for(i=0;i<8;i++) //旋轉(zhuǎn)4函數(shù)
{
P1=CCW;
delaynms(2); //調(diào)節(jié)轉(zhuǎn)速,延時(shí)變長,轉(zhuǎn)動(dòng)速度變慢
}
}
void motor_cw(void) //反轉(zhuǎn)函數(shù)
{
for(i=0;i<8;i++) //旋轉(zhuǎn)控制函數(shù)
{
P1=CW;
delaynms(2); //調(diào)節(jié)轉(zhuǎn)速,延時(shí)變長,轉(zhuǎn)動(dòng)速度變慢
}
}
void main(void)
{
uchar N=1; //因?yàn)椴竭M(jìn)電機(jī)是減速步進(jìn)電機(jī),減速比的1/64 ,修改N可以改變轉(zhuǎn)動(dòng)角度大小
//所以N=64時(shí),步進(jìn)電機(jī)主軸轉(zhuǎn)一圈,N最小值為1。
while(1)
{
if(K1==0)
{
for(r=0;r<N;r++)
{
motor_ccw(); //電機(jī)逆轉(zhuǎn)
}
}
else if(K2==0)
{
for(r=0;r<N;r++)
{
motor_cw(); //電機(jī)反轉(zhuǎn)
}
}
else
P1=0xf0; //電機(jī)停止
}
}
|
|