找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 24321|回复: 59
打印 上一主题 下一主题
收起左侧

基于51单片机的温度采集系统(Labview做上位机)

  [复制链接]
跳转到指定楼层
楼主
ID:459513 发表于 2019-1-1 20:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做该设计的初衷是为自己的毕设打基础,因为我的毕设要做一个探测机器人,需要对某一地区的各种环境参数进行检测,然后通过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. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏23 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-1-1 21:19 | 只看该作者
楼主能分享下上位机和下位机源码工程包吗?
回复

使用道具 举报

板凳
ID:60656 发表于 2019-1-1 21:47 | 只看该作者
能带上显示测AD电压曲线的就不错了
回复

使用道具 举报

地板
ID:459513 发表于 2019-1-2 09:44 | 只看该作者
admin 发表于 2019-1-1 21:19
楼主能分享下上位机和下位机源码工程包吗?

上位机与下位机源码。

ds18b20温度程序.rar

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

下位机

温度采集(上位机).rar

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

上位机

回复

使用道具 举报

5#
ID:376391 发表于 2019-1-2 10:11 来自手机 | 只看该作者
感谢楼主分享
回复

使用道具 举报

6#
ID:459513 发表于 2019-1-4 09:23 | 只看该作者
zxq9781 发表于 2019-1-1 21:47
能带上显示测AD电压曲线的就不错了

最近正在做AD,做完就跟大家分享!
回复

使用道具 举报

7#
ID:449715 发表于 2019-1-6 22:04 | 只看该作者
有没有这个设计的论文
回复

使用道具 举报

8#
ID:459513 发表于 2019-1-8 15:32 | 只看该作者
北极光123456 发表于 2019-1-6 22:04
有没有这个设计的论文

这个就是随便做的,没有论文呀!
回复

使用道具 举报

9#
ID:502165 发表于 2019-4-1 09:17 | 只看该作者
感谢分享
回复

使用道具 举报

10#
ID:418767 发表于 2019-4-10 20:44 | 只看该作者
感谢分享!
回复

使用道具 举报

11#
ID:498471 发表于 2019-4-17 19:22 | 只看该作者
labview怎么与单片机通讯呀??求教

回复

使用道具 举报

12#
ID:498471 发表于 2019-4-18 17:39 | 只看该作者
温度零下127度。。。。怎么办
回复

使用道具 举报

13#
ID:328035 发表于 2019-4-18 19:10 | 只看该作者
labview2014打不开
回复

使用道具 举报

14#
ID:522044 发表于 2019-4-29 11:12 | 只看该作者
能发我邮箱吗2433042868@qq.com,,,,这个用2014版打不开吗
回复

使用道具 举报

15#
ID:459513 发表于 2019-4-30 17:13 | 只看该作者
chunming 发表于 2019-4-17 19:22
labview怎么与单片机通讯呀??求教

串口,WiFi,蓝牙都可以
回复

使用道具 举报

16#
ID:459513 发表于 2019-4-30 17:16 | 只看该作者
泪目天启 发表于 2019-4-29 11:12
能发我邮箱吗,,,,这个用2014版打不开吗

邮箱我之前试过,发不过去。加我qq发给你,2161423266
回复

使用道具 举报

17#
ID:525387 发表于 2019-4-30 22:33 | 只看该作者
很好的资料,学习学习
回复

使用道具 举报

18#
ID:522346 发表于 2019-5-1 19:35 | 只看该作者
请问楼主是用采用RS485通信方式获取传感器的数据的吗
回复

使用道具 举报

19#
ID:507100 发表于 2019-5-5 10:33 | 只看该作者
你好,你是否做了proteus仿真,能否分享下
回复

使用道具 举报

20#
ID:270653 发表于 2019-5-8 13:32 | 只看该作者
楼主可以把文件分享下吗 942754221@qq.com
回复

使用道具 举报

21#
ID:316824 发表于 2019-5-10 17:56 | 只看该作者
你好楼主,代码中的这一段是什么意思?
    S=test/10;  Y=test%10;
回复

使用道具 举报

22#
ID:537029 发表于 2019-5-14 10:55 | 只看该作者
楼主,这个东西怎么搞
回复

使用道具 举报

23#
ID:537029 发表于 2019-5-14 10:59 | 只看该作者
我用这个程序为什么温度是不对的
回复

使用道具 举报

24#
ID:394337 发表于 2019-7-27 16:32 | 只看该作者
感谢楼主分享
回复

使用道具 举报

25#
ID:57896 发表于 2019-7-28 02:33 | 只看该作者
很好!谢谢分享!
回复

使用道具 举报

26#
ID:62363 发表于 2019-7-29 08:50 | 只看该作者
楼主你好,你的labview工程是用哪个版本软件做的?2011、2014还是其他?
回复

使用道具 举报

27#
ID:394337 发表于 2019-8-5 07:15 | 只看该作者
感谢楼主分享
回复

使用道具 举报

28#
ID:419165 发表于 2019-8-9 09:57 | 只看该作者
好东西,感谢楼主分享
回复

使用道具 举报

29#
ID:543941 发表于 2019-8-9 14:36 | 只看该作者
qwero 发表于 2019-5-10 17:56
你好楼主,代码中的这一段是什么意思?
    S=test/10;  Y=test%10;

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

使用道具 举报

30#
ID:599035 发表于 2019-8-11 09:35 | 只看该作者
labview与单片机之间如何实现数据类型转换的
回复

使用道具 举报

31#
ID:600197 发表于 2019-8-15 21:04 | 只看该作者
请问数据是同步实时监测的么
回复

使用道具 举报

32#
ID:600197 发表于 2019-8-16 09:12 | 只看该作者
感谢分享
回复

使用道具 举报

33#
ID:600197 发表于 2019-8-16 12:48 | 只看该作者
邹哲暠 发表于 2019-5-14 10:59
我用这个程序为什么温度是不对的

我测的温度也不对
回复

使用道具 举报

34#
ID:237723 发表于 2019-8-23 07:39 | 只看该作者
感谢分享
回复

使用道具 举报

35#
ID:387856 发表于 2019-8-23 09:38 | 只看该作者
楼主有没有labview的教程,有学过VB,感觉有点复杂。希望交流
回复

使用道具 举报

36#
ID:603222 发表于 2019-8-23 23:52 来自手机 | 只看该作者
牛人,谢谢分享
回复

使用道具 举报

37#
ID:625659 发表于 2019-10-17 15:30 | 只看该作者
感谢分享
回复

使用道具 举报

38#
ID:503669 发表于 2019-11-21 08:33 来自手机 | 只看该作者
你好,你有显示直流电压电流曲线的这个资料吗
回复

使用道具 举报

39#
ID:475236 发表于 2019-11-29 23:20 | 只看该作者
谢谢楼主分享!
回复

使用道具 举报

40#
ID:383956 发表于 2019-12-1 16:04 | 只看该作者
感谢分享,学习一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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