找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10013|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

智能小車(chē)兩路循跡 避障傳感器免費(fèi)開(kāi)源資料與單片機(jī)源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
新手分享的資料


電路原理圖:



循跡 尋黑線程序單片機(jī)源程序如下:
  1. /*****************ZY08-C智能循跡、遙控、避障、尋光機(jī)器人*****************
  2. //=====================================================================//
  3. //                      尋跡與直流電機(jī)驅(qū)動(dòng)演示程序                     //
  4. //  本程序通過(guò)前方的紅外探頭來(lái)檢測(cè)地面的信號(hào),根據(jù)道路的要求,當(dāng)?shù)缆窞榘?//
  5. // 色時(shí),紅外接收到信號(hào),與地面檢測(cè)的紅外相應(yīng)端口低電平,當(dāng)?shù)缆窞楹谏珪r(shí) //
  6. //,與地面檢測(cè)的紅外相應(yīng)端口為高電平,我們就可以根據(jù)這和判斷條件來(lái)進(jìn)行  //
  7. //道路黑白線的尋找.                                                    //
  8. //  聲明:由于紅外接收頭對(duì)光線要求較高,所以對(duì)于黑白兩種顏色選擇對(duì)比度  //
  9. //高為好,而且因?yàn)榈缆方⒉煌,需要根?jù)實(shí)際的需要來(lái)改寫(xiě)相應(yīng)的延遲時(shí)間 //
  10. //以適應(yīng)角度的最有較轉(zhuǎn)彎,道路應(yīng)根據(jù)紅外接收頭的兩個(gè)寬度來(lái)制定,如果道 //
  11. //路較小,或較大者,請(qǐng)調(diào)整以適應(yīng)小車(chē)的正確運(yùn)行.                        //
  12. //  備注:這里的程序以走白線為主,當(dāng)用戶需要選擇走黑線時(shí),請(qǐng)根據(jù)例程作出//
  13. //實(shí)際修改。并改寫(xiě)相應(yīng)的延遲時(shí)間函數(shù),以進(jìn)行轉(zhuǎn)彎角度在的最優(yōu)化調(diào)整.    //
  14. //---------------------------------------------------------------------//

  15. *  平臺(tái):ZY08-C智能循跡、遙控、避障、尋光機(jī)器人 + Keil U4 + STC89C52
  16. *  程序名稱:ZY08-C循跡尋黑線程序
  17. *  公司:湖南智宇科教設(shè)備有限公司
  18. *  編寫(xiě):智宇公司研發(fā)一部
  19. *  日期:2015-1-15
  20. *  交流:智能車(chē)QQ:1018973181
  21. *  晶振:11.0592MHZ
  22. *  售后技術(shù)說(shuō)明:免費(fèi)開(kāi)源,不支持客戶自己修改程序分析與改正,可以提供我公司程序說(shuō)明
  23. *  視頻教程:本小車(chē)配套學(xué)習(xí)C語(yǔ)言詳細(xì)視頻教程,資料統(tǒng)一網(wǎng)盤(pán)下載
  24. ******************************************************************/                     //

  25. #include <REGX52.H> //包含51單片機(jī)相關(guān)的頭文件

  26. sbit LeftLed=P2^0;                        //定義前方左側(cè)指示燈端口
  27. sbit RightLed=P0^7;                       //定義前方右側(cè)指示燈端口
  28. sbit FontLled=P1^0;

  29. sbit LeftIR=P3^5;                         //定義前方左側(cè)紅外探頭端口
  30. sbit RightIR=P3^6;                        //定義前方右側(cè)紅外探頭端口
  31. sbit FontIR=P3^7;                         //定義前方正前方紅外探頭端口

  32. sbit M1A=P0^0;                            //定義左側(cè)電機(jī)驅(qū)動(dòng)A端
  33. sbit M1B=P0^1;                            //定義左側(cè)電機(jī)驅(qū)動(dòng)B端

  34. sbit M2A=P0^2;                            //定義右側(cè)電機(jī)驅(qū)動(dòng)A端
  35. sbit M2B=P0^3;                            //定義右側(cè)電機(jī)驅(qū)動(dòng)B端

  36. sbit B1=P0^4;                             //定義語(yǔ)音識(shí)識(shí)別傳感器端口
  37. sbit SB1=P0^6;                            //定義蜂鳴器端口


  38. void tingzhi()
  39. {
  40.    M1A=0;                                   //將M1電機(jī)A端初始化為0
  41.    M1B=0;                                   //將M1電機(jī)B端初始化為0
  42.    M2A=0;                                   //將M2電機(jī)A端初始化為0
  43.    M2B=0;

  44. }

  45. void qianjin()
  46. {
  47.    M1A=1;                                   
  48.    M1B=0;                                   
  49.    M2A=1;                                   
  50.    M2B=0;
  51. }

  52. void houtui()
  53. {
  54.    M1A=0;                                   
  55.    M1B=1;                                   
  56.    M2A=0;                                   
  57.    M2B=1;
  58. }

  59. void zuozhuan()
  60. {
  61.    M1A=0;                                   
  62.    M1B=1;                                   
  63.    M2A=1;                                   
  64.    M2B=0;
  65. }

  66. void youzhuan()
  67. {
  68.    M1A=1;                                   
  69.    M1B=0;                                   
  70.    M2A=0;                                   
  71.    M2B=1;
  72. }

  73. void delay_nus(unsigned int i)  //延時(shí):i>=12 ,i的最小延時(shí)單12 us
  74. {
  75.   i=i/10;
  76.   while(--i);
  77. }   
  78. void delay_nms(unsigned int n)  //延時(shí)n ms
  79. {
  80.   n=n+1;
  81.   while(--n)  
  82.   delay_nus(900);         //延時(shí) 1ms,同時(shí)進(jìn)行補(bǔ)償
  83.   
  84. }  


  85. void ControlCar(unsigned char ConType)    //定義電機(jī)控制子程序
  86. {

  87.   tingzhi();
  88. switch(ConType)                          //判斷用戶設(shè)定電機(jī)形式
  89. {
  90.   case 1:  //前進(jìn)                         //判斷用戶是否選擇形式1
  91.   {
  92.     qianjin();
  93.     break;
  94.   }
  95.   case 2: //后退                          //判斷用戶是否選擇形式2
  96.   {
  97.     houtui();                                //M2電機(jī)反轉(zhuǎn)
  98.     break;
  99.   }
  100.   case 3: //左轉(zhuǎn)                          //判斷用戶是否選擇形式3
  101.   {
  102.     zuozhuan();                               //M2電機(jī)正轉(zhuǎn)
  103.         break;
  104.   }
  105.   case 4: //右轉(zhuǎn)                          //判斷用戶是否選擇形式4
  106.   {
  107.     youzhuan();                                //M1電機(jī)正轉(zhuǎn)
  108.                                           //M2電機(jī)反轉(zhuǎn)
  109.         break;
  110.   }
  111.   case 8: //停止                          //判斷用戶是否選擇形式8
  112.   {
  113.     tingzhi();
  114.         break;                                //退出當(dāng)前選擇
  115.   }
  116. }
  117. }
  118. void main()                               //主程序入口
  119. {
  120.   bit RunFlag=0;                          //定義小車(chē)運(yùn)行標(biāo)志位
  121.   //RunShow=0;                              //初始化顯示狀態(tài)

  122.   ControlCar(8);                          //初始化小車(chē)運(yùn)行狀態(tài)
  123.   while(1)                                //程序主循環(huán)
  124.   {
  125.    Start:

  126.    LeftLed=LeftIR;                        //前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài)
  127.    RightLed=RightIR;                      //前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài)
  128.    FontLled= FontIR;
  129.    SB1=LeftIR;
  130.    if(LeftIR == 0 && RightIR == 0)    //三個(gè)紅外檢測(cè)到黑線,就前進(jìn)
  131.    {
  132.       ControlCar(1);                      //左側(cè)沒(méi)有信號(hào)時(shí),開(kāi)始向右轉(zhuǎn)一定的角度
  133.       delay_nms (10);
  134.           goto NextRun;
  135.    }
  136.    
  137.    if(LeftIR == 0 && RightIR == 1)
  138.    {
  139.       ControlCar(3);                      //右側(cè)沒(méi)有信號(hào)時(shí),開(kāi)始向左轉(zhuǎn)一定的角度
  140.       delay_nms (10);
  141.           goto NextRun;
  142.    }

  143.    if(LeftIR == 1 && RightIR == 0)
  144.    {
  145.       ControlCar(4);                      //右側(cè)沒(méi)有信號(hào)時(shí),開(kāi)始向左轉(zhuǎn)一定的角度
  146.       delay_nms (10);
  147.           goto NextRun;
  148.    }


  149.    goto Start;
  150.    NextRun:
  151.    ControlCar(8);
  152.   }
  153. }

  154. //備注:此例程僅為參考程序,請(qǐng)根據(jù)自己的道路進(jìn)行最優(yōu)化調(diào)整。
