乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      用STC89C52連接Phyphox(Phyphox)

       新用戶5228KeDY 2021-10-10

      用STC89C52連接Phyphox(Phyphox)

      STC89C52RC連接Phyphox的技術(shù)并不多困難,只是與ESP32/Arduino Nano 33等連接Phyphox比起來要麻煩得多。

      前面進(jìn)行了一些整理:

      1.用STC89C52連接Phyphox(綜述)

      2.用STC89C52連接Phyphox(串口)

      3.用STC89C52連接Phyphox(燒錄)

      4.用STC89C52連接Phyphox(藍(lán)牙)

      基礎(chǔ)工作都已經(jīng)鋪墊好了,現(xiàn)在差不多到了最后一道工序,就是Phyphox端的實(shí)驗(yàn)代碼是怎樣的呢?本來應(yīng)該一步到位就結(jié)束了這個(gè)研究的,但是我手上的DS18b20溫度傳感器總是不好用,于是這里只能試試Phyphox接收從STC89C52RC發(fā)送出來的確定的數(shù)據(jù)。有機(jī)會(huì)時(shí),可能還會(huì)研究研究從傳感器讀取數(shù)據(jù)、從Phyphox反向控制STC89C52RC。看時(shí)間吧。

      在“用STC89C52連接Phyphox(藍(lán)牙)”的筆記里,我們找到了藍(lán)牙特征碼,這個(gè)特征碼現(xiàn)在要使用了。到Phyphox Editor里建構(gòu)我們的實(shí)驗(yàn):

      填寫好基本信息之后,到Input標(biāo)簽頁創(chuàng)建Input的Bluetooth視圖,并填寫“Device Name”,設(shè)置成我們的藍(lán)牙BLE的名稱,當(dāng)然這里不填寫對(duì)連接實(shí)驗(yàn)絲毫沒有影響。再到characteristic欄填寫特征碼0000FFE1-0000-1000-8000-00805F9B34FB,這個(gè)特征碼最好是自己實(shí)際用藍(lán)牙調(diào)試軟件自己測試提取出來,比如ESP32的特征碼與這里使用的HC-08的就不是相同的。

      最后,到Conversion Function欄填寫string,意思是不管從STC89C52RC發(fā)過來什么數(shù)據(jù),我們一切都讓Phyphox當(dāng)成是字符串來接收。這樣做的好處是不再擔(dān)心數(shù)據(jù)類型轉(zhuǎn)換問題,壞處是速度可能會(huì)慢。當(dāng)然,為了和這里的string配套,在編寫51的程序時(shí),發(fā)往串口的數(shù)據(jù),盡量也都是以字符數(shù)組的形式發(fā)送。實(shí)際向串口發(fā)字符數(shù)組,在51里比發(fā)數(shù)值型數(shù)據(jù)還要簡單得多,不用管進(jìn)制。

      現(xiàn)在可以正式開始了。

      1.在C51里編寫測試程序。代碼附在后面了。編譯,燒錄。

      2.藍(lán)牙接線。

      3.編寫Phyphox端實(shí)驗(yàn)代碼。細(xì)節(jié)就不啰嗦了,極簡單。

      4.下載Phyphox代碼到手機(jī)Phyphox軟件里,打開實(shí)驗(yàn),會(huì)詢問藍(lán)牙MXXHC08安在?

      MXXHC08答:在!

      實(shí)驗(yàn)圖:

      附程序。估計(jì)此代碼應(yīng)存在問題,因?yàn)閭鬏敳徽!?/p>#include <reg52.h>
      #include <intrins.h>
      #include <stdio.h>
      #include <stdlib.h>

      #define uchar unsigned char
      #define uint unsigned int

      uchar b[8];
      float a;
      /**
       * 串口初始化函數(shù)
       * 波特率為9600
       */
      void UartConfigurationInit()
      {
          TMOD = 0x20; //設(shè)置定時(shí)器1工作方式為方式2
          TH1 = 0xfd;    //波特率9600
          TL1 = 0xfd;
          TR1 = 1;    //啟動(dòng)定時(shí)器1
          SM0 = 0;
          SM1 = 1;    //串口方式1
          REN = 1;    //允許接收
          PCON = 0x00; //關(guān)倍頻
          ES = 1;     //開串口中斷
          EA = 1;     //開總中斷
      }

      /**
       * 延時(shí)函數(shù)
       * 延時(shí)count毫秒
       */

      void delay(unsigned int count)
      {
          uint cycle;
          while(count)
          {
              cycle = 120;
              while(cycle > 0) cycle--;
              count--;
          }
      }

      /**
       * 字符發(fā)送函數(shù)
       */
      void PostChar(uchar character)
      {
          SBUF = character; //發(fā)送單個(gè)字符
          while(!TI);
          TI = 0; //發(fā)送完成標(biāo)志
      }

      /**
       * 字符串發(fā)送函數(shù)
       * 通過調(diào)用字符發(fā)送函數(shù)來實(shí)現(xiàn)
       */
      void  PostString(uchar *p)
      {
          while(*p)      //若指針指向的地址為空,則跳出循環(huán)
          {
              PostChar(*p); //指針第一次默認(rèn)指向首地址
              delay(20);  //延時(shí),作用為提高發(fā)送準(zhǔn)確度
              p++;
          }
      }

      /*uint length(float num)//設(shè)置浮點(diǎn)數(shù)的長度
      {
          int len=0;
          while(num>0.01)//控制精確到小數(shù)點(diǎn)后第幾位
          {
              num=num/10;
              //printf("%d  : %f\n",len,num);
              len++;
          }
          return len;
      } */

      /**
       * 主函數(shù)
       */
      void main()
      {
       uint number=0;
          UartConfigurationInit(); //初始化串口
       
          while(1)
          {
         number+=2021;
         a= (float)number/100;
         sprintf(b,"%2.2f",a);
         PostString(b); //發(fā)送字符串
            delay(1000);
         if (number>999999) number=0;
       }
      }

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多