步进电机调速程序.docx

上传人:b****5 文档编号:8102692 上传时间:2023-01-28 格式:DOCX 页数:16 大小:17.27KB
下载 相关 举报
步进电机调速程序.docx_第1页
第1页 / 共16页
步进电机调速程序.docx_第2页
第2页 / 共16页
步进电机调速程序.docx_第3页
第3页 / 共16页
步进电机调速程序.docx_第4页
第4页 / 共16页
步进电机调速程序.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

步进电机调速程序.docx

《步进电机调速程序.docx》由会员分享,可在线阅读,更多相关《步进电机调速程序.docx(16页珍藏版)》请在冰豆网上搜索。

步进电机调速程序.docx

步进电机调速程序

/*************************************************************************************

*标题:

步进电机试验一*

**

*通过本例程了解步进马达使用及驱动程序编写*

*;单双八拍工作方式:

*

*;A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*

*J14短路冒需断开*

*请学员一定要消化掉本例程*

*

**************************************************************************************/

#include"reg52.h"

//Motor

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

///////////////////////////////////////

//步进电机驱动

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

F2=1;

F3=1;

F4=1;

MotorStep=1;

TIM=0;

}

break;

case1:

//AB

if(TIM)

{

F1=0;//0xf3

F2=0;

F3=1;

F4=1;

MotorStep=2;

TIM=0;

}

break;

case2:

//B

if(TIM)

{

F1=1;

F2=0;//0xf2

F3=1;

F4=1;

MotorStep=3;

TIM=0;

}

break;

case3:

//BC

if(TIM)

{

F1=1;

F2=0;//0xf6

F3=0;

F4=1;

MotorStep=4;

TIM=0;

}

break;

case4:

//C

if(TIM)

{

F1=1;

F2=1;//0xf4

F3=0;

F4=1;

MotorStep=5;

TIM=0;

}

break;

case5:

//CD

if(TIM)

{

F1=1;

F2=1;//0xfc

F3=0;

F4=0;

MotorStep=6;

TIM=0;

}

break;

case6:

//D

if(TIM)

{

F1=1;

F2=1;//0xf8

F3=1;

F4=0;

MotorStep=7;

TIM=0;

}

break;

case7:

//DA

if(TIM)

{

F1=0;

F2=1;//0xf9

F3=1;

F4=0;

MotorStep=0;

TIM=0;

}

break;

}

}

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;

}

}

/*************************************************************************************

*标题:

步进电机试验二*

**

*通过本例程了解步进马达使用及驱动程序编写*

*;单双八拍工作方式:

*

*;A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*

*J14短路冒需断开*

*请学员一定要消化掉本例程*

**

**************************************************************************************/

#include"reg52.h"

unsignedcharcodeFFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};

voiddelay(unsignedintt);

//Motor

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

///////////////////////////////////////

//步进电机驱动

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++)

{}

}

}

main()

{

while

(1)

{

motor_ffw();

}

}

/*************************************************************************************

*标题:

步进电机试验三(加减速运行)*

**

*通过本例程了解步进马达使用及驱动程序编写*

*;单双八拍工作方式:

*

*;A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*

**

*请学员一定要消化掉本例程*

**************************************************************************************/

#include"reg52.h"

voiddelay();

//Motor

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

unsignedcharcodeFFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//反转

unsignedcharcodeFFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};//正转

unsignedintK,rate;

/**********************************************************

**

*步进电机驱动*

***********************************************************/

voidmotor_ffw()

{

unsignedchari;

for(i=0;i<8;i++)//一个周期转30度

{

P1=FFW[i]&0x1f;//取数据

delay();//调节转速

}

}

/********************************************

延时程序

*********************************************/

voiddelay()

{

unsignedintk,t;

t=rate;

while(t--)

{

for(k=0;k<150;k++)

{}

}

}

/********************************************************

*

*步进电机运行

*

*********************************************************/

voidmotor_turn()

{

unsignedcharx;

rate=0x0a;

x=0x40;

do

{

motor_ffw();//加速

rate--;

}while(rate!

=0x01);

do

{

motor_ffw();//匀速

x--;

}while(x!

=0x01);

do

{

motor_ffw();//减速

rate++;

}while(rate!

=0x0a);

}

main()

{

while

(1)

{

motor_turn();

}

}

/**************************************************************************************

*标题:

步进电机试验四*

**

*通过本例程了解步进马达使用及驱动程序编写*

*双四拍工作方式:

*

*AB-BC-CD-DA(即一个脉冲,转7.5度)*

**

*请学员一定要消化掉本例程,*

*

**************************************************************************************/

#include"reg52.h"

//Motor

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

///////////////////////////////////////

//步进电机驱动

unsignedcharMotorStep=0;

unsignedintMotorTimer=0;

unsignedintTIM,CT;

voidInitMotor()

{

F1=1;

F2=1;

F3=1;

F4=1;

}

voidSetMotor()

{

//if(Speed==0)return;

switch(MotorStep)

{

case0:

if(TIM)

{

F1=0;

F2=0;

F3=1;

F4=1;

MotorStep=1;

TIM=0;

}

break;

case1:

if(TIM)

{

F1=1;

F2=0;

F3=0;

F4=1;

MotorStep=2;

TIM=0;

}

break;

case2:

if(TIM)

{

F1=1;

F2=1;

F3=0;

F4=0;

MotorStep=3;

TIM=0;

}

break;

case3:

if(TIM)

{

F1=0;

F2=1;

F3=1;

F4=0;

MotorStep=0;

TIM=0;

}

break;

}

}

voidsystem_Ini()

{

TMOD|=0x11;

TH0=0xDC;//11.0592M

TL0=0x00;

IE=0x8A;

TR0=1;

}

main()

{system_Ini();

InitMotor();

while

(1)

{

SetMotor();

}

}

/*************************************

[t1(0.5ms)中断]中断中做PWM输出

------------1000/(0.02ms*250)=200Hz

*************************************/

voidTzd(void)interrupt1

{

TH0=0xfe;//11.0592

TL0=0x33;

if(CT++==20)

{TIM=1;

CT=0;

}

}

/***********************************************************************************

*标题:

步进电机试验五(正转一圈反转一圈)*

**

*通过本例程了解步进马达使用及驱动程序编写*

*;单双八拍工作方式:

*

*;A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*

**

*请学员一定要消化掉本例程*

*

**************************************************************************************/

#include"reg52.h"

voiddelay(unsignedintt);

//Motor

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

unsignedcharcodeFFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//反转

unsignedcharcodeFFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};//正转

unsignedintK;

/**********************************************************************

**

*步进电机驱动*

**

***********************************************************************/

voidmotor_ffw()

{

unsignedchari;

unsignedintj;

for(j=0;j<12;j++)//转1*n圈

{

for(i=0;i<8;i++)//一个周期转30度

{

if(K==1)P1=FFW[i]&0x1f;//取数据

if(K==2)P1=FFZ[i]&0x1f;

delay(5);//调节转速

}

}

}

/******************************************************

*

*延时程序

*

********************************************************/

voiddelay(unsignedintt)

{

unsignedintk;

while(t--)

{

for(k=0;k<80;k++)

{}

}

}

main()

{

while

(1)

{

K=1;

motor_ffw();

K=2;

motor_ffw();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1