用STC89C52连接Phyphox(Phyphox)

用STC89C52连接Phyphox(Phyphox)

STC89C52RC连接Phyphox的技术并不多困难,只是与ESP32/Arduino Nano 33等连接Phyphox比起来要麻烦得多。

前面进行了一些整理:

1.用STC89C52连接Phyphox(综述)

2.用STC89C52连接Phyphox(串口)

3.用STC89C52连接Phyphox(烧录)

4.用STC89C52连接Phyphox(蓝牙)

基础工作都已经铺垫好了,现在差不多到了最后一道工序,就是Phyphox端的实验代码是怎样的呢?本来应该一步到位就结束了这个研究的,但是我手上的DS18b20温度传感器总是不好用,于是这里只能试试Phyphox接收从STC89C52RC发送出来的确定的数据。有机会时,可能还会研究研究从传感器读取数据、从Phyphox反向控制STC89C52RC。看时间吧。

在“用STC89C52连接Phyphox(蓝牙)”的笔记里,我们找到了蓝牙特征码,这个特征码现在要使用了。到Phyphox Editor里建构我们的实验:

填写好基本信息之后,到Input标签页创建Input的Bluetooth视图,并填写“Device Name”,设置成我们的蓝牙BLE的名称,当然这里不填写对连接实验丝毫没有影响。再到characteristic栏填写特征码0000FFE1-0000-1000-8000-00805F9B34FB,这个特征码最好是自己实际用蓝牙调试软件自己测试提取出来,比如ESP32的特征码与这里使用的HC-08的就不是相同的。

最后,到Conversion Function栏填写string,意思是不管从STC89C52RC发过来什么数据,我们一切都让Phyphox当成是字符串来接收。这样做的好处是不再担心数据类型转换问题,坏处是速度可能会慢。当然,为了和这里的string配套,在编写51的程序时,发往串口的数据,尽量也都是以字符数组的形式发送。实际向串口发字符数组,在51里比发数值型数据还要简单得多,不用管进制。

现在可以正式开始了。

1.在C51里编写测试程序。代码附在后面了。编译,烧录。

2.蓝牙接线。

3.编写Phyphox端实验代码。细节就不啰嗦了,极简单。

4.下载Phyphox代码到手机Phyphox软件里,打开实验,会询问蓝牙MXXHC08安在?

MXXHC08答:在!

实验图:

附程序。估计此代码应存在问题,因为传输不正常。

#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;
/**
 * 串口初始化函数
 * 波特率为9600
 */
void UartConfigurationInit()
{
    TMOD = 0x20; //设置定时器1工作方式为方式2
    TH1 = 0xfd;    //波特率9600
    TL1 = 0xfd;
    TR1 = 1;    //启动定时器1
    SM0 = 0;
    SM1 = 1;    //串口方式1
    REN = 1;    //允许接收
    PCON = 0x00; //关倍频
    ES = 1;     //开串口中断
    EA = 1;     //开总中断
}

/**
 * 延时函数
 * 延时count毫秒
 */

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

/**
 * 字符发送函数
 */
void PostChar(uchar character)
{
    SBUF = character; //发送单个字符
    while(!TI);
    TI = 0; //发送完成标志
}

/**
 * 字符串发送函数
 * 通过调用字符发送函数来实现
 */
void  PostString(uchar *p)
{
    while(*p)      //若指针指向的地址为空,则跳出循环
    {
        PostChar(*p); //指针第一次默认指向首地址
        delay(20);  //延时,作用为提高发送准确度
        p++;
    }
}

/*uint length(float num)//设置浮点数的长度
{
    int len=0;
    while(num>0.01)//控制精确到小数点后第几位
    {
        num=num/10;
        //printf("%d  : %f\n",len,num);
        len++;
    }
    return len;
} */

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

(0)

相关推荐

  • Robomaster电控入门(2)DR16&DT7接收与解码

    套件介绍 Robomaster中遥控机器人的手段是固定的,只能使用大疆提供的DR16&DT7套件进行操控数据的发送和接受.这个套件的手册可以在Robomaster的官网上下载到,里面有详细的说 ...

  • 用STC89C52连接Phyphox(综述)

    用STC89C52连接Phyphox(综述) Phyphox,又名手机物理工坊,是一款运行在手机端.借助手机传感器来进行物理实验的专业的物理APP.Phyphox除了本身能够进行超巨量的物理实验以外- ...

  • 用STC89C52连接Phyphox(串口)

    用STC89C52连接Phyphox(串口) 实现STC89C52连接Phyphox,第一步要做的是让STC89C52RC的串口通信,能够把数字和字符发送给串口,然后蓝牙从串口接收了数据就可以送给Ph ...

  • 用STC89C52连接Phyphox(烧录)

    用STC89C52连接Phyphox(烧录) 刚刚要自学单片机的时候,买了一套普中科技的CH6800-ES 2G的开发板,这个开发板上有自动烧写的电路模块,同时还配套了他们自己的烧录软件,使用的时候, ...

  • 用STC89C52连接Phyphox(蓝牙)

    用STC89C52连接Phyphox(蓝牙) STC89C52RC连接Phyphox的桥梁是蓝牙BLE,必须是低功耗蓝牙,常见的蓝牙HC-08就是这种规范的.如果使用了其他非低功耗BLE蓝牙,Phyh ...

  • 用STC89C52连接Phyphox(DS18b20)

    用STC89C52连接Phyphox(DS18b20) 根据前面的探索,使用STC89C52RC连接Phyphox基本可以进行一些通信了.但是,如果连接传感器会怎样呢?这就涉及Phyphox一侧如何进 ...

  • 用STC89C52连接Phyphox(多数据协同)

    用STC89C52连接Phyphox(多数据协同) 这一篇笔记,尽管是使用51单片机实现的,但从原理以及未来的实用性上看,显然适用于Arduino.ESP32以及8266等其他常见单片机,集成蓝牙与不 ...

  • 用STC89C52连接Phyphox(双向数据传输)

    用STC89C52连接Phyphox(双向数据传输) STC单片机连接Phyphox研究笔记至此结束.填坑完毕. 研究51单片机通过蓝牙与手机上的Phyphox连接而互通数据的意义在于,获得一种方法. ...

  • 用Phyphox探究手机在坐垫上跌落过程中的超重与失重现象

    图1 坐垫 最近进行期末复习,时间相对宽松,就着手研究了一下"智能手机传感器在物理教学中的应用"问题. 常见智能手机内置了各种各样的传感器,其中的陀螺仪可以做与转动有关的实验,加速 ...

  • 用Phyphox探究弹性球弹跳过程中的机械能衰减规律

    用Phyphox探究弹性球弹跳过程中的机械能衰减规律