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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求教這個藍牙遙控小車里的str函數有什么功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:435624 發表于 2019-1-19 14:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  #include<AT89x51.H>
        #define Leftgo      {P1_2=1,P1_3=0;}      //左電機前
        #define Leftback    {P1_2=0,P1_3=1;       //左電機后
        #define LeftStop    {P1_2=0,P1_3=0;}      // 左電機停            
        #define Rightgo     {P1_4=1,P1_5=0;}
        #define Rightback   {P1_4=0,P1_5=1;
        #define RightStop   {P1_4=0,P1_5=0;}

        #define left     'C'
        #define right    'D'
        #define up       'A'
        #define down     'B'
        #define stop     'F'

        #define uint    unsigned int   
        #define uchar   unsigned char  

        char code str[] =  "向前!\n";
        char code str1[] = "向后!\n";
        char code str2[] = "向左\n";
        char code str3[] = "向右!\n";
        char code str4[] = "停!\n";

        bit  flag_ly=0;   //藍牙
        bit  flag    =0;  
        bit  flag_bz =0;  //紅外避障
       
        unsigned char  i=0;
        unsigned char  dat=0;
        unsigned char  buff[5]=0;//接受緩沖字節



        #define   Lled   P2^6         //左紅外傳感器
        #define   Rled   P2^5         //右紅外傳感器
       
        sbit BUZZ = P2^1;    //蜂鳴器          
/************************************************************************/       
//延時函數       
   void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
}

/************************************************************************/
//字符串發送函數
          void send_str( )             // 傳送字符
    {
            unsigned char i = 0;
            while(str[i] != '\0')
           {
                SBUF = str[i];
                while(!TI);                                // 等待字符串送
                TI = 0;                                        //清楚字符串送標志
                i++;                                        // 下一個字符
           }       
    }
       
                  void send_str1( )      
    {
            unsigned char i = 0;
            while(str1[i] != '\0')
           {
                SBUF = str1[i];
                while(!TI);
                TI = 0
                i++;
           }       
    }       

                          void send_str2( )
    {
            unsigned char i = 0;
            while(str2[i] != '\0')
           {
                SBUF = str2[i];
                while(!TI);       
                TI = 0;
                i++;       
           }       
    }       
                   
                          void send_str3()   
    {
            unsigned char i = 0;
            while(str3[i] != '\0')
           {
                SBUF = str3[i];
                while(!TI);       
                TI = 0
                i++;
           }       
    }       

              void send_str4()  
    {
            unsigned char i = 0;
            while(str4[i] != '\0')
           {
                SBUF = str4[i];
                while(!TI);
                TI = 0;
                i++;
           }       
    }       
                   
                   
/************************************************************************/
     void  run(void)
{

         Leftgo ;  
         Rightgo ;
}


     void  backrun(void)
{

         Leftback ;
         Rightback ;
}


     void  rightrun(void)
{


          Leftgo ;
         Rightback ;
}


     void   leftrun(void)
{

         
         Leftback ;
         Rightgo ;
}

     void  stoprun(void)
{

         LeftStop ;
         RightStop ;
}

/************************************************************************/
void sint() interrupt 4          //中斷接受三個字節
{

    if(RI)                         //是否接受中斷
    {
       RI=0;
       dat=SBUF;
       if(dat=='O'&&(i==0)) //接受數據第一幀
         {
            buff[i]=dat;
            flag=1;        //開始接受數據
         }
       else
      if(flag==1)
     {
      i++;
      buff[i]=dat;
      if(i>=2)
      {i=0;flag=0;flag_ly=1 ;}  //停止接收
     }
         }
}
/*********************************************************************/                 
        void main(void)
{
    P1=0X00;              //關電機
                BUZZ=0;
                delay(50);
                BUZZ=1;
    TMOD=0x20;  
    TH1=0xFd;                     //11.0952,9600波特率
    TL1=0xFd;
    SCON=0x50;  
    PCON=0x00;
    TR1=1;
          ES=1;   
    EA=1;   
        while(1)
        {
           if(flag_bz == 1)       //切換到避障模式
      {
         if(Lled==1&&Rled==1)

                         run();
                       
                          else
                         {                          
                                      if(Lled==1&&Rled==0)            //右邊檢測到紅外信號
                                  {
                                            leftrun();       
                                           delay(40);

                             }
                          
                                           if(Rled==1&&Lled==0)       
                                  {          
                                     
                                         
                                           rightrun();
                                          delay(40);

                                  }
                                                                  if(Rled==0&&Lled==0)       
                                  {          
                                    backrun();
                                        delay(40);
                                        rightrun();       
                                        delay(90);
                                  }
                        }

        }
          
          if(flag_ly==1)
           {
                flag_ly=0;
                if(buff[0]=='O'&&buff[1]=='N')        //第一個字節為0,第二個字節為N,第三個字節為控制碼
                switch(buff[2])
             {
                      case up :       
                          send_str( );
                          flag_bz = 1;
                          break;

                      case down:
                           send_str1( );
                           flag_bz = 0;
                          backrun();
                          break;

                      case left:
                           send_str3( );
                          leftrun();
                          flag_bz = 0;
                          break;

                      case right:
                          send_str2( );
                          rightrun();
                          flag_bz = 0;
                          break;

                      case stop:
                           send_str4( );
                          stoprun();
                          flag_bz = 0;
                          break;

             }

                                         
         }
        }
}       

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

使用道具 舉報

沙發
ID:164602 發表于 2019-1-19 20:37 | 只看該作者
就是串口發送字符串嘛。
不過,這個程序我沒有看得很懂:程序好像是控制小車的吧,那么就應該是另一個程序發送字符串,這個程序來執行,它為什么要發送字符串?不懂
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 羞羞视频在线观免费观看 | 91日b| 日韩欧美国产一区二区三区 | 亚洲欧洲国产视频 | 中文字幕第一页在线 | 免费高清av | 91久久精品 | 国产乱码精品一区二区三区av | 免费污视频 | 国产精品久久久久久久免费观看 | 一区二区三区四区在线视频 | 国产精品日韩在线 | 国产精品波多野结衣 | 免费视频久久久久 | 欧一区二区 | 精品日韩一区 | www.五月婷婷.com | 中文字幕一区在线观看视频 | 亚洲国产欧美在线人成 | 91视频进入 | 韩日一区二区三区 | 污片在线观看 | 亚洲国产第一页 | 欧美日韩专区 | 欧美日韩高清免费 | 国产精品观看 | 日韩在线观看网站 | 免费 视频 1级 | 精品视频亚洲 | 91成人在线视频 | 日本精品一区二区三区在线观看视频 | 久久久成人精品 | 国产成人精品久久二区二区 | 亚洲国产精品va在线看黑人 | 欧美激情五月 | 黄色片大全在线观看 | 国产欧美精品一区二区色综合 | 欧洲成人午夜免费大片 | 久久精品一 | 日韩最新网址 | 91精品麻豆日日躁夜夜躁 |