步进电机调速程序Word格式.docx
《步进电机调速程序Word格式.docx》由会员分享,可在线阅读,更多相关《步进电机调速程序Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
//步进电机驱动
unsignedcharMotorStep=0;
unsignedintMotorTimer=0;
unsignedintMotorDelay,Speed=1,TIM,CT;
/*****************************************************
*初始化马达*
******************************************************/
voidInitMotor()
{
F1=1;
F2=1;
F3=1;
F4=1;
}
voidSetMotor()
//if(Speed==0)return;
MotorDelay=Speed;
switch(MotorStep)
{
case0:
if(TIM)//A
{
F1=0;
//0xf1
F3=1;
MotorStep=1;
TIM=0;
}
break;
case1:
//AB
if(TIM)
{
//0xf3
F2=0;
F3=1;
MotorStep=2;
case2:
//B
F1=1;
//0xf2
MotorStep=3;
case3:
//BC
//0xf6
F3=0;
MotorStep=4;
case4:
//C
//0xf4
MotorStep=5;
case5:
//CD
//0xfc
F4=0;
MotorStep=6;
case6:
//D
//0xf8
MotorStep=7;
case7:
//DA
//0xf9
MotorStep=0;
voidsystem_Ini()
TMOD|=0x11;
TH0=0xDC;
//11.0592M
TL0=0x00;
IE=0x8A;
TR0=1;
main()
{system_Ini();
InitMotor();
while
(1)
SetMotor();
/************************************************
**
*定时中断延时*
************************************************/
voidTzd(void)interrupt1
TH0=0xfe;
//11.0592
TL0=0x33;
if(CT++==10)
{TIM=1;
CT=0;
步进电机试验二*
**
unsignedcharcodeFFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};
voiddelay(unsignedintt);
voidmotor_ffw()
unsignedchari;
for(i=0;
i<
8;
i++)//一个周期转30度
P1=FFW[i]&
0x1f;
//取数据
delay(5);
//调节转速
}
voiddelay(unsignedintt)
{
unsignedintk;
while(t--)
for(k=0;
k<
60;
k++)
{}
motor_ffw();
步进电机试验三(加减速运行)*
**
*请学员一定要消化掉本例程*
**************************************************************************************/
voiddelay();
//反转
unsignedcharcodeFFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};
//正转
unsignedintK,rate;
/**********************************************************
**
*步进电机驱动*
***********************************************************/
delay();
/********************************************
延时程序
*********************************************/
voiddelay()
unsignedintk,t;
t=rate;
150;
/********************************************************
*
*步进电机运行
*********************************************************/
voidmotor_turn()
unsignedcharx;
rate=0x0a;
x=0x40;
do
//加速
rate--;
}while(rate!
=0x01);
{
//匀速
x--;
}while(x!
//减速
rate++;
=0x0a);
motor_turn();
/**************************************************************************************
步进电机试验四*
*双四拍工作方式:
*AB-BC-CD-DA(即一个脉冲,转7.5度)*
**
*请学员一定要消化掉本例程,*
#include"
unsignedintTIM,CT;
F4=1;
/*************************************
[t1(0.5ms)中断]中断中做PWM输出
------------1000/(0.02ms*250)=200Hz
*************************************/
if(CT++==20)
/***********************************************************************************
步进电机试验五(正转一圈反转一圈)*
**
*通过本例程了解步进马达使用及驱动程序编写*
*
A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*
**
*请学员一定要消化掉本例程*
*
voiddelay(unsignedintt);
unsignedintK;
/**********************************************************************
**
*步进电机驱动*
***********************************************************************/
unsignedintj;
for(j=0;
j<
12;
j++)//转1*n圈
if(K==1)P1=FFW[i]&
if(K==2)P1=FFZ[i]&
/******************************************************
*
*延时程序
********************************************************/
voiddelay(unsignedintt)
80;
K=1;
K=2;