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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍牙模塊手機端apk程序 單片機程序及USB驅動程序

[復制鏈接]
跳轉到指定樓層
樓主

包含手機端apk程序還有單片機程序usb驅動等等很全的資料

所有資料下載:
藍牙模塊資料.zip (6.59 MB, 下載次數: 60)

藍牙模塊的at指令
AT指令集
1 、測試通訊
發送:AT(返回OK,一秒左右發一次)
返回:OK
2 、改藍牙串口通訊波特率
發送:AT+BAUD1
返回:OK1200
發送:AT+BAUD2
返回:OK2400
……
1---------1200
2---------2400
3---------4800
4---------9600
5---------19200
6---------38400
7---------57600
8---------115200
9---------230400
A---------460800
B---------921600
C---------1382400
不建議用在超過115200的波特率,信號的干擾會使系統不穩定。
設置超過115200后用電腦無法使用,要用單片機編程于高于 115200 才能使用此波特率和
重新發AT命令設低波特率
用AT命令設好波特率后,下次上電使用不需再設,可以掉電保存波特率。
3 、改藍牙名稱
發送:AT+NAMEname
返回:OKsetname
參數name:所要設置的當前名稱,即藍牙被搜索到的名稱。20個字符以內。  
例:發送AT+NAMEbill_gates
     返回OKsetname

這時藍牙名稱改為bill_gates
     參數可以掉電保存,只需修改一次。 PDA 端刷新服務可以看到更改后的藍牙名稱。
4 、改藍牙配對密碼
發送:AT+PINxxxx
返回:OKsetpin
參數xxxx :所要設置的配對密碼,4 個字節,此命令可用于從機或主機。從機是適配器或手
機彈出要求輸入配對密碼窗口時,手工輸入此參數就可以連接從機。主藍牙模塊搜索從機后,
如果密碼正確,則會自動配對,主模塊除了可以連接配對從模塊外,其他產品包含從模塊的
時候也可以連接配對,比如含藍牙的數碼相機,藍牙GPS ,藍牙串口打印機,等等,特別地,
藍牙GPS 為典型例子
例:發送AT+PIN8888
     返回OKsetpin
     這時藍牙配對密碼改為8888,模塊在出廠時的默認配對密碼是 1234。
     參數可以掉電保存,只需修改一次。  

5 、獲取版權命令: AT+VERSION     
返回Linvor 則為正品



附錄
1 程序

#include <reg52.h>

#include<math.h>

#include<intrins.h>

#define    ucharunsigned char

#define uint unsigned int

sbit K1=P2^0;

sbit K2=P2^1;

sbit K3=P2^2;


uchar j,pro;

uchar i;

uchar zhuangtai1 ,zhuangtai2,zhuangtai3;

sbit key1=P2^3;

sbit key2=P2^4;


sbit servor0=P0^0;  //舵機控制左右

sbit red0=P0^4;        // 右邊紅外接收

sbit red1=P0^2;             //左邊紅外接收

sbit red2=P0^3;             // 右邊紅外接收2

sbit red3=P0^5;             // 左邊紅外接收2

sbit water=P0^7;  //水泵



       //定義智能小車驅動模塊輸入IO

sbit IN1 =       P1^0;// 高電平1 后退(反轉)

sbit IN2 = P1^1; // 高電平1 前進(正轉)


sbit IN3 =       P1^2;// 高電平1 前進(正轉)

sbit IN4 = P1^3; // 高電平1 后退(反轉)


sbit IN5 =       P1^4;// 高電平1 后退(反轉)

sbit IN6 = P1^5; // 高電平1 前進(正轉)


sbit IN7 =       P1^6;// 高電平1 前進(正轉)

sbit IN8 = P1^7; // 高電平1 后退(反轉)


  //wifi數據定義

uchar Buffer =0;      //從串口接收的數據

uint URTAReceivedCount=0,n=1;

uchar dataTempdatatable[5],CommandDatatable[5];//數據包

uchar serVal[2];

