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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2832|回復(fù): 2
收起左側(cè)

42步進(jìn)電機(jī)藍(lán)牙控制模塊化編程

[復(fù)制鏈接]
ID:247810 發(fā)表于 2019-8-1 16:47 | 顯示全部樓層 |閱讀模式
  感謝51黑論壇給予我的幫助,我自己總結(jié)了前輩們的代碼,寫了一個(gè)42步進(jìn)電機(jī)藍(lán)牙控制的代碼,能實(shí)現(xiàn)前后左右控制;尋跡,避障lcd1602顯示功能還不齊全。

170ABB2975F0D0AC8A842E1B78957C1D.png

單片機(jī)源程序如下:
  1. #include "42moto.h"
  2. #include "lcd1602.h"
  3. /**********************************************
  4. *              IO設(shè)置
  5. *
  6. *
  7. *************************************************/
  8. /**************紅外引腳定義*******************/

  9. sbit HY_R = P1^4;   //右邊紅外傳感器定義
  10. sbit HY_Z = P1^5;   //中間紅外傳感器定義
  11. sbit HY_L = P1^6;   //左邊紅外傳感器定義
  12. /*************尋跡引腳定義*******************/
  13. sbit XJ_R = P1^0;   //右邊尋跡傳感器定義
  14. sbit XJ_Z = P1^1;   //中間尋跡傳感器定義
  15. sbit XJ_L = P1^2;   //左邊尋跡傳感器定義
  16. /************電機(jī)控制引腳定義*****************/
  17. //sbit ENA_R   = P1^2;   // 右電機(jī)使能
  18. sbit PUL_L   = P2^0;     // 左電機(jī)脈沖
  19. sbit DIR_L   = P2^2;     // 左電機(jī)方向
  20. sbit PUL_R   = P2^3;     // 右電機(jī)脈沖
  21. sbit DIR_R   = P2^4;     // 右電機(jī)方向
  22. //sbit ENA_L = P2^2;     // 左電機(jī)使能
  23. #define MotorTabNum 5
  24. unsigned char T0_NUM;
  25. signed char g_MotorNum = 0;
  26. unsigned char MotorTab[6] = {6, 5, 4, 3, 2, 1};
  27. void T0_Init();//中斷定義
  28. void delay(xms);
  29. void hongwai(void);
  30. void xunji(void);

  31. /********************************延時(shí)函數(shù)***********************************************************/
  32. void delay(xms)
  33. {
  34.          unsigned int x,y;
  35.          for(x=xms;x>0;x--)
  36.                  for(y=110;y>0;y--);
  37. }
  38. /*************定時(shí)器初始化***********************************************************/
  39. void T0_Init()
  40. {
  41.         TMOD = 0x01;
  42.         TH0 = (65535-100)/256;  // 1ms
  43.         TL0 = (65535-100)%256;
  44.         EA = 1;
  45.         ET0 = 1;

  46. }
  47. ////延時(shí)n毫秒
  48. //void delay_ms(unsigned int n)
  49. //{
  50. //    unsigned int i=0,j=0;
  51. //    for(i=0;i<n;i++)
  52. //        for(j=0;j<123;j++);
  53. //}

  54. /*************定時(shí)器中斷************************/
  55. void T0_time() interrupt 1
  56. {
  57. //       TR0 = 0;
  58.         TH0 = (65535-100)/256;   
  59.         TL0 = (65535-100)%256;
  60.                 T0_NUM++;
  61.         if(T0_NUM >= MotorTab[g_MotorNum])        // 增加按鍵g_MotorNum++   減小按鍵g_MotorNum--
  62.         {
  63.                 T0_NUM = 0;
  64. //          PUL_R =PUL_R^0x01;          //   輸出脈沖
  65. //      PUL_L =PUL_L^0x01;          //   輸出脈沖
  66.         }

  67.         
  68. }   
  69. /******42步進(jìn)電機(jī)運(yùn)動(dòng)函數(shù)*******************************
  70. DIR_R  ^= 1;   //=1后退
  71. DIR_R  ^= 1;   
  72. DIR_L  ^= 0;   //=0前進(jìn)
  73. DIR_L  ^= 0;
  74. 因?yàn)閮蛇呺姍C(jī)的安裝是一樣的,所以DIR的方向有所不同
  75. 可以根據(jù)該電機(jī)接線的方式改變電機(jī)的方向
  76. ***********************************************/
  77. void RUN(void)   //前進(jìn)
  78. {

  79.         DIR_R ^= 0;     //右前進(jìn)
  80.     DIR_L ^= 0;     //左后退就是前進(jìn)
  81.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  82.     PUL_L =PUL_L^0x01;          //   輸出脈沖
  83.        
  84. }
  85. void RIGHT(void)//右轉(zhuǎn)
  86. {
  87.   
  88.     DIR_L ^= 1;    //右轉(zhuǎn),就讓左邊的電機(jī)前進(jìn),右邊后退
  89.     DIR_R ^= 0;     //右前進(jìn)       
  90.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  91.     PUL_L =PUL_L^0x01;          //   輸出脈沖
  92.   
  93. }
  94. void LEFT(void)  //左轉(zhuǎn)
  95. {
  96.   DIR_L ^= 0;     //左后退就是前進(jìn)  
  97.    DIR_R ^= 1;  //左轉(zhuǎn),就讓右邊前進(jìn),左邊后退
  98.    PUL_R =PUL_R^0x01;          //   輸出脈沖
  99.    PUL_L =PUL_L^0x01;          //   輸出脈沖
  100. }

  101. void BACK(void) //后退
  102. {
  103.        
  104.         DIR_R ^= 1;    //這里就和前進(jìn)相反就可以了
  105.     DIR_L ^= 1;
  106.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  107.     PUL_L =PUL_L^0x01;          //   輸出脈沖
  108. }
  109. void STOP(void) //停止
  110. {
  111.   EA=0;  //讓所有中斷都關(guān)閉,
  112.   PUL_R =PUL_R^0x00;          //   輸出脈沖
  113.   PUL_L =PUL_L^0x00;          //   輸出脈沖       
  114. }
  115. /********************按鍵控制*********************/
  116. //void anjian()
  117. //{
  118. //       
  119. //}

  120. /********************尋跡傳感控制*********************/

  121. void hongwai(void)
  122. {       
  123.          //有信號(hào)為0  沒有信號(hào)為1
  124.         //if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號(hào)就前進(jìn)
  125.                 if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號(hào)就前進(jìn)
  126.            {
  127.                 EA=1;
  128.                 //lcd_init1(); //顯示RUN運(yùn)行
  129.      DIR_R ^= 0;     //右前進(jìn)
  130.     DIR_L ^= 0;     //左后退就是前進(jìn)
  131.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  132.     PUL_L =PUL_L^0x01;          //   輸出脈沖       
  133.                 TR0 = 1;
  134.         }
  135.        
  136.         else
  137.                   {
  138. //有信號(hào)為0  沒有信號(hào)為1
  139.         if(HY_R==0&&HY_Z==1&&HY_L==1)//右邊有信號(hào)說明右障礙物,所以電機(jī)停止1S,然后后退1S,左電機(jī)后退,右電機(jī)轉(zhuǎn)動(dòng)
  140.      {         
  141.          // lcd_init2();
  142.           DIR_L ^= 1;    //右轉(zhuǎn),就讓左邊的電機(jī)前進(jìn),右邊后退
  143.     DIR_R ^= 0;     //右前進(jìn)       
  144.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  145.     PUL_L =PUL_L^0x01;          //   輸出脈沖         
  146.      }
  147. //有信號(hào)為0  沒有信號(hào)為1
  148.         if(HY_R==1&&HY_Z==1&&HY_L==0)//左邊有信號(hào)說明左障礙物,所以電機(jī)停止1S,然后后退1S,右電機(jī)后退,左電機(jī)轉(zhuǎn)動(dòng)
  149.      {
  150.                  
  151.                 // lcd_init3();                        
  152.         DIR_L ^= 0;    //右轉(zhuǎn),就讓左邊的電機(jī)前進(jìn),右邊后退
  153.        DIR_R ^= 1;     //右前進(jìn)       
  154.        PUL_R =PUL_R^0x01;          //   輸出脈沖
  155.        PUL_L =PUL_L^0x01;          //   輸出脈沖
  156.                  
  157.      }
  158.           //有信號(hào)為0  沒有信號(hào)為1
  159.         if(HY_R==1&&HY_Z==0&&HY_L==1)//中間有信號(hào)就后退
  160.      {         
  161.                 // lcd_init4();       
  162.                DIR_R ^= 1;    //這里就和前進(jìn)相反就可以了
  163.     DIR_L ^= 1;
  164.     PUL_R =PUL_R^0x01;          //   輸出脈沖
  165.     PUL_L =PUL_L^0x01;          //   輸出脈沖
  166.        
  167.      }
  168. //有信號(hào)為0  沒有信號(hào)為1
  169.         if(HY_R==0&&HY_Z==0&&HY_L==0)//當(dāng)然全部有信號(hào)就停止
  170.      {
  171.                  //lcd_init5();          
  172.                  EA=0;                         
  173.      }
  174.    }  
  175. }

  176. /*************************尋跡傳感控制**********************/

  177. void xunji(void)
  178. {       
  179.          //有信號(hào)為0  沒有信號(hào)為1
  180.         //if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號(hào)就前進(jìn)
  181.                 if(XJ_R==1&&XJ_Z==1&&XJ_L==1)//都沒有信號(hào)就前進(jìn)
  182.            {
  183.                 EA=1;
  184.                 lcd_init1(); //顯示RUN運(yùn)行
  185.         delay(10);   // 軟件延時(shí)消抖
  186.                 RUN();       
  187.                 TR0 = 1;
  188.         }
  189.        
  190.         else
  191.          {
  192. //有信號(hào)為0  沒有信號(hào)為1
  193.         if(XJ_R==0&&XJ_Z==1&&XJ_L==1)//右邊有信號(hào)說明右障礙物,所以電機(jī)停止1S,然后后退1S,左電機(jī)后退,右電機(jī)轉(zhuǎn)動(dòng)
  194.      {   
  195.           lcd_init2();
  196.         delay(10);   // 軟件延時(shí)消抖                 
  197.                  RIGHT();
  198.                  
  199.      }
  200. ……………………

  201. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
42步進(jìn)電機(jī)模塊化2LY.rar (55.16 KB, 下載次數(shù): 22)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:247810 發(fā)表于 2019-8-1 17:00 | 顯示全部樓層
小車的 照片
回復(fù)

使用道具 舉報(bào)

ID:282021 發(fā)表于 2019-8-2 00:09 來自觸屏版 | 顯示全部樓層
好用,學(xué)習(xí)藍(lán)牙的好方法。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二区三区视频 | 成人免费视频在线观看 | 亚洲免费视频播放 | 香蕉久久久| 免费av直接看 | 国产精品精品视频一区二区三区 | 天堂av免费观看 | 精精国产xxxx视频在线播放 | 亚洲一二三在线 | 中文天堂在线观看 | 国产精品视频网址 | 精品久久久久久国产 | 精品一二区 | 一区二区三区四区在线 | 日韩欧美国产成人一区二区 | 国产在线a | 性色的免费视频 | 国产成人在线一区二区 | 久久精品国产久精国产 | 欧美黑人巨大videos精品 | 亚洲精品一区二区另类图片 | 欧美成视频 | 一本大道久久a久久精二百 国产成人免费在线 | 美女视频三区 | 亚洲天堂av网 | 欧美中文字幕一区二区 | 国产日韩精品久久 | 在线国产一区二区 | 欧日韩在线观看 | 国产一区二区影院 | 在线亚洲人成电影网站色www | 日韩美女一区二区三区在线观看 | 日韩视频在线播放 | 精品国产亚洲一区二区三区大结局 | 99免费在线视频 | 99久久久久久99国产精品免 | 欧美激情a∨在线视频播放 成人免费共享视频 | 成人在线观看免费 | 国产精品久久久久久久久久免费 | 午夜影院在线观看视频 | 国产综合在线视频 |