`

DS18B20自动量程显示

阅读更多
#define STRING_LENGTH 5     // 显示5位  -12.2 -0.01 0.000 1.000 12.50 125.0 

const char *TempValueToString(uint16_t tempValue)
{
    static char tempValueString[10] = {0};
    uint8_t     isMinus = 0;    // 负数标志 负数为1
    uint16_t    shortData = 0;  // 整数部分 (前12位 其实只有8位有效)
    uint16_t    floatData = 0;  // 小数部分 (后4位)
    uint8_t     i;

    if(tempValue & 0x8000)   // 如果是负数
    {
        isMinus = 1;
        tempValue = ~tempValue +1;  // 转成正数
        tempValueString[0] = '-';
    }

    shortData = (tempValue >> 4) & 0x00FF;  // 整数部分
    floatData = (tempValue & 0xF) * 625;    // 小数部分

    tempValueString[1] = shortData / 100 + '0';
    tempValueString[2] = shortData % 100 / 10 + '0';
    tempValueString[3] = shortData % 10 + '0';
    tempValueString[4] = '.';
    tempValueString[5] = floatData / 1000 + '0';
    tempValueString[6] = floatData % 1000 / 100 + '0';
    tempValueString[7] = floatData % 100 / 10 + '0';
    tempValueString[8] = floatData % 10 + '0';
    tempValueString[9] = '\0';

    for(i = 1; i < 4; i++)
    {
        if((tempValueString[i] != '0') || (i == 3)) // (i==3) 能够确保函数在该循环内退出函数
        {
            if(isMinus)     // 是负数 加上负号之后返回字符串地址
            {
                tempValueString[i - 1] = '-';
                tempValueString[i - 1 + STRING_LENGTH] = '\0'; // 后面的部分丢掉
                return &tempValueString[i - 1];
            }
            else            // 是正数 直接返回字符串地址
            {
                tempValueString[i + STRING_LENGTH] = '\0';  // 后面的部分丢掉
                return &tempValueString[i];
            }
        }
    }

    return &tempValueString[9]; // 不应该执行到的地方
}

 

 

 

输入DS18B20的温度寄存器数据
返回一个包含5个字符的字符串。
这样在LCD1602上显示的时候只占用固定的5个字符的空间。
还能保证最佳的精度。
自动量程与一般的显示效果对比



 

 

  • 大小: 158.3 KB
分享到:
评论

相关推荐

    DS18B20_arduino_ds18b20_

    标题 "DS18B20_arduino_ds18b20_" 暗示了我们正在探讨如何在Arduino平台上使用DS18B20温度传感器...通过理解单线通信协议、使用相关库和正确配置硬件,开发者可以轻松地将DS18B20集成到自己的物联网或自动化项目中。

    DS18B20数码管显示

    【DS18B20数码管显示】是一个与硬件接口编程相关的项目,主要涉及的是温度传感器DS18B20的使用以及其读取到的数据在数码管上的实时显示。这个项目的核心在于理解和掌握DS18B20传感器的工作原理、驱动程序的编写以及...

    DS18B20测温模块_DS18B20测温模块_ds18b20_

    **DS18B20测温模块**是用于精确测量温度的一种集成电路,广泛应用于各种环境监控、智能家居、工业控制等领域。该模块的核心是DS18B20芯片,由DALLAS(现属于MAXIM公司)生产,它是一款集成了传感器、数字信号处理和...

    MSP430F149+DS18B20+1602程序绝对好用

    本文将详细讲解基于MSP430F149微控制器、DS18B20数字温度传感器以及1602液晶显示屏的温度测量程序。这个程序设计旨在提供一种直观且精确的温度读取和显示解决方案,适用于各种环境监控、设备控制等应用场景。 MSP...

    单片机C语言Proteus仿真实例DS18B20温度传感器实验

    - 主要包括初始化DS18B20、读取温度值、显示温度等步骤。 4. **仿真调试** - 将编写的程序加载到Proteus中的单片机模型上。 - 运行仿真,观察温度读数是否正确。 5. **分析与总结** - 分析仿真结果,检查是否...

    ds18b20中文资料

    5. **报警功能**:用户可以设定上下限温度,当温度超出设定范围时,DS18B20 会自动触发报警信号。 6. **低功耗模式**:DS18B20 支持低功耗模式,即使在待机状态下,其功耗也非常低,适合电池供电的设备。 #### 三、...

    ds18b20温度传感器c语言编程

    根据给定的信息,本文将详细解释DS18B20温度传感器C语言编程中的关键知识点。DS18B20是一种数字温度传感器,常用于单片机系统中进行温度测量。接下来,我们将深入探讨DS18B20的工作原理、接口方式、初始化过程以及...

    ds18b20温度传感器,示例程序。显示部分1602液晶屏。

    ds18b20温度传感器,示例程序。显示部分1602液晶屏。

    基于mini2440+linux下的ds18b20驱动,

    DS18B20是一款单总线数字温度传感器,具有高精度、宽量程和防水特性。它可以通过单根数据线与微控制器进行通信,简化了硬件设计。该传感器能够直接输出数字信号,避免了模拟信号转换带来的误差。 2. **Mini2440...

    proteus仿真实例 DS18B20

    5. **运行仿真**:在Proteus中启动仿真,查看微控制器是否正确读取并显示DS18B20的温度数据。 **知识点拓展** 1. **单线通信协议**:理解DS18B20的单线协议工作原理,包括数据帧格式、时序和命令集。 2. **温度...

    ds18b20_test.tar.gz

    在项目中,`ds18b20_test`很可能是测试程序的入口点,可能包含初始化DS18B20、读取温度值并显示的代码。初始化过程通常涉及设置GPIO模式、拉低复位线、配置传感器分辨率等步骤。读取温度时,会调用如`ds18b20_read_...

    DS18B20-单片机数码管显示原理图和程序.doc

    【DS18B20-单片机数码管显示原理及程序详解】 本文将深入探讨如何使用DS18B20温度传感器与单片机STC89C54RD+构建一个实时电子温度计,并展示相关的硬件原理图、洞洞板布局以及源程序。在DIY电子温度计的过程中,...

    单片机C语言Proteus仿真实例DS18B20温度显示程序

    ### 单片机C语言Proteus仿真实例——DS18B20温度显示程序 #### 一、概述 本篇文章将详细介绍如何利用单片机C语言与Proteus软件进行DS18B20温度传感器的仿真设计,并实现温度的实时显示功能。这一项目不仅适用于...

    温控\基于温度传感器DS18B20的水温控制系统

    1. **总体设计框架**:系统以STC89C52单片机为核心,通过4x4矩阵键盘输入设定温度,采用LCD1602显示屏显示温度数据,DS18B20温度传感器用于检测水温,并通过控制继电器分别操作电热杯和搅拌器。 2. **单元电路设计...

    数字温度计-DS18B20

    数字温度计-DS18B20的应用,以其高精度、宽量程、低功耗和便携性的特点,成为了众多温度测量领域的首选设备。本文将详细探讨基于DS18B20的数字温度计系统的设计理念、工作原理及应用价值。 DS18B20数字温度计系统的...

    DS18B20温度传感器工作原理.rar

    DS18B20内部包含了一个高质量的测温元件,能够提供-55℃到+125℃的宽量程温度测量。它采用独特的单线接口,只需要一根信号线就能实现与微控制器的双向通信,大大简化了硬件连接。此外,DS18B20还具有可编程的分辨率...

    基于DS18B20的数字温度计

    DS18B20是一款集成了温度敏感元件、A/D转换器和串行接口的智能型温度传感器,具有高精度、宽量程、高灵敏度和低功耗的特点。与传统的温度传感器相比,DS18B20无需额外的信号调理电路,可以直接与单片机进行通信,...

    DS18B20电子温度计的设计详细方案

    ### DS18B20电子温度计的设计详细方案 #### 一、概述 DS18B20是一种具有单线接口特性的数字温度传感器,它能够直接将温度转化为数字信号,便于微处理器处理。利用DS18B20设计电子温度计具有结构简单、成本低廉且...

    基于-DS18B20的温度报警器设计.doc

    本设计涉及的核心技术是基于DS18B20的温度报警器,该系统采用AT89C51单片机作为核心处理器,结合DS18B20温度传感器进行温度采集,并通过LED显示器实时显示温度数据。设计的主要目标是创建一个能够精确、实时监测并...

    ds18b20数字温度计

    DS18B20数字温度计是一种基于单片机技术的智能温度测量设备,其核心特点是高精度、宽量程以及直观的数字显示,广泛应用于科研、工业控制和日常生活领域。本文将深入探讨DS18B20数字温度计的工作原理、设计要求以及...

Global site tag (gtag.js) - Google Analytics