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

[复制链接]
 楼主| 无垠的广袤 发表于 2024-6-27 16:11 | 显示全部楼层 |阅读模式
本帖最后由 无垠的广袤 于 2024-6-27 16:15 编辑

#申请原创# Arduino 代码
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #define ONE_WIRE_BUS 2     //DS18B20接至Arduino数字口2

  4. OneWire oneWire(ONE_WIRE_BUS);
  5. DallasTemperature sensors(&oneWire);

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

  10. void setup()
  11. {
  12.   Serial.begin(9600);      
  13.   //pinMode(LED, OUTPUT);
  14.   // Start up the library
  15.   sensors.begin();
  16. }

  17. void loop()
  18. {
  19.   while (Serial.available() > 0)   //不断检测串口是否有数据
  20.    {
  21.       receive_data();            //接受串口数据
  22.       test_do_data();            //测试数据是否正确并更新数据
  23.    }
  24. }

  25. void receive_data(void)      
  26. {
  27.   int i ;
  28.   for(i=0;i<3;i++)
  29.   {
  30.     comdata<i> = Serial.read();
  31.     //延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
  32.     delay(2);
  33.   }
  34. }

  35. void test_do_data(void) // 测试并执行命令
  36. {
  37.   if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
  38.   {
  39.     if(comdata[1] == 0xAA)
  40.     {
  41.       if(comdata[2] == 0xFF)
  42.       {
  43.         sensors.requestTemperatures(); // 请求传感器测量温度
  44.         float tempC = sensors.getTempCByIndex(0); // 读取温度值
  45.         Serial.print(tempC);
  46.       }
  47.     }
  48.   }
  49. }</i>


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



温度采集.zip

25.06 KB, 下载次数: 7

dirtwillfly 发表于 2024-9-1 08:56 | 显示全部楼层
感谢分享
电子烂人 发表于 2024-11-3 10:49 | 显示全部楼层
做的很好,点个赞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

67

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

27

主题

67

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部