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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+UDN2916 5相4線步進電機的單片機驅動程序 發送速度到串口

[復制鏈接]
跳轉到指定樓層
樓主
ID:277134 發表于 2019-11-10 15:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
5相4線步進電機驅動程序,可以調速,正反轉,發送速度到串口,用1602顯示

單片機源程序如下:
  1. /*************************************************************************************
  2. *  標題:  步進電機試驗一(雙極性步進電機)                                                                                         *
  3. *                                                                                                                                                                          *
  4. *    通過本例程了解步進馬達使用及驅動程序編寫                                                                                 *
  5. *;   單相四拍通電驅動時序:                                                          *
  6. *;   正轉: A/  B  A  B/
  7. *    反轉: B/  A  B  A/                                                                                              *
  8. *   
  9. *    UDN2916電流控制真值表:
  10. *          I0    I1        輸出電流
  11. *          L            L                  最大
  12. *          H                L                  最大*2/3
  13. *          L                H                  最大*1/3
  14. *     H     H         0                                                                     *
  15. *  請學員一定要消化掉本例程                     0x30,0x0e,0x39,0x07                              *
  16.    注意:J14短路冒需斷開                                                                                    *
  17. **************************************************************************************/  
  18. #include "reg52.h"
  19. //Motor
  20. sbit key  = P0^0;          //定義管腳
  21. sbit key1 = P0^1;
  22. sbit key2 = P0^2;          //定義管腳
  23. sbit key3 = P0^3;
  24. sbit key4 = P0^4;          //定義管腳
  25. sbit key5 = P0^5;
  26. sbit key6 = P0^6;          //定義管腳
  27. sbit I01  = P1^0;
  28. sbit I02  = P1^1;
  29. sbit I03  = P1^2;
  30. sbit I04  = P1^3;

  31. int speed=20,zhuangtaiflag=0,gaodu=0,jiaodu=0,gd=0,jd=0;

  32. void delay(int time);
  33. void bujinzhengzhuan(int b)
  34. {
  35.         int i;
  36.         for(i=0;i<b;i++)
  37.         {
  38.                 I01=1;
  39.                 I02=0;
  40.                 I03=0;
  41.                 I04=0;
  42.                 delay(speed);
  43.                 I01=0;
  44.                 I02=1;
  45.                 I03=0;
  46.                 I04=0;
  47.                 delay(speed);
  48.                 I01=0;
  49.                 I02=0;
  50.                 I03=1;
  51.                 I04=0;
  52.                 delay(speed);
  53.                 I01=0;
  54.                 I02=0;
  55.                 I03=0;
  56.                 I04=1;
  57.                 delay(speed);
  58.         }
  59. }

  60. void bujinfanzhuan(int a)
  61. {
  62.         int i;
  63.         for(i=0;i<a;i++)
  64.         {
  65.                 I01=0;
  66.                 I02=0;
  67.                 I03=0;
  68.                 I04=1;
  69.                 delay(speed);
  70.                 I01=0;
  71.                 I02=0;
  72.                 I03=1;
  73.                 I04=0;
  74.                 delay(speed);
  75.                 I01=0;
  76.                 I02=1;
  77.                 I03=0;
  78.                 I04=0;
  79.                 delay(speed);
  80.                 I01=1;
  81.                 I02=0;
  82.                 I03=0;
  83.                 I04=0;
  84.                 delay(speed);
  85.         }
  86. }
  87. void bujinstop(void)
  88. {
  89.         I01=0;
  90.         I02=0;
  91.         I03=0;
  92.         I04=0;
  93. }
  94. /*------------------------------------------------
  95.                     串口初始化
  96. ------------------------------------------------*/
  97. void UsartConfiguration()
  98. {
  99.         SCON=0X50;                        //設置為工作方式1
  100.         TMOD=0X20;                        //設置計數器工作方式2
  101.         PCON=0X80;                        //波特率加倍
  102.         TH1=0XF3;                    //計數器初始值設置,注意波特率是4800的
  103.         TL1=0XF3;
  104. //        ES=1;                                                //打開接收中斷
  105. //        EA=1;                                                //打開總中斷
  106.         TR1=1;                                            //打開計數器
  107. }
  108. /*******************延時函數****************************/
  109. void delay(int time)
  110. {
  111.   int i,j;
  112.   
  113.   for(j=0; j <= time; j++)
  114.    for(i =0 ; i <= 120; i++);
  115. }

  116. void main()
  117. {
  118.   int flag;
  119.   UsartConfiguration();
  120.   while(1)
  121.   {
  122.     if(key==0)
  123.                 {
  124.                         delay(10);
  125.                         if(key==0)
  126.                         {
  127.                                 while(key==0);
  128.                                 flag++;
  129.                                 if(flag==3)flag=0;               
  130.                         }
  131.                 }
  132.                
  133.          if(key1==0)
  134.                 {
  135.                         delay(10);
  136.                         if(key1==0)
  137.                         {
  138.                                 while(key1==0);
  139.                                 speed++;
  140.                                 if(speed==50)speed=2;               
  141.                         }
  142.                 }
  143.                
  144.                 if(key2==0)
  145.                 {
  146.                         delay(10);
  147.                         if(key2==0)
  148.                         {
  149.                                 while(key2==0);
  150.                                 speed--;
  151.                                 if(speed<=2)speed=2;               
  152.                         }
  153.                 }
  154.                 if(key3==0)
  155.                 {
  156.                         delay(10);
  157.                         if(key3==0)
  158.                         {
  159.                                 while(key3==0);
  160.                                 zhuangtaiflag++;
  161.                                 if(zhuangtaiflag==0)jd=0;
  162.                                 if(zhuangtaiflag==1)gd=0;
  163.                                 if(zhuangtaiflag==2)zhuangtaiflag=0;
  164.                         }
  165.                 }
  166.                
  167.                 if(key4==0)
  168.                 {
  169.                         delay(10);
  170.                         if(key4==0)
  171.                         {
  172.                                 while(key4==0);
  173.                                 if(zhuangtaiflag==0)jiaodu++;
  174.                                 if(zhuangtaiflag==1)gaodu++;
  175.                         }
  176.                 }
  177.                
  178.                         if(key5==0)
  179.                 {
  180.                         delay(10);
  181.                         if(key5==0)
  182.                         {
  183.                                 while(key5==0);
  184.                                 if(zhuangtaiflag==0)jiaodu--;
  185.                                 if(zhuangtaiflag==1)gaodu--;
  186.                         }
  187.                 }
  188.                
  189.                 if(flag==0)bujinstop();
  190.                 if(flag==1)bujinzhengzhuan(1);
  191.           if(flag==2)bujinfanzhuan(1);
  192.                 if(gaodu-gd>0)
  193.                 {
  194.                         bujinzhengzhuan(100*(gaodu-gd));
  195.                         gd=gaodu;
  196.                 }
  197.                 if(gaodu-gd<0)
  198.                 {
  199.                         bujinfanzhuan(100*(gd-gaodu));
  200.                         gd=gaodu;
  201.                 }
  202.                 if(jiaodu-jd>0)
  203.                 {
  204.                         bujinzhengzhuan(jiaodu-jd);
  205.                         jd=jiaodu;
  206.                 }
  207.                 if(jiaodu-jd<0)
  208.                 {
  209.                         bujinfanzhuan(jd-jiaodu);
  210.                         jd=jiaodu;
  211.                 }
  212.     SBUF=speed;
  213.   }

  214. }