uintpwm[]={1120,1190,1382,1382,1382,1382,1382,1382}; //初始90,(實際是1382.4,取整得1382

uchar pwm_flag=0;

uint code ms0_5Con=461; //0.5ms計數 (實際是460.8,取整得461

uint code ms2_5Con=2304; //2.5ms計數

bit key_stime_ok;


//延時1ms

void delay_ms(uint i)//1ms延時

{

uchar x,j;

for(j=0;j<i;j++)

for(x=0;x<=148;x++);

}



/********************************************************************

* 功能 :前進

***********************************************************************/


void comeon()

{  

    IN1=0;         //左電機

        IN2=1;

        IN3=1;         //右電機

        IN4=0;

        IN5=0;         //左電機

        IN6=1;

        IN7=1;         //右電機

        IN8=0;

        delay_ms(10);

  

}


/********************************************************************

* 功能 : 左轉

***********************************************************************/


void comeleft()

{

   IN1=0;           //左電機

        IN2=1;

        IN3=0;         //右電機

        IN4=1;

        IN5=0;         //左電機

        IN6=1;

        IN7=0;         //右電機

        IN8=1;

        delay_ms(10);

   

}


/********************************************************************

* 功能 : 右轉。

***********************************************************************/

void comeright()

{

    IN1=1;         //左電機

        IN2=0;

        IN3=1;         //右電機

        IN4=0;

        IN5=1;         //左電機

        IN6=0;

        IN7=1;         //右電機

        IN8=0;

        delay_ms(10);

}

/********************************************************************

* 功能 : 停止

***********************************************************************/

void stop()

{

        IN1=0;         //左電機

        IN2=0;

        IN3=0;         //右電機

        IN4=0;

        IN5=0;         //左電機

        IN6=0;

        IN7=0;         //右電機

        IN8=0;

     

  delay_ms(10);

}


  

/********************************************************************

* 功能 : 后退。

***********************************************************************/

void back()

{

  

   IN1=1;           //左電機

        IN2=0;

        IN3=0;         //右電機

        IN4=1;

        IN5=1;         //左電機

        IN6=0;

        IN7=0;         //右電機

        IN8=1;

  delay_ms(10);

}


//自動澆花初始化


void INIT()                  //初始化

{


       TMOD= 0x01;      //T/C1采用16位定時器/計數器

      ET0 = 1;             //定時器1開中斷

       TH0= 0xff;

   TL0 = 0xce;

       TR0=0;                       

       EA   = 1;              //CPU開中斷

}


//定時0.1ms



void timer0() interrupt 1

{

EX0=0;

TH0=0xff;

TL0=0xce;

j++;

if(j<=pro)

{

servor0=1;

}

else

{

servor0=0;

}

if(j==400)  //周期20ms

{

  j=0;

  servor0=~servor0;

}

}

//右轉90

voidservorr()

{

        TR0=1;

        pro=8;   //舵機轉動到0°  

        delay_ms(200);

        TR0=0;

}

  //左轉90

voidservorl()

{

        TR0=1;

        pro=34; //舵機轉動到0°  

        delay_ms(200);

        TR0=0;

}


//轉到0     

voidservorc()      //0

{

      

        TR0=1;

        pro=20; //舵機返回90°方向   

        delay_ms(200);

      

}


//循跡

void scanline()

{

       P1=0XFF;

       if(K3==0||K3==0&&K2==0){comeleft();comeleft();zhuangtai1=1;zhuangtai2=0;zhuangtai3=0;}

       //當左邊檢測到黑線時則 左轉 狀態1 1  狀態2 狀態3清零   

       elseif(!K1||!K1&&!K2) {     comeright();comeright ();zhuangtai1=0;zhuangtai2=1;zhuangtai3=0;}

        //當右邊檢測到黑線時則右轉 狀態2 1  狀態1 狀態3清零  

       elseif(!K2)  {      comeon();zhuangtai1=0;zhuangtai2=0;zhuangtai3=1;   }

      else

       {      //當沒有探頭檢測到黑線時

              if(zhuangtai1)  {comeleft();} //  狀態1 則左轉

              else if(zhuangtai2)  {comeright();}//狀態2 則右轉

              else if(zhuangtai3)  {comeon();}     //狀態3 則前進直走

              else{stop();}

              }

}




