标题: 基于51单片机的温度采集系统(Labview做上位机) [打印本页]

作者: sunleaf    时间: 2019-1-1 20:43
标题: 基于51单片机的温度采集系统(Labview做上位机)
做该设计的初衷是为自己的毕设打基础,因为我的毕设要做一个探测机器人,需要对某一地区的各种环境参数进行检测,然后通过WIFI返回到上位机。所以为了搞懂温度传感器以及练习上位机的设计,花了几天时间做了一个很简单的采集系统。今天把它拿出来跟各位小伙伴们分享,希望对各位有所帮助,同时也希望大佬们指出不足,起到一个相互学习,相互促进的作用。该系统原理是:51单片机把ds18b20传感器将采集到的温度值(十六进制)通过串口发送到labview,labview对单片机发来的数据做简单的处理然后显示。

  1. 串口部分:
  2. void main()               
  3. {
  4.                           
  5.         
  6.                if(flag==1||flag1==1)
  7.                            {
  8.                             S=test/10;
  9.                                 Y=test%10;
  10.                             ES=0;
  11.                                 flag=0;
  12.                                 SBUF=S;
  13.                             while(!TI);
  14.                                 TI=0;
  15.                                 SBUF=Y;
  16.                             while(!TI);
  17.                                 TI=0;
  18.                                 if(temperature!=test)
  19.                                  flag1=1;
  20.                                 ES=1;         
  21.                               }         
  22. }  
  23. //串口中断
  24. void ser() interrupt 4
  25. {
  26.    if(RI==1)
  27.         {
  28.          RI=0;
  29.          a=SBUF;
  30.          if(a=='1') P1=0x55;
  31.          if(a=='0') P1=0xaa;
  32.          flag=1;
  33.         }
  34. }
  35. 温度采集部分:
  36. #include <reg52.h>
  37. #include "ds18b20.h"
  38. #include "delay.h"

  39. sbit DQ=P2^2; //温度传感器 I/O 口

  40. uchar reset_ds18b20()
  41. {
  42.    uchar presence;
  43.    DQ=0;
  44.    delay_ds18b20(29);      //延时480 - 960  us
  45.    DQ=1;                                                  
  46.    delay_ds18b20(3);      //延时 15 - 60   us
  47.    presence=DQ;
  48.    delay_ds18b20(25);          //延时 60 - 240  us
  49.    return(presence);

  50. }

  51. uchar read_bit_ds18b20()
  52. {
  53.         uchar i;
  54.         DQ=1;
  55.         delay_ds18b20(1);
  56.         DQ=0;
  57.         //delay(1);    //延时 15us  也可以不延时
  58.         DQ=1;
  59.         //delay(3);         //延时 1 - ∞  us
  60.         for(i=0;i<3;i++);
  61.         return(DQ);
  62. }
  63. void write_bit_ds18b20(uchar dat)
  64. {
  65.         DQ=0;        //置0 无需延时
  66.         if(dat==1)
  67.           DQ=1;
  68.         delay_ds18b20(1);         //延时 60 - 120  us
  69.         DQ=1;
  70.         delay_ds18b20(1);         //延时 1 - ∞  us
  71. }



  72. void write_byte_ds18b20(uchar dat)
  73. {
  74.      uchar i,j;
  75.          for(i=0;i<8;i++)
  76.          {
  77.              j=((dat>>i)&0x01);
  78.                  write_bit_ds18b20(j);
  79.                  //delay(1);      //延时 1 - ∞  us
  80.          }


  81. }  


  82. uchar read_byte_ds18b20()
  83. {
  84.         uchar dat=0;
  85.         uchar i;
  86.         for(i=0;i<8;i++)
  87.          {
  88.            if(read_bit_ds18b20())
  89.              dat|=0x01<<i;
  90.            //delay(1);           //延时 1 - ∞  us
  91.          
  92.          }
  93.          return(dat);           
  94. }



  95. int read_temp_ds18b20()
  96. {
  97.    uchar templ=0,temph=0;
  98.    int temp=0;
  99.    reset_ds18b20();//复位
  100.    write_byte_ds18b20(0xcc); //跳过ROM
  101.    write_byte_ds18b20(0x44); //跳过温度采集
  102.    delay_ds18b20(10);     //750ms
  103.    reset_ds18b20();
  104.    write_byte_ds18b20(0xcc); //跳过ROM
  105.    write_byte_ds18b20(0xbe); //准备好数据(开始温度转换采集)
  106.    templ=read_byte_ds18b20();//读低字节温度值
  107.    temph=read_byte_ds18b20();//读低字节温度值
  108.    temp=(templ+(temph*256));
  109.    return(temp);
  110. }
