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

標(biāo)題: 51單片機(jī)尋跡小車算法尋黑線程序 [打印本頁]

作者: 安shijia    時(shí)間: 2018-4-25 18:18
標(biāo)題: 51單片機(jī)尋跡小車算法尋黑線程序
51尋跡小車算法

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

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

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

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

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

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

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


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

  41. }

  42. void qianjin()
  43. {
  44.    M1A=1;                                   
  45.    M1B=0;                                   
  46.    M2A=1;                                   
  47.    M2B=0;
  48. }

  49. void houtui()
  50. {
  51.    M1A=0;                                   
  52.    M1B=1;                                   
  53.    M2A=0;                                   
  54.    M2B=1;
  55. }

  56. void zuozhuan()
  57. {
  58.    M1A=0;                                   
  59.    M1B=1;                                   
  60.    M2A=1;                                   
  61.    M2B=0;
  62. }

  63. void youzhuan()
  64. {
  65.    M1A=1;                                   
  66.    M1B=0;                                   
  67.    M2A=0;                                   
  68.    M2B=1;
  69. }

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


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

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

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

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

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


  146.    goto Start;
  147.    NextRun:
  148.    ControlCar(8);
  149.   }
  150. }

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

所有資料51hei提供下載:
循跡 尋黑線程序.rar (31.88 KB, 下載次數(shù): 86)



作者: 956791664    時(shí)間: 2018-4-27 16:18
你好,方便發(fā)一張仿真圖的照片嗎?
作者: 荷去河從    時(shí)間: 2018-4-29 17:58
請(qǐng)問一下,第146行的SB1是什么意思?
作者: 1329890441    時(shí)間: 2018-6-1 01:02
電機(jī)反轉(zhuǎn)是怎么做到的
作者: 小糖豆    時(shí)間: 2018-9-14 11:12
荷去河從 發(fā)表于 2018-4-29 17:58
請(qǐng)問一下,第146行的SB1是什么意思?

蜂鳴器的端口,前面定義P0^6端口

作者: 安shijia    時(shí)間: 2018-11-30 14:30
956791664 發(fā)表于 2018-4-27 16:18
你好,方便發(fā)一張仿真圖的照片嗎?

沒有仿真圖,這是上學(xué)期的課設(shè)
作者: whynot6    時(shí)間: 2019-7-1 16:53
用什么軟件編程呀
作者: 嘟嘟胖子    時(shí)間: 2019-7-17 15:25
備注很詳細(xì),資料不錯(cuò),學(xué)習(xí)一下 ...
作者: 彼岸.    時(shí)間: 2019-9-27 11:10
采用幾個(gè)紅外對(duì)管
作者: accustom    時(shí)間: 2020-3-17 20:02
方便分享一下設(shè)計(jì)嗎ummm




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美成人午夜 | 一级片在线观看视频 | 午夜精品视频 | 成人做爰免费视频免费看 | 国产在线欧美 | 伊人av在线 | 91在线看片 | 亚洲区一区二 | 亚洲小视频 | 精品亚洲一区二区三区 | 亚洲欧美视频一区 | 九月色婷婷 | 国产成人精品一区二区三区在线 | 午夜精品视频 | 伊人久久国产 | 日韩毛片在线播放 | 伊人一区 | 91日韩在线 | 国产伦精品一区二区三区视频我 | 亚洲人在线观看 | 国产91av在线| 在线免费观看av网站 | 高潮毛片又色又爽免费 | 中文在线观看免费视频 | 一区二区三区在线播放 | 日韩网站在线观看 | 久久精品国产77777蜜臀 | 18在线观看免费入口 | 特级黄色大片 | 精品第一页 | 色人人 | 在线观看的av | 福利片国产| 夜色在线影院 | 亚洲视频在线看 | www4h| 日韩在线欧美 | 黄色一级片网站 | 青草av在线| 欧美综合激情 | 日韩色在线 |