/********************************************************************

* 名稱 : Send_Data()

* 功能 : 向上位機傳送字符

* 輸入 :

* 輸出 :

***********************************************************************/

void Send_Data(uchar type,uchar cmd,uchardat)

{

  uchar data Buffer[5];//構建數據包

  uchar *p;

  uint Send_Count=0;

   p= Buffer;

  Buffer[0]=0XFF;

  Buffer[1]=type;

   Buffer[2]=cmd;

  Buffer[3]=dat;

  Buffer[4]=0XFF;     

while(1)

    {

     if(*p==0XFF)

       {

        Send_Count++;  //0XFF標志統計位

       }

     SBUF = *p;  //發送

     while(!TI)  //如果發送完畢,硬件會置位TI,等待發送完畢

          {

            _nop_();

          }

     p++;

     TI = 0;

     if(Send_Count == 2)  //當統計到兩次出現0XFF,則認為一個數據包發送完畢,跳出循環

       {

        TI = 0;

        break;

       }  

    }

}

/********************************************************************

協議規定:

包頭  類型位  數據位 數據位   結束位

0XFF  0X**   OX**   0X**     0XFF

各命令說明:

類型位   數據位  數據位 功能


0X00      0X02  0X00    前進

0X00      0X01  0X00    后退

0X00      0X03  0X00    左轉

0X00      0X04  0X00    右轉

0X00      0X00  0X00    停止


0X01      0X01          舵機l

0X01      0X02    .     舵機r

0X01      0X03    .     舵機c


0X02      0X01          噴水

0X02      0X02    .     不噴水

***********************************************************************/

/********************************************************************

* 名稱 : Com_Int()

* 功能 : 串口中斷初始化

***********************************************************************/

void Com_Init(void)

{

   

        TMOD = 0x21;

    PCON = 0x00;

    SCON = 0x50;   

    TH1 = 0xFd;    //設置波特率 9600

    TL1 = 0xFd;

    TR1 = 1;  //啟動定時器1

    ES = 1;  //開串口中斷

    EA = 1;  //開總中斷

    IT0=0;

    EX0=1;              

}



  // 串口中斷

void Com_Int(void) interrupt 4

{

uchar temp;

ES=0; //關串口中斷

RI=0; //軟件清除接收中斷

temp=SBUF;

if(temp==0XFF && URTAReceivedCount<3)

    {

      Tempdatatable[0]=0XFF;     //包頭

      URTAReceivedCount++;

    }

else

    {

      Tempdatatable[n]=temp;

      n++;

          if(URTAReceivedCount==0&&n==2)

          n=1;

    }


if(URTAReceivedCount==2)//包尾

    {

      Tempdatatable[0]=0XFF;

      Tempdatatable[4]=0XFF;

      n=1;

      URTAReceivedCount=0;  //組包完畢

      temp=' ';

     // Send_Data(Tempdatatable[1],Tempdatatable[2],Tempdatatable[3]);  //發送組成的數據包回去

    }


CommandDatatable[0]=Tempdatatable[0];

CommandDatatable[1]=Tempdatatable[1];

CommandDatatable[2]=Tempdatatable[2];

CommandDatatable[3]=Tempdatatable[3];

CommandDatatable[4]=Tempdatatable[4];


ES=1;//開串口中斷

  


}


  //wifi控制初始化

void Timer0Init()

  {

     /*0=0.5ms, 45=1ms, 90=1.5ms, 135=2ms, 180=2.5ms

     /.5 ms初始值 F700,(12n/11059200=2.5/1000, n=2304, X=65536-2304=63232 > F700)*/

       TMOD|= 0x01;       //使用模式116位定時器,使用"|"符號可以在使用多個定時器時不受影響         

       TH0=-ms2_5Con>>8;         //給定初值,17ms中斷

       TL0=-ms2_5Con;

       EA=1;            //總中斷打開

       ET0=1;           //定時器0中斷打開

       TR0=1;           //定時器0開關打開                                   

  

  }



