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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1522|回復: 0
收起左側

藍牙小車循跡

[復制鏈接]
ID:912725 發表于 2021-4-26 21:54 | 顯示全部樓層 |閱讀模式
  • #include<reg52.h>
  • typedef unsigned char u8;        //宏定義無符號字符型         8位
  • typedef unsigned int  u16;        //宏定義無符號整形                16位
  • sbit PWM1 = P2^6;          //左電機高電平
  • sbit PWM2 = P2^5;          //右電機高電平
  • sbit IN1 = P2^4;
  • sbit IN2 = P2^3;          //左電機
  • sbit IN3 = P2^2;
  • sbit IN4 = P2^1;          //右電機
  • sbit S1 = P1^1;                  //左紅外避障模塊
  • sbit S2 = P1^2;                  //右紅外避障模塊
  • sbit S3 = P1^3;                  //左紅外尋跡模塊
  • sbit S4 = P1^4;                  //右紅外尋跡模塊
  • sbit K1 = P3^2;                  //功能轉換按鍵
  • u8 connt;                          //調速周期
  • u8 PWM_NO;                          //高電平時間
  • u8 COM = 0;                          //功能控制位
  • u8 t=0;                                  //判斷串口中斷是否執行
  • void time(void)                                          //定時計時器初始化函數
  • {
  •     TMOD = 0x01;                                  //中斷方式1
  •     TH0 = 0xfe;
  •     TL0 = 0x0c;                                          //0.5ms
  •     EA = 1;                                                  //打開總中斷
  •     ET0 = 1;                                          //打開計時器中斷
  •     TR0 = 1;                                          //啟動計時器
  • }
  • void InitUART(void)                 //串口中斷初始化函數
  • {
  •     SCON=0x50;                        //設置為工作方式1
  •         TMOD=0x20;                        //設置計數器工作方式2
  •         PCON=0x00;                        //波特率加倍
  •         TH1=0xfd;                                //計數器初始值設置,注意波特率是9600的
  •         TL1=0xfd;
  •         ES=1;                                                //打開接收中斷
  •         EA=1;                                                //打開總中斷
  •         TR1=1;                                        //打開計數器
  • }
  • void delay( u16 k )                   //延時大約1ms
  • {
  •     u16 i,j;
  •         for(i=k;i>0;i--)
  •         for(j=120;j>0;j--);
  • }
  • void SC()                                //剎車
  • {
  •     IN1 = 0;
  •         IN2 = 0;
  •         IN3 = 0;
  •         IN4 = 0;
  • }
  • void QJ()                                //前進
  • {
  •     IN1 = 1;
  •         IN2 = 0;
  •         IN3 = 1;
  •         IN4 = 0;
  • }
  • void HT()                                //后退
  • {
  •     IN1 = 0;
  •         IN2 = 1;
  •         IN3 = 0;
  •         IN4 = 1;
  • }
  • void ZZ1()                                //左大轉
  • {
  •     IN1 = 0;
  •         IN2 = 1;
  •         IN3 = 1;
  •         IN4 = 0;
  • }
  • void ZZ2()                                //左小轉
  • {
  •     IN1 = 0;
  •         IN2 = 0;
  •         IN3 = 1;
  •         IN4 = 0;
  • }
  • void YZ1()                                //右大轉
  • {
  •     IN1 = 1;
  •         IN2 = 0;
  •         IN3 = 0;
  •         IN4 = 1;
  • }
  • void YZ2()                                //右小轉
  • {
  •     IN1 = 1;
  •         IN2 = 0;
  •         IN3 = 0;
  •         IN4 = 0;
  • }
  • void HY()                                //后右轉
  • {
  •     IN1 = 0;
  •         IN2 = 0;
  •         IN3 = 0;
  •         IN4 = 1;
  • }
  • void lin1()                                //紅外避障程序
  • {
  •     if( S1 && S2 )                //兩探頭不反應,小車前進
  •     {
  •         QJ();
  •     }
  •     if( !S1 && S2 )                //左探頭反應,小車右轉
  •     {
  •             SC();
  •             delay(100);
  •             HT();
  •             delay(400);
  •             YZ1();
  •             delay(550);
  •             SC();
  •             delay(100);
  •     }
  •     if( S1 && !S2 )                //右探頭反應,小車左轉
  •     {
  •          SC();
  •          delay(100);
  •          HT();
  •          delay(400);
  •          ZZ1();
  •          delay(550);
  •          SC();
  •          delay(100);
  •     }
  •     if( !S1 && !S2 )                //兩探頭反應,小車后退,右轉
  •     {
  •           SC();
  •           delay(100);
  •           HT();
  •           delay(400);
  •           HY();
  •           delay(550);
  •     }
  • }
  • void lin2()                                           //尋跡功能程序
  • {
  •     if( !S3 && !S4 )                //兩探頭反應,小車前進
  •     {
  •          QJ();
  •          delay(150);
  •          SC();
  •          delay(90);
  •     }
  •     if( S1 && S2 )                //兩探頭反應,小車停止
  •     {
  •         SC();
  •     }
  •     if( S3 && !S4 )                //左探頭不反應,小車右轉
  •     {
  •           SC();
  •           delay(90);
  •           YZ2();
  •           delay(120);
  •     }
  •     if( !S3 && S4 )                //右探頭不反應,小車左轉
  •     {
  •            SC();
  •            delay(90);
  •            ZZ2();
  •            delay(90);
  •     }
  • }
  • void lin3()                                                                   //物塊追蹤功能程序
  • {
  •     if( S1 && S2 )                //兩探頭不反應,小車停止
  •     {
  •           SC();
  •     }
  •     if( !S1 && !S2 )                //兩探頭反應,小車前進
  •     {
  •            QJ();
  •     }
  •     if( !S1 && S2 )                //右探頭不反應,小車左轉
  •     {
  •            ZZ1();
  •     }
  •     if( S1 && !S2 )                //左探頭不反應,小車右轉
  •     {
  •            YZ1();
  •     }
  • }
  • void lin4()                                                                  //魔術手功能程序
  • {
  •      if( S1 && S2 )                //兩探頭不反應,小車前進
  •      {
  •            QJ();
  •      }
  •      if( !S1 && !S2 )                //兩探頭反應,小車后退
  •      {
  •             HT();
  •      }
  •      if( !S1 && S2 )                //左探頭反應,小車后退
  •      {
  •             HT();
  •      }
  •      if( S1 && !S2 )                //右探頭反應,小車后退
  •      {
  •             HT();
  •      }
  • }
  • void konzi()                  //控制位
  • {
  •     if( K1 == 0 )
  •     {
  •         delay(10);
  •         if( K1 == 0 )
  •         {
  •             COM++;
  •         }
  •         while( !K1 );
  •     }
  •     if( COM == 5)
  •     {
  •         COM = 0;
  •                 t=0;
  •     }
  •     if( COM == 0 )
  •     {
  •         PWM_NO = 14;
  •     }
  •     else
  •     PWM_NO = 15;
  • }
  • void main ()                                   //主函數
  • {
  •     time();                                                     //計時器初始化
  •     InitUART();                                                 //串口初始化
  •     connt = 20;                                                 //PWM的一個周期
  •     PWM_NO = 14;                                         //調速,數值越大速度越慢
  •     IN1 = 0;
  •     IN2 = 0;
  •     IN3 = 0;
  •     IN4 = 0;                                                 //待機
  •     while(1)
  •     {
  •             konzi();
  •         switch(COM)                                           //功能選擇區
  •             {
  •                 case 0: lin1();break;                //避障
  •                 case 1: lin2();break;                //尋跡
  •                 case 2: lin3();break;                //物體跟隨
  •                 case 3: lin4();break;                //魔術手
  •                     case 4: t=1;SC();while(1);break;  //跳轉到藍牙控制
  •             }
  •     }
  • }
  • void Timer0Interrupt(void) interrupt 1                                 //計時器中斷函數
  • {
  •     u8 non;
  •     TH0 = 0xfe;
  •     TL0 = 0x0c;
  •     non++;
  •     if( non == PWM_NO )
  •     {
  •              PWM1 = 1;
  •          PWM2 = 1;
  •     }
  •     if( non == connt )
  •     {
  •              non = 0;
  •          if( PWM_NO != 0)
  •         {
  •              PWM1 = 0;
  •              PWM2 = 0;
  •         }

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美大片一区 | 精品亚洲一区二区三区 | 91欧美| 久久大| 麻豆视频在线免费观看 | 国产精品99久久久久久久久久久久 | 毛色毛片免费看 | 国产欧美精品一区二区色综合 | 久久国产精品视频观看 | 女朋友的闺蜜3韩国三级 | 精品国产精品国产偷麻豆 | 久久激情视频 | 911网站大全在线观看 | 中文字幕av在线 | 国产精品久久久久久久久久三级 | 狠狠亚洲 | 在线观看免费av网 | 国产精品久久久久久久久久久免费看 | 欧美激情综合网 | 懂色一区二区三区免费观看 | 久久久精 | 精品www | www.中文字幕.com | 国产精品成人一区 | 91在线免费观看 | 狠狠狠 | 美女毛片 | 91在线看视频 | 无码一区二区三区视频 | 国产成人jvid在线播放 | 精品无码久久久久久国产 | 一区影院 | 羞羞免费网站 | 日日操夜夜干 | 麻豆久久久9性大片 | www久久 | 精品亚洲国产成av人片传媒 | 密乳av| 成人欧美一区二区三区在线观看 | 亚洲成人一区二区三区 | 农村黄性色生活片 |