久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9793|回復: 19
收起左側

51單片機實現三相六拍的步進電機控制(正反轉、加減速、擋位顯示)

  [復制鏈接]
ID:234521 發表于 2017-9-20 23:40 | 顯示全部樓層 |閱讀模式
自己寫的,不規范還望包含,keil和protues文件
0.png QQ截圖20170920232942.png 0.png

單片機源程序如下:
  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)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:269211 發表于 2018-1-27 10:11 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:280881 發表于 2018-1-30 14:06 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:280909 發表于 2018-1-30 14:50 | 顯示全部樓層

感謝分享
回復

使用道具 舉報

ID:260785 發表于 2018-1-31 08:26 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:313702 發表于 2018-4-27 10:16 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:454493 發表于 2018-12-25 15:30 來自觸屏版 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:162757 發表于 2018-12-26 19:11 | 顯示全部樓層
來干貨了
回復

使用道具 舉報

ID:456297 發表于 2018-12-27 12:13 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:537456 發表于 2019-5-13 21:58 | 顯示全部樓層
學習學習謝謝
回復

使用道具 舉報

ID:47652 發表于 2019-5-25 14:32 | 顯示全部樓層
正需要,謝謝
回復

使用道具 舉報

ID:353314 發表于 2019-5-31 11:32 | 顯示全部樓層
不錯,................
回復

使用道具 舉報

ID:582011 發表于 2019-7-11 01:33 | 顯示全部樓層
原理圖.doc (56.5 KB, 下載次數: 12)
回復

使用道具 舉報

ID:576358 發表于 2019-7-12 08:42 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:580629 發表于 2019-7-12 10:14 | 顯示全部樓層
感謝分享,下載來學習下
回復

使用道具 舉報

ID:512857 發表于 2019-11-18 17:50 | 顯示全部樓層
感謝分享,要是有四相的就好了,其實也差多,哈哈,反正謝謝了。
回復

使用道具 舉報

ID:475402 發表于 2019-11-18 21:18 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:631508 發表于 2019-11-22 10:20 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:744210 發表于 2020-5-5 06:14 來自觸屏版 | 顯示全部樓層
chaoself 發表于 2018-1-27 10:11
謝謝分享

這是三相的?看著好像兩相四線的
回復

使用道具 舉報

ID:921105 發表于 2021-5-14 11:23 來自觸屏版 | 顯示全部樓層
不明白電機的六根線代表什么意思?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品中文字幕 | 99只有精品| 欧美一区二区三区的 | www.日韩在线 | 欧美激情欧美激情在线五月 | 亚洲欧美一区二区三区在线 | 一二三在线视频 | 成人免费毛片在线观看 | 一级全黄视频 | 99精品国产一区二区三区 | 日本理论片好看理论片 | 91日b| 国产精品久久久久国产a级 欧美日韩国产免费 | 草草精品 | 91精品在线观看入口 | 久久久久久国产精品免费免费狐狸 | 日韩欧美国产一区二区 | 日韩不卡视频在线观看 | 日韩国产一区二区 | 亚洲一区二区av | 一区亚洲 | 在线国产一区二区 | 久久久精品一区二区三区 | 成人免费区一区二区三区 | 黄视频在线网站 | 九九亚洲 | 成人国产精品免费观看视频 | 日韩免费av网站 | 日本涩涩网| 中文字幕第90页 | 日韩在线一区二区三区 | 成人一区二区三区在线观看 | 狠狠视频| 日日干夜夜操 | 精品久久国产 | 国产黄色av网站 | 自拍偷拍小视频 | 亚洲中午字幕 | 久久久123| 国产一级一级毛片 | 久久九九99|