复制代码


作者: admin    时间: 2019-1-1 21:19
楼主能分享下上位机和下位机源码工程包吗?
作者: zxq9781    时间: 2019-1-1 21:47
能带上显示测AD电压曲线的就不错了
作者: sunleaf    时间: 2019-1-2 09:44
admin 发表于 2019-1-1 21:19
楼主能分享下上位机和下位机源码工程包吗?

上位机与下位机源码。

ds18b20温度程序.rar

42.22 KB, 下载次数: 514, 下载积分: 黑币 -5

下位机

温度采集(上位机).rar

79.83 KB, 下载次数: 730, 下载积分: 黑币 -5

上位机


作者: 1696767363    时间: 2019-1-2 10:11
感谢楼主分享
作者: sunleaf    时间: 2019-1-4 09:23
zxq9781 发表于 2019-1-1 21:47
能带上显示测AD电压曲线的就不错了

最近正在做AD,做完就跟大家分享!
作者: 北极光123456    时间: 2019-1-6 22:04
有没有这个设计的论文
作者: sunleaf    时间: 2019-1-8 15:32
北极光123456 发表于 2019-1-6 22:04
有没有这个设计的论文

这个就是随便做的,没有论文呀!
作者: 赵戴维    时间: 2019-4-1 09:17
感谢分享
作者: jqpros    时间: 2019-4-10 20:44
感谢分享!
作者: chunming    时间: 2019-4-17 19:22
labview怎么与单片机通讯呀??求教


作者: chunming    时间: 2019-4-18 17:39
温度零下127度。。。。怎么办
作者: fengtao    时间: 2019-4-18 19:10
labview2014打不开
作者: 泪目天启    时间: 2019-4-29 11:12
能发我邮箱吗2433042868@qq.com,,,,这个用2014版打不开吗
作者: sunleaf    时间: 2019-4-30 17:13
chunming 发表于 2019-4-17 19:22
labview怎么与单片机通讯呀??求教

串口,WiFi,蓝牙都可以
作者: sunleaf    时间: 2019-4-30 17:16
泪目天启 发表于 2019-4-29 11:12
能发我邮箱吗,,,,这个用2014版打不开吗

邮箱我之前试过,发不过去。加我qq发给你,2161423266
作者: chenmcu51    时间: 2019-4-30 22:33
很好的资料,学习学习
作者: Lynn123456    时间: 2019-5-1 19:35
请问楼主是用采用RS485通信方式获取传感器的数据的吗
作者: H昌S    时间: 2019-5-5 10:33
你好,你是否做了proteus仿真,能否分享下

作者: 机型    时间: 2019-5-8 13:32
楼主可以把文件分享下吗 942754221@qq.com
作者: qwero    时间: 2019-5-10 17:56
你好楼主,代码中的这一段是什么意思?
    S=test/10;  Y=test%10;
作者: 邹哲暠    时间: 2019-5-14 10:55
楼主,这个东西怎么搞

作者: 邹哲暠    时间: 2019-5-14 10:59
我用这个程序为什么温度是不对的

作者: ForlTruth    时间: 2019-7-27 16:32
感谢楼主分享
作者: engcyh    时间: 2019-7-28 02:33
很好!谢谢分享!
作者: 51hei1005    时间: 2019-7-29 08:50
楼主你好,你的labview工程是用哪个版本软件做的?2011、2014还是其他?
作者: ForlTruth    时间: 2019-8-5 07:15
感谢楼主分享
作者: 224电子狗    时间: 2019-8-9 09:57
好东西,感谢楼主分享
作者: wxyxka    时间: 2019-8-9 14:36
qwero 发表于 2019-5-10 17:56
你好楼主,代码中的这一段是什么意思?
    S=test/10;  Y=test%10;

