标题:
51单片机用锁存器控制多个步进电机的运动,代码仿真如下,可能是锁存器程序出问题...
[打印本页]
作者:
xmczl
时间:
2018-8-7 20:43
标题:
51单片机用锁存器控制多个步进电机的运动,代码仿真如下,可能是锁存器程序出问题...
QQ图片20180807203826.png
(23.06 KB, 下载次数: 42)
下载附件
proteus
2018-8-7 20:39 上传
单片机源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code REW[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit D40=P2^6;
sbit D50=P2^7;
void Delayms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++)
{
;
}
}
}
void setp_motor1_ffw(uchar n)//设置转动的圈数
{
uchar i,j;
for(i=0;i<5*n;i++)//一个八拍72度,旋转一圈要5个八拍
{
for (j=0;j<8;j++)
{
if(K3==0)break;
P1=FFW[j];
Delayms(100);//两个脉冲之间的长短,用来改变电机的转速
}
}
}
void setp_motor2_ffw(uchar n)//设置转动的圈数
{
uchar i,j;
for(i=0;i<5*n;i++)//一个八拍72度,旋转一圈要5个八拍
{
for (j=0;j<8;j++)
{
if(K3==0)break;
P1=FFW[j];
Delayms(100);//两个脉冲之间的长短,用来改变电机的转速
}
}
}
void setp_motor1_rew(uchar n)
{
uchar i,j;
for(i=0;i<5*n;i++)
{
for (j=0;j<8;j++)
{
if(K3==0)break;
P1=REW[j];
Delayms(50);
}
}
}
void setp_motor2_rew(uchar n)
{
uchar i,j;
for(i=0;i<5*n;i++)
{
for (j=0;j<8;j++)
{
if(K3==0)break;
P1=REW[j];
Delayms(50);
}
}
}
void main()
{
uchar n=5;
while(1)
{
if(K1==0)
{
D40=1;
setp_motor1_ffw(n);
D40=0;
D50=1;
P0=0x00;
setp_motor2_rew(n);
D50=0;
}
else if(K2==0)
{
D40=1;
setp_motor1_rew(n);
D40=0;
D50=1;
P0=0x00;
setp_motor2_ffw(n);
D50=0;
}
else
{
P1=0x00;
}
}
}
复制代码
作者:
835228299
时间:
2022-4-6 16:51
请问 有没有控制8个步进电机的 有没有原理图 能不能分享给大家 非常感谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1