1、CW(正转信号),CCW(反转信号),都是脉冲信号,脉冲频率决定速度大小。
2、CW(速度信号,为脉冲),DIR(方向信号,为电平)
#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 steptabt[]={0x08,0,0x02,0x06,0x04,0x05,0x01,0x09};
uchar steptabf[]={0,0x06,0x05,0x09,0,0x06,0x05,0x09};
uint freq,ftim;
uchar num;
sbit keyqt=P1^0;
sbit keyfx=P1^1;
void delay(){
uchar i,j;
for(i=0;i<30;i++)
for(j=0;j<120;j++);
}
void t0isr() interrupt 1
{
TH0=(65536-ftim)/256;
TL0=(65536-ftim)%256;
P0=steptabt[num]; //半步
// P0=steptabf[num]; //全步
if(keyfx==1)
{
num++;
num%=8;
}
else
{
if(num==0)num=7;
else num--;
}
}
main()
{
TMOD=0x01;
freq=400; //转动频率,你可以自己改变
ftim=1000000/2/freq;
TH0=(65536-ftim)/256;
TL0=(65536-ftim)%256;
ET0=1;
EA=1;
while(1)
{
if(keyqt==0)
{
delay();
if(keyqt==0)TR0=~TR0;
}
}
}
用三个L298n便可以控制六台步进电机了!每个L298n均可以驱动两台步进电机。你去网上搜一下L298N芯片,有好多经典电路图。大多数是一个L298N控制两个步进电机,另外四个类推就可以了
大概就是这个样子了
#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();
}
}
以上就是关于stc89c52单片机怎么联接驱动器控制步进电机图全部的内容,包括:stc89c52单片机怎么联接驱动器控制步进电机图、STC单片机89C52RC .步进电机驱动板型号是ULN2003AN 。步进电机是四相五线的,型号是28BYJ-48 .、求STC89C52RC单片机控制直线步进电机的例子,是用驱动器控制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)