復(fù)制代碼

紅外避障程序單片機(jī)源程序如下:
  1. /*****************ZY08-C智能循跡、遙控、避障、尋光機(jī)器人*****************
  2. //=====================================================================//
  3. //                      尋跡與直流電機(jī)驅(qū)動(dòng)演示程序                     //
  4. //  本程序通過(guò)前方的紅外探頭來(lái)檢測(cè)地面的信號(hào),根據(jù)道路的要求,當(dāng)?shù)缆窞榘?//
  5. // 色時(shí),紅外接收到信號(hào),與地面檢測(cè)的紅外相應(yīng)端口低電平,當(dāng)?shù)缆窞楹谏珪r(shí) //
  6. //,與地面檢測(cè)的紅外相應(yīng)端口為高電平,我們就可以根據(jù)這和判斷條件來(lái)進(jìn)行  //
  7. //道路黑白線的尋找.                                                    //
  8. //  聲明:由于紅外接收頭對(duì)光線要求較高,所以對(duì)于黑白兩種顏色選擇對(duì)比度  //
  9. //高為好,而且因?yàn)榈缆方⒉煌枰鶕?jù)實(shí)際的需要來(lái)改寫(xiě)相應(yīng)的延遲時(shí)間 //
  10. //以適應(yīng)角度的最有較轉(zhuǎn)彎,道路應(yīng)根據(jù)紅外接收頭的兩個(gè)寬度來(lái)制定,如果道 //
  11. //路較小,或較大者,請(qǐng)調(diào)整以適應(yīng)小車(chē)的正確運(yùn)行.                        //
  12. //  備注:這里的程序以走白線為主,當(dāng)用戶需要選擇走黑線時(shí),請(qǐng)根據(jù)例程作出//
  13. //實(shí)際修改。并改寫(xiě)相應(yīng)的延遲時(shí)間函數(shù),以進(jìn)行轉(zhuǎn)彎角度在的最優(yōu)化調(diào)整.    //

  14. *  平臺(tái):ZY08-C智能循跡、遙控、避障、尋光機(jī)器人 + Keil U4 + STC89C52
  15. *  程序名稱:ZY08-C紅外避障程序
  16. *  公司:湖南智宇科教設(shè)備有限公司
  17. *  編寫(xiě):智宇公司研發(fā)一部
  18. *  交流:智能車(chē)QQ:1018973181
  19. *  晶振:11.0592MHZ
  20. *  售后技術(shù)說(shuō)明:免費(fèi)開(kāi)源,不支持客戶自己修改程序分析與改正,可以提供我公司程序說(shuō)明
  21. *  免費(fèi)結(jié)緣:5星好評(píng)贈(zèng)送18個(gè)資料包,追加評(píng)價(jià)后再加送20G資料,網(wǎng)上網(wǎng)盤(pán)下載
  22. *  視頻教程:本小車(chē)配套學(xué)習(xí)C語(yǔ)言詳細(xì)視頻教程,資料統(tǒng)一網(wǎng)盤(pán)下載
  23. ******************************************************************/ //
  24. //  程序備注: 此程序僅為表現(xiàn)本機(jī)功能而演示用,當(dāng)用作實(shí)際工程時(shí)請(qǐng)慎用.   //
  25. //=====================================================================//
  26. #include <REGX52.H> //包含51單片機(jī)相關(guān)的頭文件

  27. sbit LeftLed=P2^0;                        //定義前方左側(cè)指示燈端口
  28. sbit RightLed=P0^7;                       //定義前方右側(cè)指示燈端口
  29. sbit FontLled=P1^7;

  30. sbit LeftIR=P3^5;                         //定義前方左側(cè)紅外探頭端口
  31. sbit RightIR=P3^6;                        //定義前方右側(cè)紅外探頭端口
  32. sbit FontIR=P3^7;                         //定義前方正前方紅外探頭端口

  33. sbit M1A=P0^0;                            //定義左側(cè)電機(jī)驅(qū)動(dòng)A端
  34. sbit M1B=P0^1;                            //定義左側(cè)電機(jī)驅(qū)動(dòng)B端

  35. sbit M2A=P0^2;                            //定義右側(cè)電機(jī)驅(qū)動(dòng)A端
  36. sbit M2B=P0^3;                            //定義右側(cè)電機(jī)驅(qū)動(dòng)B端

  37. sbit B1=P0^4;                             //定義語(yǔ)音識(shí)識(shí)別傳感器端口
  38. sbit SB1=P0^6;                            //定義蜂鳴器端口


  39. void tingzhi()
  40. {
  41.    M1A=0;                                   //將M1電機(jī)A端初始化為0
  42.    M1B=0;                                   //將M1電機(jī)B端初始化為0
  43.    M2A=0;                                   //將M2電機(jī)A端初始化為0
  44.    M2B=0;

  45. }

  46. void qianjin()
  47. {
  48.    M1A=1;                                   
  49.    M1B=0;                                   
  50.    M2A=1;                                   
  51.    M2B=0;
  52. }

  53. void houtui()
  54. {
  55.    M1A=0;                                   
  56.    M1B=1;                                   
  57.    M2A=0;                                   
  58.    M2B=1;
  59. }

  60. void zuozhuan()
  61. {


  62.    M1A=1;                                   
  63.    M1B=0;                                   
  64.    M2A=0;                                   
  65.    M2B=1;
  66. }

  67. void youzhuan()
  68. {
  69.    M1A=0;                                   
  70.    M1B=1;                                   
  71.    M2A=1;                                   
  72.    M2B=0;
  73. }

  74. void delay_nus(unsigned int i)  //延時(shí):i>=12 ,i的最小延時(shí)單12 us
  75. {
  76.   i=i/10;
  77.   while(--i);
  78. }   
  79. void delay_nms(unsigned int n)  //延時(shí)n ms
  80. {
  81.   n=n+1;
  82.   while(--n)  
  83.   delay_nus(900);         //延時(shí) 1ms,同時(shí)進(jìn)行補(bǔ)償
  84.   
  85. }  


  86. void ControlCar(unsigned char ConType)    //定義電機(jī)控制子程序
  87. {

  88.   tingzhi();
  89. switch(ConType)                          //判斷用戶設(shè)定電機(jī)形式
  90. {
  91.   case 1:  //前進(jìn)                         //判斷用戶是否選擇形式1
  92.   {
  93.     qianjin();
  94.     break;
  95.   }
  96.   case 2: //后退                          //判斷用戶是否選擇形式2
  97.   {
  98.     houtui();                                //M2電機(jī)反轉(zhuǎn)
  99.     break;
  100.   }
  101.   case 3: //左轉(zhuǎn)                          //判斷用戶是否選擇形式3
  102.   {
  103.     zuozhuan();                               //M2電機(jī)正轉(zhuǎn)
  104.         break;
  105.   }
  106.   case 4: //右轉(zhuǎn)                          //判斷用戶是否選擇形式4
  107.   {
  108.     youzhuan();                                //M1電機(jī)正轉(zhuǎn)
  109.                                           //M2電機(jī)反轉(zhuǎn)
  110.         break;
  111.   }
  112.   case 8: //停止                          //判斷用戶是否選擇形式8
  113.   {
  114.     tingzhi();
  115.         break;                                //退出當(dāng)前選擇
  116.   }
  117. }
  118. }
  119. void main()                               //主程序入口
  120. {
  121.   bit RunFlag=0;                          //定義小車(chē)運(yùn)行標(biāo)志位
  122.   //RunShow=0;                              //初始化顯示狀態(tài)

  123.   ControlCar(8);                          //初始化小車(chē)運(yùn)行狀態(tài)
  124.   while(1)                                //程序主循環(huán)
  125.   {
  126.    Start:

  127.    LeftLed=LeftIR;                        //前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài)
  128.    RightLed=RightIR;                      //前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài)
  129.    FontLled= FontIR;
  130.    SB1=FontIR;

  131.    if(FontIR == 0)                          //如果前面避障傳感器檢測(cè)到障礙物
  132.    {
  133.       ControlCar(8);                       //停止
  134.       delay_nms (300);                                           //停止300MS   防止電機(jī)反相電壓沖擊  導(dǎo)致系統(tǒng)復(fù)位
  135.           ControlCar(2);                                           //后退  
  136.           delay_nms (1000);                                           //后退1500MS  
  137.           ControlCar(3);                                           //
  138.           delay_nms (1800);       
  139.           goto NextRun;
  140.    }
  141.    
  142.    if(FontIR == 1 )
  143.    {
  144.       ControlCar(1);                      //右側(cè)沒(méi)有信號(hào)時(shí),開(kāi)始向左轉(zhuǎn)一定的角度
  145.       delay_nms (10);
  146.           goto NextRun;
  147.    }


  148.    goto Start;
  149.    NextRun:
  150.    ControlCar(1);
  151.   }
  152. }

  153. //備注:此例程僅為參考程序,請(qǐng)根據(jù)自己的道路進(jìn)行最優(yōu)化調(diào)整。
