欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機控制步進電機的轉動,加減速,停止,反轉 [打印本頁]

作者: xueren    時間: 2013-7-19 02:23
標題: 51單片機控制步進電機的轉動,加減速,停止,反轉
51單片機控制步進電機的轉動,加減速,停止,反轉,單雙八拍工作方式:A-AB-B-BC-C-CD-D-DA (即一個脈沖,轉 3.75 度)
  1. #include <reg52.h>
  2. sbit inc=P3^2;
  3. sbit dec=P3^3;
  4. sbit zhzhd=P3^6;
  5. sbit fazhd=P3^7;

  6. bit flag=1;
  7. unsigned char t=0x00; //表正反速度
  8. void delay(unsigned int t);
  9. void  motor_ffw();

  10. unsigned char code led7code[]=
  11. {0x81,0xe7,0x92,0xc2,0xe4,0xc8,0x88,0xe3,0x00,0xc0};
  12. unsigned int num=0;

  13. unsigned char code FFW[8]={0x40,0x60,0x20,0x30,0x10,0x18,0x08,0x48};
  14. unsigned char code FFZ[8]={0x48,0x08,0x18,0x10,0x30,0x20,0x60,0x40};  //反轉

  15. void main()
  16. {
  17.      
  18.     EA=1;
  19.     IT0=1;
  20.     EX0=1;
  21.     IT1=1;
  22.     EX1=1;

  23.     TMOD=0x06;
  24.     TL0=0xff;
  25.     TH0=0xff;
  26.     TR0=1;
  27.     ET0=1;

  28.     P3=0x3f;
  29.     P0=led7code[num%10];
  30.     while(1)
  31.     {
  32.      motor_ffw();
  33.     }

  34. }

  35. void  motor_ffw()  /* 步進電機驅動*/ //
  36. {
  37.    unsigned char i;
  38.    int j;
  39.         while(1)
  40.         {
  41.             
  42.             for(j=0;j<12;j++)     //12個周期轉一圈
  43.            {    for (i=0; i<8; i++)       //一個周期轉30度
  44.                  {  
  45.             if(flag==1)
  46.                 P2 = FFW[i];  //取數據
  47.              else
  48.                 P2 = FFZ[i];
  49.                delay(t);                   //t調節轉速
  50.                 }
  51.             }
  52.         }
  53. }

  54. void int0(void) interrupt 0
  55. {
  56.     EX0=0;
  57.     delay(10);
  58.     if(inc==0)
  59.     {
  60.     num++;
  61.      
  62.     P0=led7code[num%10];
  63.     if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
  64.     else if (num%10==0){zhzhd=0;fazhd=0;}
  65.     else {zhzhd=1;fazhd=0;}
  66.      
  67.     switch(num%10)
  68.     {
  69.         case 0:t=0x00;break;
  70.         case 1:t=0x12;break;
  71.         case 2:t=0x11;break;
  72.         case 3:t=0x10;break;
  73.         case 4:t=0x09;break;
  74.         case 5:t=0x08;break;
  75.         case 6:t=0x07;break;
  76.         case 7:t=0x06;break;
  77.         case 8:t=0x05;break;
  78.         case 9:t=0x04;break;
  79.      
  80.     }
  81.      
  82.     }
  83.     while(!inc);
  84.     EX0=1;
  85. }

  86. void int1(void) interrupt 2
  87. {
  88.     EX1=0;
  89.     delay(10);
  90.     if(dec==0)
  91.     {
  92.     num--;
  93.     if(num==65535)num=65529;
  94.     P0=led7code[num%10];
  95.     if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
  96.     else if (num%10==0){zhzhd=0;fazhd=0;}
  97.     else {zhzhd=1;fazhd=0;}

  98.      
  99.     if(num==65535)num=65529;
  100.     switch(num%10)
  101.     {
  102.         case 0:t=0x00;break;
  103.         case 1:t=0x12;break;
  104.         case 2:t=0x11;break;
  105.         case 3:t=0x10;break;
  106.         case 4:t=0x09;break;
  107.         case 5:t=0x08;break;
  108.         case 6:t=0x07;break;
  109.         case 7:t=0x06;break;
  110.         case 8:t=0x05;break;
  111.         case 9:t=0x04;break;
  112.      
  113.     }
  114.     }
  115.     while(!dec);
  116.     EX1=1;
  117. }


  118. void huanx(void) interrupt 1
  119. {   
  120.     ET0=0;
  121.     TR0=0;
  122.     delay(10);
  123.     if(P3^4==0)
  124.     {
  125.     if(flag==1) {flag = 0;zhzhd=1;delay(500);fazhd=0;}
  126.     else  {flag = 1;fazhd=1;delay(500);zhzhd=0;}
  127.     }

  128.     while(!(P3^4));
  129.     ET0=1;
  130.     TR0=1;
  131. }


  132. //    延時程序
  133. void delay(unsigned int t)
  134. {                           
  135.    unsigned int k;
  136.    while(t--)
  137.    {
  138.      for(k=0; k<80; k++);
  139.       
  140.    }
  141. }
復制代碼

作者: 朗朗繁星    時間: 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