#include<reg52h>
//#include "reg52h"
unsigned char code RUN[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //步进电机相序表
void delay(unsigned int t);
//
//步进电机驱动
void motor_ffw(unsigned int n) //正转函数
{
unsigned char i,j,s,x;
for(x=0;x<n;x++)
{
for(s=0;s<43;s++)
{ for(j=0;j<12;j++)
{
for (i=0; i<8; i++)
{
P1 = RUN[i];
delay(5);
}
} }
}
}
//
void motor_ffm(unsigned int n) //反转函数
{
unsigned char i,j,s,x;
for(x=0;x<n;x++)
{
for(s=0;s<43;s++)
{ for(j=0;j<12;j++)
{
for (i=8; i>0; i--)
{
P1 = RUN[i];
delay(5);
}
}
}
}
}
/延时函数/
void delay(unsigned int t)
{
unsigned int k;
while(t--)
{
for(k=0; k<60; k++)//用for的空循环延长程序的执行时间
{ }
}
}
//
void main()
{
motor_ffw(1); //正转 1r
P1=0x00;
delay(500);
motor_ffm(2); //反转 2r
P1=0x00;
delay(500);
while(1)
{}
}
(这个型号步进电机自带减速器,上面的程序角度输出可能不太准确!
)前两天刚刚写的文件,你编译成hex文件烧写进去就好了!我今年大一,自学单片机!欢迎一起交流!qq810817901
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
uchar stepd[]={0x11,0x23,0x22,0x66,0x44,0xcc,0x88,0x99};
uchar num=0;
uint t=0,sec=0;
void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P2=stepd[num];
num++;
num%=8;
}
void t1isr() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t++;
if(t>=20)
{
t=0;
sec++;
if(sec>=30)
{
sec=0;
TR0=0; //时间到,点击停止。
}
}
}
main()
{
TMOD=0x11;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
ET1=1;
ET0=1;
EA=1;
while(1);
}
前面的按键定义你自己写啊,后面是程序,四步循环的。看一下你的接线顺序,这个程序按A,A-,B,B-接的线
uchar code motoz[4]={0x01,0x04,0x02,0x08}; //步进电机正转顺序编码,用一个口驱动
uchar code motof[4]={0x08,0x02,0x04,0x01}; //步进电机反转顺序编码
#define MOTOR P3
void main()
{
if(a1==0) //正转按键按下
delay(5); //防抖
if(a1==0)
{
for(i=0;i<4;i++) //4步一个循环
{
MOTOR=motoz[i];
delay(800);
while(!a1); //等等松手
}
if(a2==0) //反转按键按下
delay(5); //防抖
if(a2==0)
{
for(i=0;i<4;i++) //4步一个循环
{
MOTOR=motof[i];
delay(800);
while(!a1); //等等松手
}
}
你是驱动芯片么?如果是的,那你可以使用PCA高速脉冲来控制,比如,你开始可以频率是400hz的频率启动,然后再定时器里,每隔50ms,然频率值增加50hz,当达到你所需要的最大的PWM频率时,就不再增加不就可以了嘛。这样就是你所需要的最大转速了啊。
单片机通过软件来控制步进电机,更好地挖掘出了电机的潜力。因此,用单片机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋。
主要分类
步进电机从其结构形式上可分为反应式步进电机(Variable Reluctance,VR)、永磁式步进电机Permanent Magnet,PM)、混合式步进电机(Hybrid Stepping
#include<reg52h>
#define uchar unsigned signed
sbit jia_key=P3^6;
sbit jian_key=P3^7;
sbit zf_key=P3^5;
bit flag=0;
uchar codetable[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01};
uchar num,qidong,PWM,table_begin;
void delay(uchar 1)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void key()
{
if(jia_key==0)
{
delay(5);
if(jia_key==0)
{
num++;
if(num==4)num=3;
while(jia_key==0);
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
if(num!=0)
num--;
else
num=0;
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);
if(zf_key==0)
{
flag=-flag;
while(zf_key==0);
}
}
}
void qidong()
{
uchar i,j;
switch(num)
{
case 0:PWM=5;break;
case 1:PWM=4;break;
case 2:PWM=3;break;
case 3:PWM=2;break;
}
if(flag==0)
table_begin=0;
else
table_begin=4;
for(i=table_begin;i<4+table_begin;i++)
{
P1=table[i];
for(j=0;j<PWM;j++)
delay(10);
}
}
void main()
{
while(1)
{
key();
qidong();
}
}
以上就是关于STC单片机89C52RC .步进电机驱动板型号是ULN2003AN 。步进电机是四相五线的,型号是28BYJ-48 .全部的内容,包括:STC单片机89C52RC .步进电机驱动板型号是ULN2003AN 。步进电机是四相五线的,型号是28BYJ-48 .、用stc98c51单片机通过L298N控制两个直流电机,当通电后,两个电机一起正转30秒然后停止。、用单片机 STC11F02E和驱动L298N 控制的2相6线的步进电机电路,需要外接两个开关控制步进电机正反转的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)