锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

步进电机驱动程序

时间:2024-05-17 18:37:11

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

#defineCLK_WISE0//顺时针方向转动

#defineINVERSE1//逆时针方向转动

bitdirection=CLK_WISE;/***方向标志,取值为CLK_WISEINVERSE*/

staticucharspeedcount=0;//加速标志,越大转速越快,最大到7,然后回归到0,循环。

//程序中可以依据它来改变占空比

ucharstep[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};//8个步

ucharth_0[8]={0x5D,0x85,0x9E,0xAE,0xBA,0xC2,0xC9,0xCF};//8个定时器值,高8

uchartl_0[8]={0x3D,0xEE,0x58,0x9E,0x3E,0xF7,0xBF,0x2C};//8个定时器值,低8

intstep_i=0;//当前处于哪一步

/***定时器t0***/

voidtime0(void)interrupt1using1

{

P2=step[step_i];//输出控制信号

if(direction==CLK_WISE) //顺时针转

step_i++;

else

step_i--;//逆时针转

if(step_i>7)//顺时针到最后一步,需要调整到第一步

step_i=0;

if(step_i<0)//顺时针到第一步,需要调整到最后一步

step_i=7;

TH0=th_0[speedcount];//根据当前速度设定定时器初值

TL0=tl_0[speedcount];

}

/****改变转向标志*****/

voidint1_srv(void)interrupt2using2

{

if(I1==0)

{

while(!INT1);

direction=!direction;

}

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章