把一个数分成十位,和个位

作者: 1506388648    时间: 2019-8-11 09:35
labview与单片机之间如何实现数据类型转换的
作者: 小叮铛00    时间: 2019-8-15 21:04
请问数据是同步实时监测的么

作者: 小叮铛00    时间: 2019-8-16 09:12
感谢分享
作者: 小叮铛00    时间: 2019-8-16 12:48
邹哲暠 发表于 2019-5-14 10:59
我用这个程序为什么温度是不对的

我测的温度也不对
作者: qyh123456    时间: 2019-8-23 07:39
感谢分享
作者: liuhailan5757    时间: 2019-8-23 09:38
楼主有没有labview的教程,有学过VB,感觉有点复杂。希望交流
作者: zzcdfp    时间: 2019-8-23 23:52
牛人,谢谢分享
作者: Captain銭    时间: 2019-10-17 15:30
感谢分享
作者: YANGHONGYI    时间: 2019-11-21 08:33
你好,你有显示直流电压电流曲线的这个资料吗
作者: 海上狂飙    时间: 2019-11-29 23:20
谢谢楼主分享!
作者: xld_shenghuo    时间: 2019-12-1 16:04
感谢分享,学习一下
作者: lee579    时间: 2019-12-2 18:52
谢谢分享
作者: fengdaokanhai    时间: 2019-12-17 00:03
好东西啊,可惜我的币不够啊!!!
作者: pllll    时间: 2020-1-5 21:54
感谢分享 学习一下~~~
作者: pllll    时间: 2020-1-5 22:05
小叮铛00 发表于 2019-8-16 12:48
我测的温度也不对

我也不对…
作者: wangwenhai8    时间: 2020-1-29 18:26
不错,用了,感谢。
作者: wangwenhai8    时间: 2020-1-29 18:27
你的labview工程是用哪个版本软件做的?2011、2014还是其他?
作者: 17727219780    时间: 2020-2-15 22:35
楼主 能用蓝牙通讯吗 蓝牙通讯的话labview是可以直接连接蓝牙模块的吗 比如hc-05这种

作者: edenwan2020    时间: 2020-2-16 17:32
感谢分享,论坛资料很多,值得学习
作者: 天涯莫邪    时间: 2020-4-20 09:25
感谢楼主分享

作者: 我不会数学    时间: 2020-4-28 10:52
DS18B20传数据给上位机的程序怎么写?
作者: Keith1840    时间: 2020-5-1 16:22
谢谢楼主!学习学习
作者: hj19970406    时间: 2020-5-6 18:55
谢谢楼主分享

作者: EGOGO    时间: 2020-5-6 20:06
请问一下为什么我选择串口的时候只有刷新二字不能选择串口呢?
作者: EGOGO    时间: 2020-5-6 20:23
您好 感谢您的分享 但我想用来学习的时候遇到了无法选择串口的问题 请问您知道原因吗谢谢
作者: 617399416    时间: 2020-5-11 12:14
楼主能给个联系方式吗  我想咨询一些问题

作者: 25634846    时间: 2020-6-20 12:51
楼主能不能分享一下Proteus仿真图
作者: zqxnlnlznl    时间: 2021-1-11 23:17
第一步打开文件的意思是什么,是打开什么文件

作者: zk258    时间: 2021-3-8 21:50
大佬有原理图么?
作者: xudashu    时间: 2021-10-3 21:40
非常好的例子
作者: 别拖至春天    时间: 2021-10-20 14:30
请问这个有proteus仿真图吗?

作者: jingjing2222    时间: 2024-6-3 22:33
感谢楼主的分享!
作者: 马帅印    时间: 2024-10-1 13:54
好像温度测出来不太行
作者: 禹你同在    时间: 2025-1-8 15:16
感谢楼主的分享!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1