標(biāo)題: 四個(gè)紅外傳感器四輪循跡小車(chē)源程序 [打印本頁(yè)]

作者: 夜風(fēng)凜凜    時(shí)間: 2017-5-20 11:50
標(biāo)題: 四個(gè)紅外傳感器四輪循跡小車(chē)源程序
四個(gè)紅外傳感器的小車(chē)循跡源碼修改版,更穩(wěn)定,感興趣的同學(xué)可以拿去參考一下,每輛車(chē)都不一樣,速度可能要調(diào)一下。


單片機(jī)源程序如下:
  1. /*從小車(chē)后面觀察,從左向右的紅外檢測(cè)分別為DD1,DD2,DD3,DD4
  2.   DD1---P0^3
  3.   DD2---P0^2
  4.   DD3---P0^1
  5.   DD4---P0^0
  6. */

  7. #include<reg51.h>
  8. #define uchar unsigned char
  9. #define uint unsigned int

  10. extern void Motor_Left(bit ReverOrCoro, uchar DutyCycle); //左邊電機(jī)控制函數(shù)
  11. extern void Motor_Right(bit ReverOrCoro, uchar DutyCycle); //右邊電機(jī)控制函數(shù)
  12. void Timer0Config(); //        配置定時(shí)器0

  13. void zhizou();
  14. void dazhuan1();
  15. void dazhuan2();
  16. void weitiao1();
  17. void weitiao2();

  18. sbit ENA = P1^5; //定義電機(jī)使能端                                   
  19. sbit ENB = P1^0;
  20. uchar a;
  21. uchar Infrared; //檢測(cè)P0低四位的值

  22. void main()
  23. {
  24.         Timer0Config();
  25.         ENA = 1; ENB = 1;
  26.         Infrared = P0 & 0x0F; //取出P0口低四位
  27.         while(1)
  28.         {               
  29.                 switch(Infrared)
  30.                 {
  31.                         case 0x00:                                                   
  32.                                               zhizou(); break; //未檢測(cè)到黑線,直行
  33.                         case 0x08:
  34.                                        dazhuan1(); break; //左邊第一個(gè)檢測(cè)到黑線,左大轉(zhuǎn)
  35.                         case 0x04:
  36.                                        weitiao1(); break; //左邊第二個(gè)檢測(cè)到黑線,左微調(diào)
  37.                         case 0x02:
  38.                                        weitiao2(); break; //右邊第一個(gè)檢測(cè)到黑線,右微調(diào)
  39.                         case 0x01:
  40.                                        dazhuan2(); break; //右邊第二個(gè)檢測(cè)到黑線,右大轉(zhuǎn)
  41.                         case 0x0C:
  42.                                                          zhizou(); break; //左邊兩個(gè)同時(shí)檢測(cè)到黑線,直行
  43.                         case 0x0E:
  44.                                                          zhizou(); break; //左邊三個(gè)同時(shí)檢測(cè)到黑線,直行
  45.                         case 0x03:
  46.                                                          zhizou(); break; //右邊兩個(gè)同時(shí)檢測(cè)到黑線,直行
  47.                         case 0x07:
  48.                                                          zhizou(); break; //右邊三個(gè)同時(shí)檢測(cè)到黑線,直行
  49.                         case 0x0f:
  50.                                                          zhizou(); break; //全部檢測(cè)到,直行
  51.                         case 0x06:
  52.                                                          zhizou(); break; //中間兩個(gè)檢測(cè)到,直行
  53.                         case 0x09:
  54.                                                          zhizou(); break; //旁邊兩個(gè)檢測(cè)到,直行
  55.                         case 0x0A:
  56.                                                          weitiao1(); break; //左一右一檢測(cè)到,左微調(diào)
  57.                         case 0x05:
  58.                                                          weitiao2(); break; //左二右二檢測(cè)到,右微調(diào)
  59.                         case 0x0b:
  60.                                                          zhizou(); break; //左二未檢測(cè)到,直行
  61.                         case 0x0d:
  62.                                                          zhizou(); break; //右一未檢測(cè)到,直行
  63.                         default:   break;
  64.                 }
  65.         }
  66. }

  67. void Timer0Config()
  68. {
  69.         TMOD &= 0xF0;
  70.         TMOD |= 0x01;
  71.         TH0 = 0xFF;
  72.         TL0 = 0x7E;
  73.         EA = 1;
  74.         ET0 = 1;
  75.         TR0 = 1;
  76. }

  77. void zhizou()
  78. {
  79.          Motor_Left(1, 100), Motor_Right(1, 100);
  80.          Infrared = P0 & 0x0F;
  81. }

  82. void dazhuan1()
  83. {
  84.         a=1;
  85.         
  86.         while(a)
  87.         {
  88.                 Motor_Left(0, 80); Motor_Right(1, 80);
  89.                 Infrared = P0 & 0x0F;
  90.                 if(Infrared==0x04)
  91.                 {
  92.                                 Motor_Left(1, 100); Motor_Right(0, 100); break;
  93.                 }
  94.                 else if(Infrared==0x02)
  95.                 {
  96.                                 Motor_Left(1, 100); Motor_Right(0, 100); break;
  97.                 }
  98.         }
  99.         Infrared = P0 & 0x0F;
  100. }

  101. void dazhuan2()
  102. {
  103.         a=1;
  104.         
  105.         while(a)
  106.         {
  107.                 Motor_Left(1, 80); Motor_Right(0, 80);
  108.                 Infrared = P0 & 0x0F;
  109.                 if(Infrared==0x02)
  110.                 {
  111.                                 Motor_Left(0, 100); Motor_Right(1, 100); break;

  112.                 }
  113.                 else if(Infrared==0x04)
  114.                 {
  115.                                 Motor_Left(0, 100); Motor_Right(1, 100); break;

  116.                 }
  117.         }
  118.         Infrared = P0 & 0x0F;
  119. }

  120. void weitiao1()
  121. {
  122.         a=1;
  123.         while(a)
  124.         {
  125.                 Motor_Left(0, 60); Motor_Right(1, 100);
  126.                 Infrared = P0 & 0x0F;
  127.                 switch(Infrared)
  128.                 {
  129.                         case 0x04:
  130.                                 a=1; break;
  131.                         default:
  132.                                 a=0; break;
  133.                 }
  134.         }
  135. ……………………

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


所有資料51hei提供下載:
循跡決賽程序1.zip (45.32 KB, 下載次數(shù): 685)



作者: huliwei    時(shí)間: 2017-6-11 17:24
很好,謝謝!
作者: JIN1002    時(shí)間: 2017-11-8 17:32
兄弟你l298n的ena,enb怎么和單片機(jī)接的,需要拔跳線帽么

作者: GG276192978    時(shí)間: 2017-11-27 15:22
用的什么紅外傳感器啊,避障效果好么,避障距離是多遠(yuǎn)啊
作者: 風(fēng)雨無(wú)阻666    時(shí)間: 2017-12-5 14:30
那個(gè)是跟傳感器的類(lèi)別和數(shù)目,還有安裝的高度位置有關(guān)系吧,具體有什么進(jìn)一步的要求呢?
作者: 愛(ài)喝檸檬水    時(shí)間: 2017-12-12 19:54
感謝分享
作者: 萬(wàn)子鑫    時(shí)間: 2018-1-21 10:54
樓主,我現(xiàn)在只有兩個(gè)傳感器來(lái)制作,直接復(fù)制黏貼你的代碼OK嗎?
作者: qjzyx    時(shí)間: 2018-2-21 17:51
該天做個(gè)玩,謝謝分享
作者: wyj94    時(shí)間: 2018-3-25 17:00
感謝感謝
作者: a422714088    時(shí)間: 2018-4-16 23:06
如果有原理圖就更好了
作者: 薩杜斯    時(shí)間: 2018-5-13 14:36
不錯(cuò)不錯(cuò)
作者: epaysh    時(shí)間: 2018-5-14 06:21
如果硬件連接有特殊要求,最好能發(fā)圖說(shuō)明下,非常感謝
作者: epaysh    時(shí)間: 2018-5-15 05:37
很感謝你的分享
作者: imsssu    時(shí)間: 2018-6-1 09:39
感謝樓主分享
作者: MKASF    時(shí)間: 2018-6-26 10:06
很棒,謝謝樓主分享
作者: 紫竹1    時(shí)間: 2018-7-6 12:30
謝謝
作者: 路明非    時(shí)間: 2018-7-13 17:24
紫竹1 發(fā)表于 2018-7-6 12:30
謝謝

請(qǐng)問(wèn)能給我的郵箱發(fā)一份嗎191969536@qq.com,萬(wàn)分感謝!!急用
作者: 幻想夢(mèng)想天生    時(shí)間: 2018-8-9 01:04
非常感謝
作者: 他德超    時(shí)間: 2018-11-4 16:50
謝謝你了
作者: pw2018    時(shí)間: 2018-11-26 15:02
很好的程序
作者: pw2018    時(shí)間: 2018-11-26 15:02
謝謝大佬
作者: asongl    時(shí)間: 2018-11-27 18:22
謝謝,很好用
作者: 他光雄    時(shí)間: 2018-11-27 21:31
沒(méi)有主函數(shù)


作者: 15649059827    時(shí)間: 2018-12-8 15:02
贊一個(gè)
作者: 吳昊浪    時(shí)間: 2018-12-23 15:07
他光雄 發(fā)表于 2018-11-27 21:31
沒(méi)有主函數(shù)

有啊



作者: 吳昊浪    時(shí)間: 2018-12-26 10:58
左大轉(zhuǎn)和右大轉(zhuǎn)里的判斷程序是不是重了
作者: clairechin25    時(shí)間: 2019-1-16 10:44
謝謝分享!
作者: 又是晴天    時(shí)間: 2019-2-12 22:14
學(xué)習(xí)一下
作者: 15278556431    時(shí)間: 2019-3-22 16:16
贊一個(gè)
作者: 15278556431    時(shí)間: 2019-3-27 20:32
樓主,有沒(méi)有原理圖啊��?
作者: 馬良馬良    時(shí)間: 2019-4-11 10:28
證號(hào)啊,4路循跡4路電機(jī),我正需要,感謝
作者: 三位數(shù)    時(shí)間: 2019-4-11 18:08
為什么我的文件打不開(kāi)
作者: yuanbo99    時(shí)間: 2019-4-14 23:01
很有用,感謝
作者: chengweiyn    時(shí)間: 2019-4-15 19:29
謝謝分享
作者: jayxie    時(shí)間: 2019-4-26 23:29
學(xué)習(xí)一下  
作者: ttt123123    時(shí)間: 2019-4-29 22:40
好難啊
作者: ttt123123    時(shí)間: 2019-4-30 18:54
有沒(méi)有仿真啊
作者: 張濤boy    時(shí)間: 2019-5-1 13:32
請(qǐng)問(wèn)能給我的郵箱發(fā)一份嗎1543739381@qq.com,萬(wàn)分感謝��!
作者: SGFS    時(shí)間: 2019-7-21 10:34

請(qǐng)問(wèn)能給我的郵箱發(fā)一份嗎2298217400@qq.com,萬(wàn)分感謝!
作者: 飛躍吧    時(shí)間: 2019-8-6 14:39
謝謝,學(xué)習(xí)了
作者: anbaba    時(shí)間: 2019-8-7 17:27
很好,謝謝
作者: 就是這樣酷    時(shí)間: 2019-9-25 21:58
請(qǐng)問(wèn)樓主是怎么把L289N還有最小系統(tǒng)固定在萬(wàn)用板上的呢?用熱熔膠固定的嗎?
作者: HZ_aq    時(shí)間: 2019-10-20 17:01
驅(qū)動(dòng)怎么連接了呀
作者: wuxiandian    時(shí)間: 2019-10-20 23:21
怎么沒(méi)定義n1到n4?
作者: wuxiandian    時(shí)間: 2019-10-21 08:08
wuxiandian 發(fā)表于 2019-10-20 23:21
怎么沒(méi)定義n1到n4?

看錯(cuò)了
作者: 風(fēng)過(guò)繁花    時(shí)間: 2019-11-11 21:40
頂!挺好的
作者: 吳小帥ya    時(shí)間: 2019-11-21 14:22
電機(jī)沒(méi)定義啊

作者: 1054491742    時(shí)間: 2019-12-13 15:16
請(qǐng)問(wèn)能給我的郵箱發(fā)一份嗎1054491742@qq.com,萬(wàn)分感謝!  
作者: 夜風(fēng)凜凜    時(shí)間: 2020-6-9 10:06
風(fēng)雨無(wú)阻666 發(fā)表于 2017-12-5 14:30
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

能接受到信號(hào)就行,數(shù)目是四個(gè)
作者: 夜風(fēng)凜凜    時(shí)間: 2020-6-9 10:07
a422714088 發(fā)表于 2018-4-16 23:06
如果有原理圖就更好了

C:\Users\軒哥無(wú)敵\Desktop\原理圖.jpg
作者: gqth6020    時(shí)間: 2020-6-26 10:57
下載學(xué)習(xí)一下,剛好用得上,謝謝!
作者: DragonL    時(shí)間: 2020-9-23 19:06
非常有用,正好幫到電賽的準(zhǔn)備
作者: 區(qū)區(qū)&致命傷    時(shí)間: 2021-1-26 11:49
非常喜歡,就缺這部分代碼了,謝謝‘’
作者: 區(qū)區(qū)&致命傷    時(shí)間: 2021-1-26 16:04
兄弟假如說(shuō)把程序弄兩份組成前后各四路在避障時(shí)是否更靈敏/
作者: 區(qū)區(qū)&致命傷    時(shí)間: 2021-1-27 09:27
為啥不能用呀?程序不知道哪里出問(wèn)題了,一直報(bào)錯(cuò)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1