`

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温度传感器,示例程序。显示部分1602液晶屏。

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

    C语言基于51单片机的DS18b20的温度报警系统

    报警温度范围为全量程从-55到125度 是在做多点温度报警系统顺便写的 保证好使 用液晶1602显示并且能在软件上设置报警温度上下限

    单片机课程设计之基于DS18B20的多点温度测量系统的设计.doc

    2.3 系统软件流程图 主程序执行流程如图2所示,主程序先对各DS18B20进行初始化,然后重复调用写命令和 读数据模块,最后将数据处理后送入LED显示。 2. 4 系统电路图 3系统仿真 Proteus软件是Labcenter公司的一款...

    基于DS18B20的数字温度计

    本文主要介绍了一个基于89S51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行...

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

    水温可以在一定范围内设定,并能实现在10℃—70℃量程范围内对每一点温度的自动控制,以保持设定的温度基本保持不变。 二、基本要求 (1)可键盘设定控制温度值,并能用液晶显示,显示最小区分度为0.1℃; (2)可以...

    基于单片机DS18B20温度控制器课程设计...doc

    详细描述了利用数 字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件 编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统 可以方便的实现温度的采集和...

    DS18B20温度传感器测温程序1602显示

    测温程序可以精确到0.0625度,为该传感器最小量程,外加1602显示,测量室温基本无误差,内附一份较为详细的学习资料。欢迎学习探讨

    单片机温度测量设计

    [摘要] 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于AT89C52 单片机的测温系统,详细描述了利用数字温度传感器DS18B20 开发...

    基于单片机的智能温度计的设计.doc

    10 5.2.1主程序 10 5.2.2 LCD写指令子函数 11 5.2.3 LCD写数据子函数 11 5.2.4 LCD 写字符串子函数 12 5.2.5 LCD初始化子函数 13 5.2.6 DS18B20复位子函数 14 5.2.7 DS18B20读数据子函数 15 5.2.8 DS18B20写数据子...

    基于51单片机的温度警报器的设计

    详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警...

    基于单片机设计的温度报警系统.doc

    随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于单片机的温度报警系统,详细描述了利用温度传感器DS18B20开发测温系统的过程,...

    单片机实习报告

    介绍了一个基于AT89C52单片机的时钟、测温定时及频率计系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的...

    基础功能_RTC-修改-定时器.rar_LCD_customshfw_drawpog_rtc温度采集_温度采集

    或者通过DS18B20数字温度传感器采集环境温度,并通过LCD进行显示。 2、温度报警功能:环境温度如果超过设定的温度高报警值,报警指示灯LED1开始闪烁,温度越高闪烁的频率越快;如果低于温度高报警值,LED1熄灭,在...

    基于STC89C82的水温控制系统=程序+原理图+PCB图

    可以通过DS18B20温度传感器测量水温并通过12864液晶显示水的实际温度,最小区分为0.1度 c.系统应具有在水温下限到水温上限全量程内的加热功能(当水温低于水温下限时开始加热,水温低于水温上限时自动断电停止加热)...

    51单片机实验+protues8.8仿真

    学校单片机实验的学生,目录: 1、ADC0809 2、DAC0832 3、ds18b20 4、矩阵按键 5、流水灯 6、频率计 7、外部中断 8、量程自动转换ADC

    STM32:pid自整定+pid控温+pwm输出.rar

    主要是利用继电器反馈法进行pid参数自动整定。若测出了系统的一阶模型,或得出了系统的临界比例增益,则可很容易地设计出PID调节器。继电型自整定的基本想法是,在控制系统中设置...内含STM32程序,包含DS18B20读取温度

    (毕设)超声波测距仪——倒车雷达电路(原理图和PCB源文件)-电路方案

    该作品主体为超声波测距,使用US-015超声波模块,最大量程4m,精度0.01m,有DS18B20温度传感器作为温度补偿元件,装有一个激光十字,用于定位测距目标,作为倒车雷达时,当距离小于设定值时,声光报警。 整个电路...

    一种基于AT89C51的智能温度控制系统

    以AT89C51为微控制器,以热电偶与DS18B20微处理器为传感器的智能温度控制系统, 通过PID调节与PWM方式控制加热,可对量程、超调量与占空比等参数进行设置。重点论述了系 统的设计方案,介绍了硬件电路和软件的设计方法。

    基于单片机Proteus仿真设计资料包(包含仿真及源程序)共18套资料

    003-基于单片机18b20温度采集在上位机显示仿真设计包含仿真及源程序 004-基于单片机超声波测距高精度超声波测距电路仿真设计包含仿真及源程序 005-基于单片机自动切换量程的数字电压表proteus仿真设计源程序 006-...

Global site tag (gtag.js) - Google Analytics