//   自動控制主程序

voidzidong() //自動澆花

{

       P0=0X7d;

       P1=0X00;

       P2=0XFF;

       INIT();

       servorc();

       while(1)

       {

       //舵機轉動澆水

       if(red1==0)

              {     

                     

              while(red1==0&&red3==0)

              {        

                    stop();

                    delay_ms(100);

                        servorl();

                    delay_ms(100);

                       water=1;

                     }

                      water=0;

                 delay_ms(200);

                     servorc();


                                   

               }            

        if(red0==0)

              {     

               

                           

                   while(red0==0&&red2==0)

                     {  

                          stop();

                            delay_ms(100);

                       servorr();

                          delay_ms(100);

                        water=1;

                                  }

                         water=0;

                        delay_ms(200);

                     servorc();

                     

               }

               scanline(); //循環調用尋線子程序

       }

}




//   wifi控制主程序

      

void wifico()

{   

  

   delay_ms(50);

       water=0;

       P1=0X00;

       INIT();


   Com_Init();//串口初始化


       servorc();  

while(1)

  {

  

  if(CommandDatatable[0]==0XFF && CommandDatatable[4]==0XFF)

     {                                                                                                                                

          switch (CommandDatatable[1])     //根據鍵值不同,執行不同的內容

            {

              case 0X00:  //類型位0X00,表明是控制數據包,進入控制數據case

                 switch(CommandDatatable[2])  //根據數據位的值來進行選擇執行不同的動作

                           {

                             case0X00:stop();break;

                             case0X01:comeon();break;

                             case0X02:back();break;

                             case0X03:comeleft();break;

                             case0X04:comeright ();break;

                                                  default : break;

                           }

                         break;

              case 0X01:    //類型位0X01,表明是舵機數據包,進入舵機case  

                  switch(CommandDatatable[2])

                             {  case 0x01:servorr();break;

                                   case0x02:servorc();break;

                                   case0x03:servorl();break;

                                   default:  break;

                     

                      }

                     break;

                     case0X02:     

                  switch(CommandDatatable[2])

                             {  case 0x01:water=1;break;

                                   case0x02:water=0;break;

                                   

                                   default:  break;

                     

                      }

                     break;

              

              default :  break;

           }

      }

  }

}


//主函數

void main()

{     


   water=0;

   

       if(key1==0&&key2!=0)zidong();

       elseif(key2==0&&key1!=0) wifico();  

       else

       {

              water=0;

              servorc();

              stop();}

}

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:359281 發表于 2023-8-21 16:30 | 只看該作者
藍牙模塊, 資料,下載了,謝謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一本色道久久综合亚洲精品高清 | 超碰免费观看 | 综合九九 | 日韩免费在线观看视频 | 国产精品一区二区三区四区 | 青青草网站在线观看 | 羞羞网站在线免费观看 | 国产操操操 | 成人性视频免费网站 | 一级欧美黄色片 | 99热播精品 | 日韩欧美天堂 | 91视频大全| 在线观看av中文字幕 | av电影手机在线看 | 天天成人综合网 | 色综合久 | 美女天天干天天操 | 亚洲天堂av在线 | 日韩中文在线观看 | 黑人巨大精品欧美一区二区免费 | 亚洲免费在线 | 久久久久久亚洲精品 | 日本午夜在线视频 | 美女视频一区 | 欧美日韩综合一区 | 欧美 日本 国产 | 免费在线h视频 | 成人国产精品久久 | 国产精品免费高清 | www国产成人免费观看视频,深夜成人网 | 日韩成人在线网站 | 刘亦菲国产毛片bd | 久久福利网站 | 日韩精品一区二区三区在线观看 | 欧美一区二区三区视频 | 精品在线免费观看视频 | 欧美日韩久 | 秋霞a级毛片在线看 | 国产精品久久久久999 | 国产精品久久av |