请教行家,主函数一个循环,步进电机转了多少圈,电机转动的时间又是多少?怎么计算的?谢谢!
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code up_data[8]={ 0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8}; //正转
uchar rate;
/********以下是延时函数********/
void Delay(uint speed)
{
uint i,j;
for(i=speed;i>0;i--)
for(j=110;j>0;j--); // 延时时间为1ms
}
/********以下是步进电机转动函数********/
void motor_up()
{
uchar i;
for (i=0; i<8; i++) //采用35步进电机(2相4线,四拍步距角1.8度)
{
P1 = up_data[i]; //取正转数据
Delay(12); //调节转速
}
}
/********以下是步进电机加速、匀速、减速运行函数********/
void motor_turnb()
{
uint count; //转动次数计数器
rate=20; //速度分8档
count=200;
do
{
motor_up(); //加速
rate--;
}
while(rate!=0x01);
do
{
motor_up(); //匀速
count--;
}
while(count!=0x01);
do
{
motor_up(); //减速
rate++;
}
while(rate!=0x0a);
}
/********以下是主函数********/
main()
{
while(1)
{
P1=0xff;
motor_turnb();
Delay(1000); //延时1s
}
}
|