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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5469|回復: 1
打印 上一主題 下一主題
收起左側

五路灰度循跡小車PWM調速單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
我用的灰度傳感器是輸出模擬信號(D0)的,循黑線,而且因為一開始輪子轉的很快,所以我還用了PWM來調速附帶兩張灰度傳感器的圖片(有一張灰度傳感器的圖片上邊圈了一個紅圈,那是上拉電阻,不要忘記焊接這個上拉電阻,否則比較器輸出的電壓達不到4.5V左右)
灰度傳感器 輸出模擬信號的話就焊接D0,輸出數字信號就要把A0那一段也焊接上,當然要想焊接容易一些可以焊接數字信號那一端,當然還得用AD模塊轉換成模擬信號發送給單片機IO口,而且程序較難寫,雖然使用輸出模擬信號比較難焊接,但是程序簡單。

被圈出來的是上拉電阻


灰度傳感器



單片機源程序如下:
  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)/*左轉子程序,帶pivot的都是中間和左邊或者中間和右邊
  18. 同時檢測到軌跡,pivot就是以左電機或者右電機為軸進行旋轉*/
  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收到的數據
  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 從右往左第二個燈亮了就直走,以防小車停止
  38.          case 0x08 : Forward();break;//01000
  39.          case 0x00 : Forward();break;
  40.      case 0x06 : Pivot_Left();break;/*01100
  41.          這個繞軸轉的和不繞軸轉的
  42.          可以先隨便寫,到時候再替換
  43.          */
  44.          case 0x0c : Pivot_Right();break;//00110 中間和四號燈
  45.          case 0x10 : Pivot_Left();break;// 10000從右往左 最高位第五個,左轉
  46.          case 0x01 : Pivot_Right();break; // 00001從右往左第一個燈低位亮了,右轉
  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. //時鐘0中斷處理函數
  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. //時鐘1中斷處理函數
  86. void time1_int() interrupt 3 using 1
  87. {
  88.         TR1=0;
  89. ……………………

  90. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:542410 發表于 2019-5-19 22:00 | 只看該作者
多謝樓主分享!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表