步进电机正反转+加减速+停止

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


#include

/*****P1.0=A ;P1.1=B ;P1.2=A' ; P1.3=B'****/
//////////////////////////////////////////////////////////////////////////////////////////////
/*******************************正转数组**************************************************/
code unsigned char runz[4]={0x0e,0x0d,0x0b,0x07}; //两相四线四拍工作方式
/*******************************反转数组**************************************************/
code unsigned char runf[4]={0x07,0x0b,0x0d,0x0e}; //两相四线四拍工作方式
unsigned char keycan=0; //键值
unsigned char s,i,j,k,z;

int y=20;//定义转动速度,数值越大电机转速越慢反之则快

sbit P0_0=P0^0;//正转按键
sbit P0_1=P0^1;//反转按键
sbit P0_2=P0^2;//电机加速
sbit P0_3=P0^3;//电机减速
sbit P0_4=P0^4;//电机ting
void delay(i)//延时函数
{
for(j=0;jfor(k=0;k<250;k++);
}



void zrun()// 正转运行
{

for(z=0;z<4;z++)
{
P1=runz[z];
delay(y);
}
}

void frun()// 反转运行
{
for(z=0;z<4;z++)
{
P1=runf[z];
delay(y);
}
}

main()
{
while(1)
{
if(P0_0==0) //如果电机正转按键按下
delay(4);
if(P0_0==0)
{
while(!P0_0);
keycan=1;
}

if(P0_1==0) //如果电机反转按键按下
delay(4);
if(P0_1==0)
{
while(!P0_1);
keycan=2; //键值等于2
}
switch (keycan)
{
case 1: zrun(); //键值等于1 正转
break;
case 2: frun(); //键值等于2 反转
break;

}

if(P0_3==0) // 电机jian速
delay(4);
if(P0_3==0)
{
while(!P0_3);
y+=2;
if(y>50) y=50;
}
if(P0_2==0) // 电机jia速
delay(4);
if(P0_2==0)
{
while(!P0_2);
y-=1;
if(y<6) y=6;
}
if(P0_4==0)
{
while(!P0_4);
keycan=0;

}
}
}

相关文档
最新文档