世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

利用单片机如何对DS18B20进行温度监控

[复制链接]
查看: 1112 |回复: 6
1
一颗草
  • 积分:17
  • |
  • 主题:1
  • |
  • 帖子:3
积分:17
LV1
本网技工
  • 2018-2-28 23:00:49
10问答币

DS18B20温度传感器.rar

33.58 KB, 下载次数: 25, 下载积分: 财富 -2

收藏收藏
shanmu002
  • 积分:383
  • |
  • 主题:4
  • |
  • 帖子:22
积分:383
LV4
初级工程师
  • 2018-3-1 09:41:45
  • 倒数6
 
如果要从最基础的开始讲起,选取51单片机控制电路及其程序来看看,这方面资料网上非常多,也非常详细。
nc965
  • 积分:93884
  • |
  • 主题:115
  • |
  • 帖子:27413
积分:93884
版主
  • 2018-3-1 11:41:12
  • 倒数5
 
真心请教就直接晒出来,现代人不喜欢随便点击未知连接。
一颗草
  • 积分:17
  • |
  • 主题:1
  • |
  • 帖子:3
积分:17
LV1
本网技工
  • 2018-3-1 21:56:26
  • 倒数3
 
#include "reg52.h"                         
#include"temp.h"       

typedef unsigned int u16;         
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;


char num=0;
u8 DisplayData[8];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


void delay(u16 i)
{
        while(i--);       
}


/*******************************************************************************
* 函 数 名         : datapros()
* 函数功能                   : 温度读取处理转换函数
* 输    入         : temp
* 输    出         : 无
*******************************************************************************/

void datapros(int temp)          
{
           float tp;  
        if(temp< 0)                               
          {
                DisplayData[0] = 0x40;          
        temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;       
     }
        else
          {                       
                DisplayData[0] = 0x00;
                tp=temp;

                temp=tp*0.0625*100+0.5;       
               
        }
        DisplayData[1] = smgduan[temp / 10000];
        DisplayData[2] = smgduan[temp % 10000 / 1000];
        DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;
        DisplayData[4] = smgduan[temp % 100 / 10];
        DisplayData[5] = smgduan[temp % 10];
}


/*******************************************************************************
* 函数名         igDisplay()
* 函数功能                 :数码管显示函数
* 输入           : 无
* 输出                  : 无
*******************************************************************************/
void DigDisplay()
{
        u8 i;
        for(i=0;i<6;i++)
        {
                switch(i)
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;       
                }
                P0=DisplayData[5-i];
                delay(100);
                P0=0x00;
        }               
}

void main()
{       
        while(1)
        {
                datapros(Ds18b20ReadTemp());       
                DigDisplay();               
        }               
}


一颗草
  • 积分:17
  • |
  • 主题:1
  • |
  • 帖子:3
积分:17
LV1
本网技工
  • 2018-3-1 21:58:18
  • 倒数2
 
请大神指教!不胜感激
lovelee
  • 积分:6287
  • |
  • 主题:18
  • |
  • 帖子:560
积分:6287
LV8
副总工程师
  • 2018-3-1 13:07:20
  • 倒数4
 
按照DS18B20的时序控制就好。
shanmu002
  • 积分:383
  • |
  • 主题:4
  • |
  • 帖子:22
积分:383
LV4
初级工程师
最新回复
  • 2018-3-2 14:31:42
  • 倒数1
 
建议你还是找个51视频或者书看看,就看数码管显示和DS18B20,稍微有点基础一个小时也就清楚了。这里篇幅有限,而且别人的视频和书都是精心准备过的东东,效果会更好。
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号