步进电机驱动程序实例

#include <AT89X51.h>

static unsigned int count; //计数

static int step_index; //步进索引数,步进索引数,值为0-7

static bit turn; //步进电机转动方向

static bit stop_flag; //步进电机停止标志

static int speedlevel; //步进电机转速参数,步进电机转速参数,数值越大速度越慢,数值越大速度越慢,最小值为1,速度最快 static int spcount; //步进电机转速参数计数

void delay(unsigned int endcount); //延时函数,延时函数,延时为endcount*0.5毫秒

void gorun(); //步进电机控制步进函数

void main(void)

{

count = 0;

step_index = 0;

spcount = 0;

stop_flag = 0;

P2_4 = 0;

P2_5= 0;

P2_6 = 0;

P2_7 = 0;

EA = 1; //允许CPU中断

TMOD = 0x11; //设定时器0和1为16位模式1

ET0 = 1; //定时器0中断允许

TH0 = 0xFE;

TL0 = 0x0C; //设定时每隔0.5ms中断一次

TR0 = 1; //开始计数

turn = 0;

speedlevel = 2; //先以低速启动

delay(10000);

speedlevel = 1; //再回到正常速度。再回到正常速度。(根据步进电机特点)

do{

speedlevel = 2; //主程序测试循环:主程序测试循环:先低速启动->常速->停止

delay(10000);

speedlevel = 1;

delay(10000);

stop_flag=1;

delay(10000);

stop_flag=0;

}while(1);

}

//定时器0中断处理

void timeint(void) interrupt 1

{

TH0=0xFE;

TL0=0x0C; //设定时每隔0.5ms中断一次

count++;

spcount--;

if(spcount<=0) //驱动脉冲信号周期判断

{

步进电机驱动程序实例相关文档

最新文档

返回顶部