欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求指導 四相步進電機,如何在原來的基礎上加上步數控制的設計思路和方法?
[打印本頁]
作者:
巧克力汪
時間:
2021-5-28 15:19
標題:
求指導 四相步進電機,如何在原來的基礎上加上步數控制的設計思路和方法?
求大神指導 已經能夠實現方式選擇,正反轉,簡單的加減速,步數顯示,但仍需對步數控制的設計,例如默認初始步數為10,則通過按鍵可以加減步數,然后步進電機運行指定步數后停下。由于篇幅限制,仿真及程序在附件中
51hei.png
(17.43 KB, 下載次數: 38)
下載附件
2021-5-28 15:48 上傳
#include<reg51.h>
#include<stdio.h>
void delay1(void);
void delay2(void);
void display(int);
int bs=0;
int cishu;
main()
{
char a,b,c,d,j,*q,
done1[8]=
{0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},
done2[8]=
{0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00},
done3[14]=
{0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00};
P3=0x20;
delay1();
L:a=P3;
while(!(a&0x08))
{
P3=0x20;
a=P3;
delay1();
}
if(a&0x01)
q=done1;
if(a&0x02)
q=done2;
if(a&0x04)
q=done3;
if(a&0x20)
cishu=5;
else cishu=50;
if(a&0x10)
{
P3=0x40;
b=0;
}
else
{
P3=0x80;
if(a&0x04)
b=7;
else b=4;
}
d=b;
while(1)
{
c=*(q+b);
if(c==0)
b=d;
else
{
P1=c;
b++;
bs++;
display(bs);
j=a;
a=P3;
if(a!=j)
{
if(!(a&0x08))
bs=0;
goto L;
}
}
}
}
void delay1()
{
int i,j;
for(i=0;i<200;i++)
for(j=0;j<300;j++);
}
void display(int n)
{
unsigned char tab[10]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
unsigned char i,k,t,num[4];
num[0]=n%10;
num[1]=(n/10)%10;
num[2]=(n/100)%10;
num[3]=(n/1000)%10;
for(t=0;t<cishu;t++)
{
k=0x08;
for(i=0;i<4;i++)
{
P2=k;
P0=~(tab[num[i]]);
k=k>>1;
delay2();
}
}
}
void delay2()
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<60;j++);
}
復制代碼
單片機綜合作業.rar
(66.55 KB, 下載次數: 6)
2021-5-28 15:19 上傳
點擊文件名下載附件
作者:
glinfei
時間:
2021-5-28 17:23
while(1)
{
c=*(q+b);
if(c==0)
b=d;
else
{
P1=c;
b++;
bs++;
display(bs);
j=a;
a=P3;
if(a!=j)
{
if(!(a&0x08))
bs=0;
goto L;
}
}
}
你的while循環幾次,就轉幾步的,你現在情況是有按鍵就停轉,假如變量roteNum 保存轉幾步,你加一句在 if(a!=j)的前面就行了 : if(roteNum--) goto L; (前面怎么給roteNum 賦值我就不管了,還有我不贊成你程序的寫法)
作者:
小貓電子
時間:
2021-5-28 18:36
有一個步進電機控制軟件,主要功能是:
1、可以分別控制3個步進電機運轉
2、每個步進電機,轉動一圈是 2048 步
3、三個步進可以任意輸入不同步數運行
4、步進電機運行時,可以實時讀取當前電機位置
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1