精品键盘控制步进电机正反转调速.docx
《精品键盘控制步进电机正反转调速.docx》由会员分享,可在线阅读,更多相关《精品键盘控制步进电机正反转调速.docx(7页珍藏版)》请在冰豆网上搜索。
精品键盘控制步进电机正反转调速
#include//51芯片管脚定义头文件
#include//内部包含延时函数_nop_();
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeFFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
ucharcodeREV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
sbitK1=P3^5;//正转
sbitK2=P3^3;//反转
sbitK3=P3^5;
sbitK4=P3^6;
sbitK5=P3^7;//停止
//sbitBEEP=P3^6;//蜂鸣器
/********************************************************/
/*
/*延时t毫秒
/*11.0592MHz时钟,延时约1ms
/*
/********************************************************/
voiddelay(uintt)
{
uintk;
while(t--)
{
for(k=0;k<125;k++)
{}
}
}
/**********************************************************/
voiddelayB(ucharx)//x*0.14MS
{
uchari;
while(x--)
{
for(i=0;i<13;i++)
{}
}
}
/**********************************************************/
voidbeep()
{
uchari;
for(i=0;i<100;i++)
{
delayB(4);
//BEEP=!
BEEP;//BEEP取反
}
//BEEP=1;//关闭蜂鸣器
}
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
voidmotor_ffw()
{
uchari;
uintj;
for(j=0;j<1;j++)//转1*n圈
{
if(K5==0)
{break;}//退出此循环程序
for(i=0;i<8;i++)//一个周期转45度
{
P1=FFW[i];//取数据
delay
(2);//调节转速
}
}
}
/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
voidmotor_rev()
{
uchari;
uintj;
for(j=0;j<1;j++)//转1×n圈
{
if(K5==0)
{break;}//退出此循环程序
for(i=0;i<8;i++)//一个周期转45度1
{
P1=REV[i];//取数据
delay
(2);//调节转速
}
}
}
voidmotor_ffw1()
{
uchari;
uintj;
for(j=0;j<1;j++)//转1*n圈
{
if(K5==0)
{break;}//退出此循环程序
for(i=0;i<8;i++)//一个周期转45度
{
P1=FFW[i];//取数据
delay(8);//调节转速
}
}
}
/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
voidmotor_rev1()
{
uchari;
uintj;
for(j=0;j<1;j++)//转1×n圈
{
if(K5==0)
{break;}//退出此循环程序
for(i=0;i<8;i++)//一个周期转45度
{
P1=REV[i];//取数据
delay(8);//调节转速
}
}
}
/********************************************************
*
*主程序
*
*********************************************************/
main()
{
ucharr,N=1;//N步进电机运转圈数因为我们的步进电机是减速步进电机减速比是1/64所以这里N=64时步进电机外部的主轴转1圈
while
(1)
{
if(K1==0)
{
beep();
while
(1)
{
for(r=0;r{
motor_ffw();//电机正转
}
if(K5==0)
{beep();break;}//退出此循环程序
}
}
elseif(K2==0)
{
beep();
while
(1)
{
for(r=0;r{
motor_rev();//电机反转
}
if(K5==0)
{beep();break;}//退出此循环程序
}
}
if(K4==0)
{
beep();
while
(1)
{
for(r=0;r{
motor_ffw1();//电机正转
}
if(K5==0)
{beep();break;}//退出此循环程序
}
}
elseif(K5==0)
{
beep();
while
(1)
{
for(r=0;r{
motor_rev1();//电机反转
}
if(K5==0)
{beep();break;}//退出此循环程序
}
}
}
}
/********************************************************/