#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个字符的空间。
还能保证最佳的精度。
自动量程与一般的显示效果对比
相关推荐
标题 "DS18B20_arduino_ds18b20_" 暗示了我们正在探讨如何在Arduino平台上使用DS18B20温度传感器...通过理解单线通信协议、使用相关库和正确配置硬件,开发者可以轻松地将DS18B20集成到自己的物联网或自动化项目中。
【DS18B20数码管显示】是一个与硬件接口编程相关的项目,主要涉及的是温度传感器DS18B20的使用以及其读取到的数据在数码管上的实时显示。这个项目的核心在于理解和掌握DS18B20传感器的工作原理、驱动程序的编写以及...
**DS18B20测温模块**是用于精确测量温度的一种集成电路,广泛应用于各种环境监控、智能家居、工业控制等领域。该模块的核心是DS18B20芯片,由DALLAS(现属于MAXIM公司)生产,它是一款集成了传感器、数字信号处理和...
本文将详细讲解基于MSP430F149微控制器、DS18B20数字温度传感器以及1602液晶显示屏的温度测量程序。这个程序设计旨在提供一种直观且精确的温度读取和显示解决方案,适用于各种环境监控、设备控制等应用场景。 MSP...
- 主要包括初始化DS18B20、读取温度值、显示温度等步骤。 4. **仿真调试** - 将编写的程序加载到Proteus中的单片机模型上。 - 运行仿真,观察温度读数是否正确。 5. **分析与总结** - 分析仿真结果,检查是否...
5. **报警功能**:用户可以设定上下限温度,当温度超出设定范围时,DS18B20 会自动触发报警信号。 6. **低功耗模式**:DS18B20 支持低功耗模式,即使在待机状态下,其功耗也非常低,适合电池供电的设备。 #### 三、...
根据给定的信息,本文将详细解释DS18B20温度传感器C语言编程中的关键知识点。DS18B20是一种数字温度传感器,常用于单片机系统中进行温度测量。接下来,我们将深入探讨DS18B20的工作原理、接口方式、初始化过程以及...
ds18b20温度传感器,示例程序。显示部分1602液晶屏。
DS18B20是一款单总线数字温度传感器,具有高精度、宽量程和防水特性。它可以通过单根数据线与微控制器进行通信,简化了硬件设计。该传感器能够直接输出数字信号,避免了模拟信号转换带来的误差。 2. **Mini2440...
5. **运行仿真**:在Proteus中启动仿真,查看微控制器是否正确读取并显示DS18B20的温度数据。 **知识点拓展** 1. **单线通信协议**:理解DS18B20的单线协议工作原理,包括数据帧格式、时序和命令集。 2. **温度...
在项目中,`ds18b20_test`很可能是测试程序的入口点,可能包含初始化DS18B20、读取温度值并显示的代码。初始化过程通常涉及设置GPIO模式、拉低复位线、配置传感器分辨率等步骤。读取温度时,会调用如`ds18b20_read_...
【DS18B20-单片机数码管显示原理及程序详解】 本文将深入探讨如何使用DS18B20温度传感器与单片机STC89C54RD+构建一个实时电子温度计,并展示相关的硬件原理图、洞洞板布局以及源程序。在DIY电子温度计的过程中,...
### 单片机C语言Proteus仿真实例——DS18B20温度显示程序 #### 一、概述 本篇文章将详细介绍如何利用单片机C语言与Proteus软件进行DS18B20温度传感器的仿真设计,并实现温度的实时显示功能。这一项目不仅适用于...
1. **总体设计框架**:系统以STC89C52单片机为核心,通过4x4矩阵键盘输入设定温度,采用LCD1602显示屏显示温度数据,DS18B20温度传感器用于检测水温,并通过控制继电器分别操作电热杯和搅拌器。 2. **单元电路设计...
数字温度计-DS18B20的应用,以其高精度、宽量程、低功耗和便携性的特点,成为了众多温度测量领域的首选设备。本文将详细探讨基于DS18B20的数字温度计系统的设计理念、工作原理及应用价值。 DS18B20数字温度计系统的...
DS18B20内部包含了一个高质量的测温元件,能够提供-55℃到+125℃的宽量程温度测量。它采用独特的单线接口,只需要一根信号线就能实现与微控制器的双向通信,大大简化了硬件连接。此外,DS18B20还具有可编程的分辨率...
DS18B20是一款集成了温度敏感元件、A/D转换器和串行接口的智能型温度传感器,具有高精度、宽量程、高灵敏度和低功耗的特点。与传统的温度传感器相比,DS18B20无需额外的信号调理电路,可以直接与单片机进行通信,...
### DS18B20电子温度计的设计详细方案 #### 一、概述 DS18B20是一种具有单线接口特性的数字温度传感器,它能够直接将温度转化为数字信号,便于微处理器处理。利用DS18B20设计电子温度计具有结构简单、成本低廉且...
本设计涉及的核心技术是基于DS18B20的温度报警器,该系统采用AT89C51单片机作为核心处理器,结合DS18B20温度传感器进行温度采集,并通过LED显示器实时显示温度数据。设计的主要目标是创建一个能够精确、实时监测并...
DS18B20数字温度计是一种基于单片机技术的智能温度测量设备,其核心特点是高精度、宽量程以及直观的数字显示,广泛应用于科研、工业控制和日常生活领域。本文将深入探讨DS18B20数字温度计的工作原理、设计要求以及...