用STC89C52连接Phyphox(DS18b20)
用STC89C52连接Phyphox(DS18b20)
根据前面的探索,使用STC89C52RC连接Phyphox基本可以进行一些通信了。但是,如果连接传感器会怎样呢?这就涉及Phyphox一侧如何进行与51单片机之间的协议。但是,Phyphox一侧不管什么协议不协议,发过来数据就接收,否则就当什么也没发生。这使STC89C52RC连接Phyphox时让二者把时间协调起来,非常困难。换句话说,51上过去1秒的时间,Phyphox可能不一定会认为是1秒。这些事情,以后有时间再研究。
前面进行了一些整理:
DS18b20是非常常见但异常精准的温度传感器,很多开发板上面的DS18b20是直接整合在开发板上面的,测量温度后,直接显示在LCD或数码管上面,发送到串口或蓝牙上面的,不太多见。所以这耗了我不少脑筋。认清引脚:塑封上的字朝向自己,右手3号VDD,左手GND。
首先必须是找到可以方便使用的DS18b20函数库,否则自己去分析时序图,那太不现实了。再之后,是想办法把读出来的温度发送给串口去。
代码1:
void main()
{
……
while(1)
{
delayms(5);
ds18b20_changetemp();
number= ds18b20_gettemp();
sprintf(buf,"%2.2f",number/10.0);
PostString(buf);
PostString(char_temp);
delayms(5);
}
}
代码2:
void main()
{
……
while(1)
{
delayms(10);
ds18b20_changetemp();
number= ds18b20_gettemp();
itoa(number,buf);
PostString(buf);
PostString(char_temp);
delayms(10);
}
}
这个过程会发现,DS18b20在读取温度的时候,最好在第1次读数前有一点点时间的延迟,比如60微秒以上,否则初始数值会有1次噪声。
实际测量效果,用手捏住了DS18b20的塑料外壳,升温后再松手,大致可以看到牛顿冷却定律的显示。
仿真及电路图: