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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機循跡避障小車系統原理圖程序

[復制鏈接]
跳轉到指定樓層
樓主
尋跡避障 小車 ,經典物件 !

制作出來的實物圖如下:


電路原理圖如下:


單片機源程序如下:
  1. #include <oled.h>
  2. #include <reg51.h>                                                                //51通用頭文件        
  3. #include <intrins.h>


  4. void delay(unsigned char sss)
  5. {
  6.   while(sss--);
  7. }


  8. sbit PWM=P1^2;//  P1.0輸出pwm
  9. sbit sd=P1^3;//  P1.0輸出pwm
  10. char time,ct;  // 定義占空比的變量
  11. int d,a,dw,ks=0;
  12. int y=2,z=2;
  13. int xs=220;

  14. sbit AIN2 =P2^4;        
  15. sbit AIN1 =P2^3;  
  16. sbit BIN2 =P2^5;        
  17. sbit BIN1 =P2^6;  
  18. sbit zuo =P1^0;        
  19. sbit you =P1^1;  
  20. sbit hw  =P2^0;

  21. void Delay100ms()                //@11.0592MHz
  22. {
  23.         unsigned char i, j, k;


  24.         i = 5;
  25.         j = 52;
  26.         k = 195;
  27.         do
  28.         {
  29.                 do
  30.                 {
  31.                         while (--k);
  32.                 } while (--j);
  33.         } while (--i);
  34. }



  35. void Delay180ms()                //@11.0592MHz
  36. {
  37.         unsigned char i, j, k;
  38.         _nop_();
  39.         _nop_();
  40.         i = 8;
  41.         j = 145;
  42.         k = 99;
  43.         do
  44.         {
  45.                 do
  46.                 {
  47.                         while (--k);
  48.                 } while (--j);
  49.         } while (--i);
  50. }

  51. void Delay300ms()                //@11.0592MHz
  52. {
  53.         unsigned char i, j, k;

  54.         _nop_();
  55.         _nop_();
  56.         i = 13;
  57.         j = 156;
  58.         k = 83;
  59.         do
  60.         {
  61.                 do
  62.                 {
  63.                         while (--k);
  64.                 } while (--j);
  65.         } while (--i);
  66. }

  67. void Delay250ms()                //@11.0592MHz
  68. {
  69.         unsigned char i, j, k;

  70.         _nop_();
  71.         _nop_();
  72.         i = 11;
  73.         j = 130;
  74.         k = 111;
  75.         do
  76.         {
  77.                 do
  78.                 {
  79.                         while (--k);
  80.                 } while (--j);
  81.         } while (--i);
  82. }


  83. void initExtInt0()
  84. {
  85.     IT0 = 1;       // 電平下降沿觸發
  86.     EX0 = 1;       // 開啟INT0中斷
  87.     EA = 1;        // 開總中斷
  88. }

  89. void Timer01Init() {
  90.    TMOD|=0X01;//選擇為定時器 0 模式,工作方式 1,僅用 TR0 打開啟動。
  91.    TH0=0XFC; //給定時器賦初值,定時 1ms
  92.    TL0=0X18;
  93.    ET0=1;//打開定時器 0 中斷允許
  94.    EA=1;//打開總中斷
  95.    TR0=1;//打開定時器
  96.                
  97. }

  98. void xj()
  99. {
  100. if(zuo==1&&you==0) {y=1;z=5;}
  101. if(zuo==0&&you==1) {y=5;z=1;}
  102. if(zuo==0&&you==0) {y=2;z=2;}
  103. }
  104. void fw()
  105. {
  106. if(zuo==1||you==1){z=5,y=1;Delay250ms();dw=0;a=0;}
  107. }
  108.         
  109. void bz()                                      //判斷小車前面是否存在障礙物
  110. {
  111.    if(hw==0){a=1;dw=1;}
  112.     while(a)
  113.    {
  114. switch (dw)                                    //循跡避障
  115.     {
  116.         case 1:z=5;y=1;Delay300ms();dw=2;break;//小車左轉           
  117.         case 2:z=2,y=2;Delay100ms();dw=3;break;//小車直行           
  118.               case 3:z=1,y=5;Delay180ms();dw=4;break;//小車右轉           
  119.         case 4:z=2,y=2;Delay100ms();dw=5;break;//小車直行           
  120.         case 5:z=1,y=5;Delay250ms();dw=6;break;//小車右轉     
  121.                      case 6:z=2,y=2;fw();break;             //判斷是否接觸黑線

  122.     }
  123.    }
  124. }
  125. void main()
  126. {
  127. Timer01Init();                                 //定時器初始化
  128.                 AIN2=1;                                    //tb6612正反設定
  129.                 AIN1=0;
  130.                 BIN2=1;
  131.                 BIN1=0;                                
  132. OLED_Init();
  133. OLED_Clear();
  134. OLED_ShowCHinese(0,0,0);        
  135. OLED_ShowCHinese(16,0,1);
  136. OLED_ShowNum(0,2,2023400,7,16);
  137. OLED_ShowNum(56,2,20365,5,16);        
  138. while(1)
  139.         {

  140.                 xj();                                     //調用循跡
  141.     bz();                                     //調用避障
  142.        }
  143.         }

  144. void IntT0() interrupt 1                        
  145. {
  146.          TH0=0xFC;
  147.          TL0=0x18;
  148.          time++;
  149.    ct++;
  150.         
  151.         if(time>=y ) {time=0;}    //右邊轉速
  152.         if(time<=d*ks) {PWM=1;}
  153.         else           {PWM=0;}
  154.         
  155.         if(ct>=z   )   {ct=0;}    //左邊轉速
  156.         if(ct<=d*ks)   {sd=1;}
  157.         else           {sd=0;}

  158. }
復制代碼

原理圖: 無
仿真: 無
代碼: 程序.7z (39.83 KB, 下載次數: 0)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片成人 | 久久久精选 | 久久精品一区 | 久久久久久国产精品免费 | 又黄又爽的网站 | 91精品国产综合久久婷婷香蕉 | 欧美亚洲国产成人 | 在线一区二区三区 | 亚洲一区免费在线 | 日韩在线电影 | 中文字幕免费中文 | 日本成人午夜影院 | 国产一区免费视频 | 久久久久久综合 | 久久高清国产视频 | 亚洲人人| 成人在线播放网址 | 国产精品a久久久久 | 日韩中文字幕第一页 | 久久精品亚洲精品国产欧美kt∨ | 中文久久| 97精品久久 | 国产一区二区精品在线观看 | 国产一区二区日韩 | 久久久久国产精品 | 亚洲一区二区三区四区五区午夜 | 成人乱人乱一区二区三区软件 | 欧美日一区 | 欧美日韩成人一区二区 | 精品国产乱码久久久久久蜜臀 | 免费簧片视频 | 成人在线观看免费 | 99精品国产一区二区三区 | 成人a视频在线观看 | av黄色片在线观看 | 国产一区二区在线看 | 国产精品美女久久久久 | 美女黄网站视频免费 | 国产精品日韩欧美一区二区三区 | 亚洲国产精品一区二区久久 | 337p日本欧洲亚洲大胆 |