收到[ halibote523]邮寄过来的Easykit已经有十几天了,可是这几天一直加班,今天终于抽出时间开始写试用手记了。
步进电机驱动原理图:
演示图片:
直接上程序:
#include "mb95200.h"
#define PHASEPORT IO_PDR0.byte //引脚定义
#define PHASE_DIRE IO_DDR0.byte
unsigned char FFW[8]={0xF1,0xF3,0xF2,0xF6,0xF4,0xFC,0xF8,0xF9};
unsigned char REV[8]={0xF9,0xF8,0xFC,0xF4,0xF6,0xF2,0xF3,0xF1};
/*****************************************************************/
/*****************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 125; i++);
}
}
/*****************************************************************/
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void motor_ffw()
{
unsigned char i;
for (i=0; i<8; i++)
{
PHASEPORT = FFW[i]; //取数据
DELAY_MS(5); //调节转速
}
}
/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
void motor_rev()
{
unsigned char i;
for (i=0; i<8; i++)
{
PHASEPORT = REV[i]; //取数据
DELAY_MS(5); //调节转速
}
}
/********************************************************/
/*
/* 主程序
/*
*********************************************************/
main()
{
unsigned char i,j;
PHASE_DIRE=0x0F; //端口初始化
PHASEPORT=0xF0;
while(1)
{
for (i=0; i<5; i++) {
motor_ffw(); //电机正转
}
DELAY_MS(500); //中间停顿
for (j=0; j<5; j++) {
motor_rev(); //电机反转
}
DELAY_MS(500); //中间停顿
}
}
噢!差点忘了还有演示试频:http://v.youku.com/v_show/id_XMjMwNTc0OTI4.html