步进电机

无刷电机
电话:0755-29030191
当前位置:首页 > 新闻中心 > 行业新闻 >
新闻中心
产品中心
联系我们

深圳市东么川伺服控制技术有限公司

电话:0755-29030191

邮箱:609708814@qq.com

地址:深圳市龙华区雪岗北路清湖动力园A6栋二楼A区

步进电机控制之一:查询实现正反转控制


步进电机控制之一:查询实现正反转控制

步进电机控制之一:查询实现正反转控制

/*设计思路:采用按键对标志位flag1、flag2的

奇偶性判断不同的键值含义,按键要加松手检测

功能,否则会执行多次无法区别其状态;步进电

机采用四相四拍的工作方式;Proteus不支持八拍

工作模式,该程序在Keil5下运行,低版本需修改

头文件为:#include<reg51.h>*/

#include <STC89C5xRC.H>

#define uint unsigned int

#define uchar unsigned char

uchar code num[]={0x01,0x02,0x04,0x08};

sbit k1=P2^0;//启停控制

sbit k2=P2^2;//正反转控制

bit flag1,flag2;

void delay_ms(uint z);

bit k1_scan();

bit k2_scan();

void motorzz();

void motorfz();

void motorstop();

void main()

{

while(1)

{

if(k1_scan()==0)

motorstop();

else if(k2_scan()==0)

motorzz();

else

motorfz();

}

}

void delay_ms(uint z)

{

uchar i;

while(z--)

for(i=0;i<120;i++);

}

bit k1_scan()

{

if(k1==0)

{

delay_ms(5);

if(k1==0)

{

flag1=~flag1;

while(!k1);

}

}

return flag1;

}

bit k2_scan()

{

if(k2==0)

{

delay_ms(5);

if(k2==0)

{

flag2=~flag2;

while(!k2);

}

}

return flag2;

}

void motorstop()

{

P0=0X00;

}

void motorzz()

{

uchar i;

for(i=0;i<4;i++)

{

P0=num[i];

delay_ms(20);

}

}

void motorfz()

{

char i;

/*注意:此处定义为有符号字符型,如果定义为

无符号字符型,i=0,i-1=255,i=255,for循

环依旧成立,而num[255]是一个未知数*/

for(i=3;i>=0;i--)

{

P0=num[i];

delay_ms(20);

}

}

/*以上motorfz()函数又等价于

void motorfz()

{

  uchar i;

  for(i=4;i>0;i--)

  {

P0=num[i-1];

delay_ms(20);   

  }

}

*/

 


    热门产品:三相步进电机



    热门产品:三相步进驱动器



    热门产品:直流无刷驱动器