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

標題: 51單片機實現三相六拍的步進電機控制(正反轉、加減速、擋位顯示) [打印本頁]

作者: yx876157737    時間: 2017-9-20 23:40
標題: 51單片機實現三相六拍的步進電機控制(正反轉、加減速、擋位顯示)
自己寫的,不規范還望包含,keil和protues文件


單片機源程序如下:
  1. #include <reg52.h>      
  2.    
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. uint speed = 100;                                                //初始轉速
  6. uint max = 200;                                                        //最慢轉速
  7. uint min = 20;                                                        //最快轉速

  8. sbit swich = P2^0;                                           //總開關
  9. sbit dir = P2^1;                                        //電機旋轉方向
  10. sbit le1=P2^6;
  11. sbit le2=P2^7;
  12. sbit speedadd=P3^2;
  13. sbit speedsub=P3^3;                                  

  14. unsigned char uca_MotorStep[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};    //勵磁電流數組。
  15.                                                                                                              

  16. uchar leddata[]={

  17.                 0x3F,  //"0"
  18.                 0x06,  //"1"
  19.                 0x5B,  //"2"
  20.                 0x4F,  //"3"
  21.                 0x66,  //"4"
  22.                 0x6D,  //"5"
  23.                 0x7D,  //"6"
  24.                 0x07,  //"7"
  25.                 0x7F,  //"8"
  26.                 0x6F,  //"9"
  27.                 0x40,  //"-"
  28.                 0x00,  //熄滅
  29.                          };


  30. void delay1ms(void)   //誤差 0us
  31. {
  32.     unsigned char a,b,c;
  33.     for(c=1;c>0;c--)
  34.         for(b=142;b>0;b--)
  35.             for(a=2;a>0;a--);
  36. }

  37. void delay(uint x )                          //多功能毫秒延時
  38. {
  39.     uint i;
  40.         for(i=0;i<x;i++)
  41.         {
  42.           delay1ms();
  43.         }
  44. }



  45. void display(void)
  46. {       
  47.   if(swich==1)
  48.   {
  49.                    P0=        leddata[11];
  50.                 delay(1);
  51.                 le2=1;
  52.                 le1=1;
  53.                 delay(1);
  54.                 le2=0;               
  55.                 le1=0;

  56.   }       
  57.   else
  58.   {
  59.   if(dir==1)
  60.                 {
  61.                 P0=        leddata[11];
  62.                 delay(1);
  63.                 le2=1;
  64.                 delay(1);
  65.                 le2=0;
  66.                 }
  67.         else
  68.             {
  69.                 P0 =leddata[10];
  70.                 delay(1);
  71.                 le2=1;
  72.                 delay(1);
  73.                 le2=0;
  74.                 }  

  75.         P0=leddata[9-(speed-20)/20];
  76.         delay(30);
  77.         le1=1;
  78.         delay(5);
  79.         le1=0;
  80.                   
  81. }       
  82. }


  83. void Init_INT0()
  84. {
  85. EX0=1;    //開啟外部中斷 0
  86. IT0=1;          //設置成低電平觸發,1為下降沿觸發
  87. EX1=1;    //開啟外部中斷 1
  88. IT1=1;          //設置成低電平觸發,1為下降沿觸發
  89. EA=1;   //開啟總中斷
  90. }

  91. void Interrupt0_handler() interrupt 0
  92. {
  93.     EA=0;   //首先關閉總中斷,以消除按鍵出現的抖動所產生的干擾
  94.     delay(20); //同樣是為了消除抖動而產生新的中斷
  95.     if(speed>min)
  96.        {speed=speed-20;}        //限制最快轉速
  97.         else
  98.                 {speed=min;}
  99.         while(speedadd==0);
  100.     EA=1;            //恢復中斷
  101. }


  102. void Interrupt1_handler() interrupt 2
  103. {
  104.     EA=0;   //首先關閉總中斷,以消除按鍵出現的抖動所產生的干擾
  105.     delay(20); //同樣是為了消除抖動而產生新的中斷
  106.     if(speed<max)
  107.        {speed=speed+20;}
  108.         else
  109.                 {speed=max;}         //限制最慢轉速
  110.         while(speedsub==0);
  111.     EA=1;            //恢復中斷
  112. }

  113. void main()
  114. {
  115. int i;                                   //初始化
  116. dir=1;
  117. le1=0;
  118. le2=0;


  119. start:
  120. if(swich==0)
  121.      {Init_INT0();}                  //總開關開啟,初始化中斷,開始轉動
  122.    else
  123.          {display(); goto start;        }


  124.         if(dir==1)
  125.   seq:
  126.         {
  127.           while(1)
  128.           {         
  129.              display();
  130.                  for (i=0; i<8; i++)   
  131.                 {
  132.                   P1 = uca_MotorStep[i];         //取數據
  133.                   delay(speed);            //調節轉速
  134.                 }
  135.                  if(dir==0)                                                         //是否換向
  136.                     {
  137.                         delay(5);                                                 //        換向延時
  138.                         goto oppo;                                                 //換向
  139.                         }
  140.                 if(swich==1)                                                 //總開關運行中關閉
  141.                    goto start;                                                 //等待開啟
  142.          
  143.           }
  144.          
  145.         }
  146.         else
  147.         oppo:
  148. ……………………

  149. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
abc.zip (116.04 KB, 下載次數: 210)



作者: chaoself    時間: 2018-1-27 10:11
謝謝分享
作者: bV_Vd    時間: 2018-1-30 14:06
感謝分享

作者: 煙花絲雨    時間: 2018-1-30 14:50

感謝分享
作者: lsc_nj    時間: 2018-1-31 08:26
感謝分享
作者: 906267461    時間: 2018-4-27 10:16
謝謝分享
作者: qq131855    時間: 2018-12-25 15:30
感謝分享
作者: zhtech    時間: 2018-12-26 19:11
來干貨了
作者: 寒香折    時間: 2018-12-27 12:13
謝謝分享
作者: chuan.yang    時間: 2019-5-13 21:58
學習學習謝謝
作者: 榆林上校    時間: 2019-5-25 14:32
正需要,謝謝
作者: 飛天123    時間: 2019-5-31 11:32
不錯,................
作者: OS0204    時間: 2019-7-11 01:33
原理圖.doc (56.5 KB, 下載次數: 12)
作者: 鐵血龍鵬    時間: 2019-7-12 08:42
感謝分享
作者: 上流男子濤少    時間: 2019-7-12 10:14
感謝分享,下載來學習下
作者: DUCSJSCS    時間: 2019-11-18 17:50
感謝分享,要是有四相的就好了,其實也差多,哈哈,反正謝謝了。
作者: qiuyuleil    時間: 2019-11-18 21:18
謝謝分享!
作者: 1435哈哈哈    時間: 2019-11-22 10:20
感謝樓主

作者: 18813907253    時間: 2020-5-5 06:14
chaoself 發表于 2018-1-27 10:11
謝謝分享

這是三相的?看著好像兩相四線的
作者: shi582747518    時間: 2021-5-14 11:23
不明白電機的六根線代表什么意思啊?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1