STC单片机89C52RC .步进电机驱动板型号是ULN2003AN 。步进电机是四相五线的,型号是28BYJ-48 .

STC单片机89C52RC .步进电机驱动板型号是ULN2003AN 。步进电机是四相五线的,型号是28BYJ-48 .,第1张

#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线的步进电机电路,需要外接两个开关控制步进电机正反转的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9804404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存