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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2630|回復: 2
打印 上一主題 下一主題
收起左側

51單片機控制步進電機

[復制鏈接]
跳轉到指定樓層
樓主
ID:395404 發表于 2018-9-8 16:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>
  2. #define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535


  4. unsigned char code zheng[4]={0x08,0x04,0x02,0x01};//正轉表格
  5. unsigned char code fan[4]={0x01,0x02,0x04,0x08};//反轉表格

  6. uchar flag_start ;     //啟動標志位  1為起動步進電機 否則關閉電機
  7. uchar flag_z_f;        //正反標志位  0為順時鐘 1為逆時史上轉
  8. uchar flag_shudu;      //4種速度 0,1,2,3,
  9. uint flag_shudu_value = 400;


  10. void Delay(unsigned int i)//延時
  11. {
  12. while(--i);
  13. }

  14. uchar key_can;
  15. /********************獨立按鍵程序*****************/
  16. void key()
  17. {
  18.         static uchar key_new;
  19.         key_can = 20;                                //按鍵值還原
  20.         if((P3 & 0xf0) != 0xf0)                //按鍵按下
  21.         {
  22.                 Delay(5);                                //按鍵消抖動
  23.                 if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
  24.                 {                                                //確認是按鍵按下
  25.                         key_new = 0;
  26.                         switch(P3 & 0xf0)
  27.                         {
  28.                                 case 0xe0:  key_can = 1;  break;         //得到按鍵值
  29.                                 case 0xd0:  key_can = 2;  break;         //得到按鍵值
  30.                                 case 0xb0:  key_can = 3;  break;         //得到按鍵值
  31.                                 case 0x70:  key_can = 4;  break;         //得到按鍵值
  32.                         }                                
  33.                 }        
  34.         }
  35.         else           //按鍵松開
  36.                 key_new = 1;        
  37. }


  38. /******************主程序**********************/
  39. void main()
  40. {
  41.         unsigned char i;        
  42.         while(1)
  43.         {
  44.                 key();
  45.                 if(key_can < 10)
  46.                 {                                                
  47.                          if(key_can == 1)         //啟動鍵
  48.                         {
  49.                                 if(flag_start == 0)          //啟動
  50.                                 {
  51.                                         flag_start = 1;        
  52.                                         switch(flag_shudu)
  53.                                         {
  54.                                                 case 0:  flag_shudu_value = 500; P2 = 0xf0;  break;        //速度1  最快
  55.                                                 case 1:  flag_shudu_value = 800; P2 = 0xf9;  break;
  56.                                                 case 2:  flag_shudu_value = 1000; P2 = 0xfc;  break;
  57.                                                 case 3:  flag_shudu_value = 1500;P2 = 0xfe;  break;        //速度4  最慢
  58.                                         }
  59.                                 }
  60.                                 else         //停止
  61.                                 {
  62.                                         flag_start = 0;        
  63.                                         P2 = 0XFF;                //關閉指示燈
  64.         
  65.                                 }
  66.                         }if(key_can == 2)         //正反轉鍵
  67.                         {
  68.                                 flag_z_f = ~flag_z_f;    //

  69.                         }if(key_can == 3)          //減速
  70.                         {
  71.                                 flag_shudu ++;
  72.                                 if(flag_shudu >= 4)
  73.                                         flag_shudu = 0;
  74.                                 switch(flag_shudu)
  75.                                 {
  76.                                         case 0:  flag_shudu_value = 500; P2 = 0xf0;  break;        //速度1  最快
  77.                                         case 1:  flag_shudu_value = 800; P2 = 0xf9;  break;
  78.                                         case 2:  flag_shudu_value = 1000; P2 = 0xfc;  break;
  79.                                         case 3:  flag_shudu_value = 1500;P2 = 0xfe;  break;        //速度4  最慢
  80.                                 }
  81.                         }if(key_can == 4)         //加速
  82.                         {
  83.                                 if(flag_shudu == 0)
  84.                                         flag_shudu = 4;
  85.                                 flag_shudu --;
  86.                                 switch(flag_shudu)
  87.                                 {
  88.                                         case 0:  flag_shudu_value = 500; P2 = 0xf0;  break;        //速度1  最快
  89.                                         case 1:  flag_shudu_value = 800; P2 = 0xf8;  break;
  90.                                         case 2:  flag_shudu_value = 1000; P2 = 0xfc;  break;
  91.                                         case 3:  flag_shudu_value = 1500;P2 = 0xfe;  break;        //速度4  最慢
  92.                                 }
  93.                         }
  94.                 }
  95.                 if(flag_start == 1)
  96.                 {
  97.                         for(i=0;i<4;i++)                    //4相
  98.                         {
  99.                                 if(flag_z_f == 0)
  100.                                         P1=zheng[i];      //電機正轉
  101.                                 else
  102.                                         P1=fan[i];        //電機反轉
  103.                                 Delay(flag_shudu_value);        //改變這個參數可以調整電機轉速
  104.                         }
  105.                 }
  106.         }
  107. }
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-9-8 18:16 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:435943 發表于 2018-11-30 13:36 | 只看該作者
很不錯的例子
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产小网站 | 亚洲色图综合 | 日韩在线观看中文字幕 | 久久精品国产亚洲一区二区 | 91在线精品一区二区 | 免费国产黄网站在线观看视频 | 亚洲精品在线看 | 在线观看免费av片 | 国产精品国产三级国产aⅴ中文 | 一区二区三区在线免费观看视频 | 成年视频在线观看福利资源 | 激情一区二区三区 | 九九亚洲 | 亚洲一区二区三区四区五区中文 | 久久久九九九九 | 国产精品一区二区久久 | 国产欧美精品一区二区 | 国产亚洲精品综合一区 | 欧美日韩中文在线 | 久久久精品一区二区三区四季av | 91在线一区 | 国产福利一区二区 | 成人午夜网站 | 国产精品视频一区二区三 | 午夜视频一区 | 久久在视频 | 亚洲激精日韩激精欧美精品 | 久久首页 | 欧美成人在线免费 | 亚洲免费精品 | 中文二区| 日韩毛片播放 | 99国产精品99久久久久久粉嫩 | 国产一级视频在线观看 | 一区二区三区免费在线观看 | 天堂免费 | 国产一区在线看 | 国产欧美一区二区三区久久人妖 | 91视频亚洲 | 四色永久| 国产精品日韩 |