欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機控制步進電機的轉動,加減速,停止,反轉
[打印本頁]
作者:
xueren
時間:
2013-7-19 02:23
標題:
51單片機控制步進電機的轉動,加減速,停止,反轉
51單片機控制步進電機的轉動,加減速,停止,反轉,單雙八拍工作方式:A-AB-B-BC-C-CD-D-DA (即一個脈沖,轉 3.75 度)
#include <reg52.h>
sbit inc=P3^2;
sbit dec=P3^3;
sbit zhzhd=P3^6;
sbit fazhd=P3^7;
bit flag=1;
unsigned char t=0x00; //表正反速度
void delay(unsigned int t);
void motor_ffw();
unsigned char code led7code[]=
{0x81,0xe7,0x92,0xc2,0xe4,0xc8,0x88,0xe3,0x00,0xc0};
unsigned int num=0;
unsigned char code FFW[8]={0x40,0x60,0x20,0x30,0x10,0x18,0x08,0x48};
unsigned char code FFZ[8]={0x48,0x08,0x18,0x10,0x30,0x20,0x60,0x40}; //反轉
void main()
{
EA=1;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
TMOD=0x06;
TL0=0xff;
TH0=0xff;
TR0=1;
ET0=1;
P3=0x3f;
P0=led7code[num%10];
while(1)
{
motor_ffw();
}
}
void motor_ffw() /* 步進電機驅動*/ //
{
unsigned char i;
int j;
while(1)
{
for(j=0;j<12;j++) //12個周期轉一圈
{ for (i=0; i<8; i++) //一個周期轉30度
{
if(flag==1)
P2 = FFW[i]; //取數據
else
P2 = FFZ[i];
delay(t); //t調節轉速
}
}
}
}
void int0(void) interrupt 0
{
EX0=0;
delay(10);
if(inc==0)
{
num++;
P0=led7code[num%10];
if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
else if (num%10==0){zhzhd=0;fazhd=0;}
else {zhzhd=1;fazhd=0;}
switch(num%10)
{
case 0:t=0x00;break;
case 1:t=0x12;break;
case 2:t=0x11;break;
case 3:t=0x10;break;
case 4:t=0x09;break;
case 5:t=0x08;break;
case 6:t=0x07;break;
case 7:t=0x06;break;
case 8:t=0x05;break;
case 9:t=0x04;break;
}
}
while(!inc);
EX0=1;
}
void int1(void) interrupt 2
{
EX1=0;
delay(10);
if(dec==0)
{
num--;
if(num==65535)num=65529;
P0=led7code[num%10];
if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
else if (num%10==0){zhzhd=0;fazhd=0;}
else {zhzhd=1;fazhd=0;}
if(num==65535)num=65529;
switch(num%10)
{
case 0:t=0x00;break;
case 1:t=0x12;break;
case 2:t=0x11;break;
case 3:t=0x10;break;
case 4:t=0x09;break;
case 5:t=0x08;break;
case 6:t=0x07;break;
case 7:t=0x06;break;
case 8:t=0x05;break;
case 9:t=0x04;break;
}
}
while(!dec);
EX1=1;
}
void huanx(void) interrupt 1
{
ET0=0;
TR0=0;
delay(10);
if(P3^4==0)
{
if(flag==1) {flag = 0;zhzhd=1;delay(500);fazhd=0;}
else {flag = 1;fazhd=1;delay(500);zhzhd=0;}
}
while(!(P3^4));
ET0=1;
TR0=1;
}
// 延時程序
void delay(unsigned int t)
{
unsigned int k;
while(t--)
{
for(k=0; k<80; k++);
}
}
復制代碼
作者:
朗朗繁星
時間:
2013-7-22 09:26
樓主用的是仿真還是開發板的
作者:
星期天
時間:
2013-7-25 14:43
昨天用的28BYJ-48電機做了一個實驗,四相八拍的,但轉速特別慢,一分鐘最多十圈的樣子,問下樓主這款電機額定轉速就是這么多么?
作者:
lxa0
時間:
2015-3-31 14:43
樓主有匯編的嗎?
沒學過c
看不懂呀
作者:
lxa0
時間:
2015-3-31 14:44
星期天 發表于 2013-7-25 14:43
**** 作者被禁止或刪除 內容自動屏蔽 ****
我也買了一個28BYJ-48電機
正在學習呢
能把你的代碼發來看看嗎?
謝謝
作者:
成森林
時間:
2015-4-8 10:12
學習來了,正在學習呢
作者:
6ningning
時間:
2015-4-12 14:24
學習了。謝謝。
作者:
nieli12345
時間:
2015-9-20 16:39
漂亮 這就是我想要的
作者:
qxuem
時間:
2016-10-20 20:41
請問上面的數組是什么意思呢
作者:
sxxy
時間:
2018-5-11 00:28
請問樓主,點觸式限位開關怎樣接在單片機上實現往復運動哦?
作者:
99312312
時間:
2018-5-20 21:41
初學者在此謝過
作者:
宇明先生
時間:
2018-5-21 16:55
代碼先復制去試試了
作者:
sfgccy
時間:
2018-5-21 21:15
開發板的,不錯,多謝樓主
作者:
賀燁
時間:
2018-5-21 21:21
強 6666666666
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1