您的位置 首页 发布

STC89C52单片机步进电机调试

实现功能:先让实验板上的步进电机从正向加速——匀速—

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

完结功用: 先让试验板上的步进电机从正向加快——匀速——减速,然后让步进电机
中止,再让步进电机从方向加快——匀速——减速,然后中止,然后就这
样不断的循环
试验板类型:BS-XYD-C52
试验称号:步进电机测验试验
编写人: 谢应东
编写日期: 2012-4-30
///////////////////////////////////////////////////////////////////////////
#include

#define uchar unsigned char
#define uint unsigned int

#define MotorData P2 //步进电机操控接口界说

uchar code Phase_Forward[4]={0xf8,0xf4,0xf2,0xf1};//正转 电机导通相序 D-C-B-A
uchar code Phase_Reverse[4]={0xf1,0xf2,0xf4,0xf8};//回转 电机导通相序 A-B-C-D
uchar speed;
///////////////////////////////////////////////////////////////////////////
函数称号:毫秒延时函数
函数功用:完结毫秒级的延时
参数介绍:Delay_MS: 界说需求延时的毫秒的数值
iNumber: 记载Delay_MS的数值,以for句子完结所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实践测得
返回值:
注意事项:本试验是在所用晶振为12M的前提下完结的毫秒延时,本函数是经过循环的形
式完结,所以假如改动了晶振的频率,请做相应的改动
///////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
{
uint iNumber,iValue;
for(iNumber=0;iNumber{
iValue=107;
while(iValue–);
}
}
///////////////////////////////////////////////////////////////////////////
函数称号:Motor_Forward
函数功用:完结步进电机的正向加快——匀速——减速的功用
参数介绍:无
返回值:
注意事项:无
///////////////////////////////////////////////////////////////////////////

void Motor_Forward(void)
{
uint cNumber,cTempValue;
speed=25; //界说步进电机加快的初值
cTempValue=1000; //界说正向加快后匀速的时刻
do
{
for(cNumber=0;cNumber<4;cNumber++) //驱动步进电机正向滚动
{
MotorData=Phase_Forward[cNumber];
DelayMs(speed);//调整步进电机的速度
}
speed–; //正向加快
}while(speed!=3);
do//驱动步进电机匀速滚动
{
for(cNumber=0;cNumber<4;cNumber++)
{
MotorData=Phase_Forward[cNumber];
DelayMs(speed);
}
cTempValue–;
}while(cTempValue!=1);

do //驱动步进电机反向滚动
{
for(cNumber=0;cNumber<4;cNumber++)
{
MotorData=Phase_Forward[cNumber];
DelayMs(speed);
}
speed++; //调整步进电机的速度
}while(speed!=25);
}
///////////////////////////////////////////////////////////////////////////

函数称号:Motor_Reverse
函数功用:完结步进电机的方向加快——匀速——减速的功用
参数介绍:无
返回值:
注意事项:无
///////////////////////////////////////////////////////////////////////////
void Motor_Reverse(void)
{
uint cNumber,cTempValue;
speed=25; //界说步进电机加快的初始值
cTempValue=1000; //界说步进电机匀速的时刻
do //完结步进的电机的方向加快
{
for(cNumber=0;cNumber<4;cNumber++) //驱动步进电机
{
MotorData=Phase_Reverse[cNumber];
DelayMs(speed); //调整步进电机的速度
}
speed–;
}while(speed!=3);
do //完结步进电机的匀速进程
{
for(cNumber=0;cNumber<4;cNumber++)
{
MotorData=Phase_Reverse[cNumber];
DelayMs(speed);
}
cTempValue–;
}while(cTempValue!=1);

do //完结步进电机的反向减速进程
{
for(cNumber=0;cNumber<4;cNumber++)
{
MotorData=Phase_Reverse[cNumber];
DelayMs(speed); //调整步进电机的速度
}
speed++;
}while(speed!=25);
}
///////////////////////////////////////////////////////////////////////////
函数称号:MotorStop
函数功用:让步进电机中止滚动,然后再延时0.5秒
参数介绍:无
返回值:
注意事项:无
///////////////////////////////////////////////////////////////////////////
void Motor_Stop(void)
{
MotorData=0xf0;
DelayMs(500);
}
///////////////////////////////////////////////////////////////////////////
函数称号:主函数
函数功用:完结点亮一个发光二级管,延时0.3秒,然后平息0.3秒,这样顺次循环
参数介绍:无
返回值:
注意事项:无
///////////////////////////////////////////////////////////////////////////
void main(void)
{
DelayMs(50);//等候体系安稳
while(1)
{
Motor_Forward();//步进电机正向加快——匀速——减速的函数
Motor_Stop(); //步进电机中止滚动
Motor_Reverse();//步进电机反向加快——匀速——减速的函数
Motor_Stop();//步进电机中止滚动
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/262853.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部