基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集

基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集

Arduino 代码

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2     //DS18B20接至Arduino数字口2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

byte comdata[3]={0};      //定义数组数据,存放串口命令数据
//int LED = 13;                 //定义LED连接的管脚
void receive_data(void);      //接受串口数据
void test_do_data(void);         //测试串口数据是否正确,并更新数据

void setup()
{
  Serial.begin(9600);      
  //pinMode(LED, OUTPUT);
  // Start up the library
  sensors.begin();
}
 
void loop()
{
  while (Serial.available() > 0)   //不断检测串口是否有数据
   {
      receive_data();            //接受串口数据
      test_do_data();            //测试数据是否正确并更新数据
   }
}

void receive_data(void)       
{
  int i ;
  for(i=0;i<3;i++)
  {
    comdata[i] = Serial.read();
    //延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
    delay(2);
  }
}
 
void test_do_data(void) // 测试并执行命令
{
  if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
  {
    if(comdata[1] == 0xAA)
    {
      if(comdata[2] == 0xFF)
      {
        sensors.requestTemperatures(); // 请求传感器测量温度
        float tempC = sensors.getTempCByIndex(0); // 读取温度值
        Serial.print(tempC);
      }
    }
  }
}

LabVIEW设计

LabVIEW 前面板设计如下

相应的程序图如下


文件详见附件
转载请注明来源和作者,如有问题请回帖或Email联系(lijinlei0907@163.com)。

posted @ 2024-03-25 22:34  无垠的广袤  阅读(59)  评论(0编辑  收藏  举报