復(fù)制代碼

所有資料51hei提供下載:
兩路循跡 避障傳感器免費(fèi)開(kāi)源資料.rar (1.31 MB, 下載次數(shù): 69)



評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:294223 發(fā)表于 2018-3-27 21:41 | 只看該作者
真棒,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

板凳
ID:146874 發(fā)表于 2018-5-8 09:58 | 只看該作者
謝謝樓主分享,值得學(xué)習(xí)的資料

評(píng)分

參與人數(shù) 1黑幣 +3 收起 理由
15067539831 + 3

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:341867 發(fā)表于 2018-6-1 00:40 來(lái)自手機(jī) | 只看該作者
樓主大佬啊

評(píng)分

參與人數(shù) 1黑幣 +3 收起 理由
15067539831 + 3

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:370895 發(fā)表于 2018-7-13 15:04 | 只看該作者
謝謝樓主分享,值得學(xué)習(xí)的資料

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
1980613020 + 5 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:114330 發(fā)表于 2023-6-1 21:56 | 只看該作者
可以可以,資料非常實(shí)在,謝謝
回復(fù)

使用道具 舉報(bào)

7#
ID:543255 發(fā)表于 2023-6-27 07:42 | 只看該作者
bleach 發(fā)表于 2018-5-8 09:58
謝謝樓主分享,值得學(xué)習(xí)的資料

樓主有沒(méi)有這個(gè)完整的原理圖?
回復(fù)

使用道具 舉報(bào)

8#
ID:1102600 發(fā)表于 2023-12-4 22:05 | 只看該作者
謝謝樓主分享,值得學(xué)習(xí)的資料
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表