找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 181|回复: 0
收起左侧

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

[复制链接]
ID:1110079 发表于 2024-4-8 12:55 | 显示全部楼层 |阅读模式
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. ?
  26. void receive_data(void)      
  27. {
  28.   int i ;
  29.   for(i=0;i<3;i++)
  30.   {
  31.     comdata[ i] = Serial.read();
  32.     //延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,
  33.     delay(2);
  34.   }
  35. }

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


LabVIEW设计
LabVIEW 前面板设计如下
LabVIEW_FrontPanel.jpg
相应的程序图如下
LabVIEW_BackPanel1.jpg
? LabVIEW_BackPanel2.jpg



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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表