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

標題: 51單片機循跡避障小車系統原理圖程序 [打印本頁]

作者: 1767151896    時間: 2024-12-14 18:03
標題: 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)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品一二区 | 毛片一区二区三区 | 另类二区 | 欧美国产精品一区二区三区 | 国产1区2区在线观看 | 欧美成人h版在线观看 | 久久久久se | 亚洲免费高清 | 精品国产精品三级精品av网址 | av在线免费播放 | 国产成人免费视频网站视频社区 | 日韩精品1区2区3区 成人黄页在线观看 | 自拍在线| 日日夜夜操天天干 | 在线一区二区三区 | 欧美舔穴| 欧美九九九 | 国产精品一区二区av | 先锋资源网 | 日韩精品久久久 | 欧美日韩精品免费 | 懂色中文一区二区三区在线视频 | 久久精品99久久 | 毛片a级 | 国产清纯白嫩初高生视频在线观看 | 国产午夜精品一区二区三区嫩草 | 欧美精品久久 | 欧美激情在线精品一区二区三区 | 一级做a| 日本在线中文 | 欧美一区二区在线观看 | 精品成人av| 精品国产欧美一区二区三区成人 | 亚洲国产免费 | 久久99久久 | 一区二区精品在线 | 亚洲国产欧美91 | 久久久国产视频 | 国产精品毛片一区二区在线看 | 一本大道久久a久久精二百 国产成人免费在线 | 免费中文字幕日韩欧美 |