欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 五路灰度循跡小車PWM調(diào)速單片機(jī)源程序 [打印本頁(yè)]

作者: 七星游龍    時(shí)間: 2019-5-6 16:33
標(biāo)題: 五路灰度循跡小車PWM調(diào)速單片機(jī)源程序
我用的灰度傳感器是輸出模擬信號(hào)(D0)的,循黑線,而且因?yàn)橐婚_(kāi)始輪子轉(zhuǎn)的很快,所以我還用了PWM來(lái)調(diào)速附帶兩張灰度傳感器的圖片(有一張灰度傳感器的圖片上邊圈了一個(gè)紅圈,那是上拉電阻,不要忘記焊接這個(gè)上拉電阻,否則比較器輸出的電壓達(dá)不到4.5V左右)
灰度傳感器 輸出模擬信號(hào)的話就焊接D0,輸出數(shù)字信號(hào)就要把A0那一段也焊接上,當(dāng)然要想焊接容易一些可以焊接數(shù)字信號(hào)那一端,當(dāng)然還得用AD模塊轉(zhuǎn)換成模擬信號(hào)發(fā)送給單片機(jī)IO口,而且程序較難寫,雖然使用輸出模擬信號(hào)比較難焊接,但是程序簡(jiǎn)單。

被圈出來(lái)的是上拉電阻


灰度傳感器



單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char QTIState;
  5. unsigned char pulses;
  6. sbit IN1=P1^1;
  7. sbit IN2=P1^2;
  8. sbit IN3=P1^3;
  9. sbit IN4=P1^4;
  10. sbit ENA=P2^0;
  11. sbit ENB=P2^1;          


  12. uint MA=0,MB=0;
  13. uint SpeedA=20;//50%占空比
  14. uint SpeedB=20;


  15. void Forward(void)//向前行走子程序
  16. {IN1=0;IN2=1;IN3=0;IN4=1;}
  17. void Pivot_Left(void)/*左轉(zhuǎn)子程序,帶pivot的都是中間和左邊或者中間和右邊
  18. 同時(shí)檢測(cè)到軌跡,pivot就是以左電機(jī)或者右電機(jī)為軸進(jìn)行旋轉(zhuǎn)*/
  19. {IN1=0;IN2=1;IN3=1;IN4=0;}
  20. void Pivot_Right(void)
  21. {IN1=1;IN2=0;IN3=0;IN4=1;}
  22. /*void Rotate_Left(void)
  23. {IN1=1;IN2=0;IN3=0;IN4=1;}
  24. void Rotate_right(void)
  25. {IN1=0;IN2=1;IN3=1;IN4=0;}*/
  26. void Get_QTI_State()
  27. {
  28.         QTIState = P3&0x1f;        /*P3接灰度傳感器那五路,P3收到的數(shù)據(jù)
  29.         和0001 1111按位與*/
  30. }

  31. void Follow_Line(void)
  32. {
  33.      Get_QTI_State();
  34.      switch(QTIState)
  35.     {
  36.      case 0x04 : Forward();break;//00100
  37.          case 0x02 : Forward();break;//00010 從右往左第二個(gè)燈亮了就直走,以防小車停止
  38.          case 0x08 : Forward();break;//01000
  39.          case 0x00 : Forward();break;
  40.      case 0x06 : Pivot_Left();break;/*01100
  41.          這個(gè)繞軸轉(zhuǎn)的和不繞軸轉(zhuǎn)的
  42.          可以先隨便寫,到時(shí)候再替換
  43.          */
  44.          case 0x0c : Pivot_Right();break;//00110 中間和四號(hào)燈
  45.          case 0x10 : Pivot_Left();break;// 10000從右往左 最高位第五個(gè),左轉(zhuǎn)
  46.          case 0x01 : Pivot_Right();break; // 00001從右往左第一個(gè)燈低位亮了,右轉(zhuǎn)
  47.     default:break;
  48.         }
  49. }


  50. void main(void)
  51. {

  52.         TH0 = 0xF4;
  53.         TL0 = 0x48;
  54.         TH1 = 0xF4;
  55.         TL1 = 0x48;
  56.         TMOD = 0x11;
  57.         TR0 = 1;
  58.         TR1 = 1;
  59.         ET0 = 1;
  60.         ET1 = 1;
  61.         EA  = 1;          
  62.         while(1)
  63.         {
  64.                 Follow_Line();
  65.         }
  66. }                  

  67. //時(shí)鐘0中斷處理函數(shù)
  68. void time0_int() interrupt 1 using 1
  69. {
  70.         TR0=0;                               
  71.         TH0=0xF4;
  72.         TL0=0x48;
  73.         MA++;                                                 
  74.         if(MA< SpeedA)
  75.         {
  76.           ENA = 1;
  77.         }
  78.         else ENA = 0;
  79.         if(MA == 40)
  80.         {
  81.           MA = 0;
  82.         }
  83.         TR0 = 1;
  84. }

  85. //時(shí)鐘1中斷處理函數(shù)
  86. void time1_int() interrupt 3 using 1
  87. {
  88.         TR1=0;
  89. ……………………

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

所有資料51hei提供下載:
51黑論壇_五路灰度循跡小車PWM調(diào)速源代碼.rar (9.71 KB, 下載次數(shù): 37)



作者: 不上80不改名    時(shí)間: 2019-5-19 22:00
多謝樓主分享!




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