步进电机

步进驱动器
电话:0755-29030191
当前位置:首页>>新闻中心>>行业新闻
新闻中心
产品中心
联系我们

电话:0755-29030191

邮箱:983847136@qq.com

地址:深圳市龙华区东环一路天汇大厦D栋306房

步进电机控制之启停正反转与调速


步进电机控制之启停正反转与调速

步进电机控制之启停正反转与调速

/*设计说明:步进电机采用四相四拍的工作方

式;Proteus不支持八拍工作模式,该程序在

Keil5下运行,低版本需修改头文件为:

#include*/

/*调试过程:按加速按键k1矩形波周期变短,

即输入步进电机绕组的脉冲变快,电机加速。*/

/*设计思路:(1)采用对标志位flag1、flag2

的奇偶性判断启停与正反转;(2)根据进入定

时器中断的时间长短实现加减速调节;(3)中

断时间长短由按键在中断外对定时时间加减实现;

(4)根据进入定时器中断的次数实现对步进电机

单四拍节拍设计。*/

#include

#define uint unsigned int

#define uchar unsigned char

sbit k1=P3^4;//加速

sbit k2=P3^5;//减速

bit flag1,flag2;

uchar code tab1[]={0X01,0X02,0X04,0X08};

uchar code tab2[]={0X08,0X04,0X02,0X01};

uint a=3000;

uchar j;

void init_t0();

void init_exint();

void delay_ms(uint z);

void key_scan();

void main()

{

init_t0();

init_exint();

while(1)

key_scan();

}

void init_t0()

{

TMOD=0X01;

TH0=(65536-a)/256;

TL0=(65536-a)%256;

EA=1;

ET0=1;

TR0=1;

}

void init_exint()

{

EA=1;

EX0=1;

EX1=1;

IT0=1;

IT1=1;

}

void delay_ms(uint z)

{

 uchar i;

while(z--)

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

}

void key_scan()

{

if(k1==0)

{

delay_ms(5);

if(k1==0)

{

if(a>=1000)

{

a=a-200;

while(!k1);

}

}

}

if(k2==0)

{

delay_ms(5);

if(k2==0)

{

if(a<=5000)

{

a=a+200;

while(!k2);

}

}

}

}

void exint0() interrupt 0

{

flag1=~flag1;

}

void exint1() interrupt 2

{

flag2=~flag2;

}

void timer() interrupt 1

{

TR0=0;

TH0=(65536-a)/256;

TL0=(65536-a)%256;

if(flag1==1)

{

if(flag2==0)

P0=tab1[j];

else

P0=tab2[j];

}

j++;

if(j==4)

j=0;

TR0=1;

}



    产品推荐:两相步进电机



    产品推荐:无刷电机



    产品推荐:两相步进驱动器



    产品推荐:直流无刷驱动器