復制代碼

所有資料51hei提供下載:
bujindianji.zip (32.26 KB, 下載次數: 15)


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

使用道具 舉報

沙發
ID:1 發表于 2019-11-10 16:52 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合精品 | 福利视频大全 | 黄色av观看 | 精品国产欧美一区二区三区成人 | 一区二区三区日 | 欧美在线视频一区二区 | 福利片在线观看 | 欧美精品一区二区三区四区 在线 | 亚洲网在线 | 91精品综合久久久久久五月天 | 亚洲一区二区三区在线视频 | av在线视| 精品国产一级 | 久久久久久天堂 | 偷拍亚洲色图 | 亚洲国产一区二区三区四区 | 天天干干 | 蜜桃av人人夜夜澡人人爽 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 亚洲国产精品va在线看黑人 | 日日干夜夜操 | 天堂亚洲网 | 爱操av| 美女一级毛片 | 欧美男人的天堂 | 日韩在线一区二区 | 午夜天堂精品久久久久 | 日韩中文字幕一区 | 日本成人中文字幕 | 国产中的精品av涩差av | 久久国产精品-国产精品 | 成人午夜免费在线视频 | 天堂一区二区三区 | 色综合久久天天综合网 | 久久精品国产免费 | 国产高清精品一区二区三区 | 日韩一区二| 国产精品久久久久久久久免费软件 | 国产99久久 | 亚洲一区二区三区在线 | 国产精品mv在线观看 |