单片机控制步进电机 单片机负载太大 步进电机抖动

我用下面的程序控制步进电机按照图中的时序运动
两个计时器 一个计时1.3ms 一个计时10ms 交替中断
结果单片机负载太大 求教有什么办法能简化
#include "reg51.h"
sbit P13=P1^3;
sbit P12=P1^2;
sbit P20=P2^0;
sbit P17=P1^7;
unsigned char b=0,c,*q,
done3[14]={0x02,0x03,0x01,0x05,0x04,0x06,0x00,0x01,0x03,0x02,0x06,0x04,0x05,0x00};
/*******初始化函数********/
void initTimer(void)
{
q=done3;
TMOD=0x11;
TH0=(65536-1300)/256;
TL0=(65536-1300)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
}
/*******初始化函数********/
/*******中断处理函数********/
void timer0(void) interrupt 1 using 1
{
b++;
if (b==6) b=0;
TH0=(65536-1300)/256;
TL0=(65536-1300)%256;
//add your code here.

TR0=0;
ET0=0;
}
void timer1(void) interrupt 3 using 1
{
b++;
if (b==6) b=0;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
//add your code here.
TR0=1;
ET0=1;
}
/*******中断处理函数********/
/*******延时T us函数********/
void delay(unsigned char t)
{
while(--t);
}
/*******延时T us函数********/
void main(void)
{
initTimer();
P1=0x00;
//while (!P17) {delay(100);}
/**********至0开始运动********/
/*********开始计时*********/
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
while(1)
{
c=*(q+b);
P1=c;
}
}

基于模糊PID直流力矩电机的速度控制。基于根据基于该误差信号的二维模糊PID控制算法的设计模糊控制和PID控制结合模式的分析

达到阈值来确定何时模糊控制和PID之间切换控制。使用编码器,80196KC单片机,16位D / A转换器和DC功率和扭矩加上稳定速度模糊PID控制系统构成,通过将测得的数据的标准PID和模糊PID的分析和比较的控制算法的直流扭矩马达表明模糊PID控制可以无过冲的输出来实现,调节时间小于标准的PID控制调节时间,稳态误差小于万分之四。追问

不明白 和步进电机有什么关系

温馨提示:答案为网友推荐,仅供参考
相似回答