打印
[UNO]

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

[复制链接]
33|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 无垠的广袤 于 2024-6-27 16:15 编辑

#申请原创# 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);
      }
    }
  }
}</i>


LabVIEW设计
LabVIEW 前面板设计如下
相应的程序图如下
上位机程序见附件。
转载请注明来源和作者,如有问题请回帖或Email联系(lijinlei0907@163.com)。



温度采集.zip

25.06 KB

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