历史上的今天

今天是:2024年08月30日(星期五)

正在发生

2021年08月30日 | 51单片机-温度传感器代码解析Ⅰ

发布者:平和宁静 来源: eefocus关键字:51单片机  温度传感器  DS18B20 手机看文章 扫描二维码
随时随地手机看文章

温度传感器的读写时序原理跟红外遥控差不多,关于宋老师的lesson16_2例程的DS18B20.c的代码这里我们就不讲解了,


《手把手教你学51单片机》文档第16章都已讲解明白。我们要讲解的是温度数值的转换如何在液晶屏上显示出来。


1.大于等于0度的转换

首先我们知道大于等于0度的时候,临时存取没有转换过的16位的变量的数值只需要乘以0.0625就是转换出来的实际温度了。


看到以下表格就知道,0x07D0=2000,实际温度就是2000*0.0625=+125度。

13.3.png

假如temp是unsigned int型变量用来存取没有转换过的临时温度,那么我们再定义一个float型的变量temp_float。


我们把temp强制转换成float类型,这样“temp_float=(float)temp*0.0625”就是实际的温度了。


我们要想把实际温度显示在液晶屏上该如何做呢?


假如我们要显示的范围只需保留一位小数即可,那么要显示像19.2度这样,我们要做的是把temp_float再乘以10.0,


然后又强制转换回来“temp=(u16)temp_float;”让temp存取192这个unsigned int类型的数据。


我们定义一个数组str。

str[0]='0'+( (temp/100)%10 );

str[1]='0'+( (temp/10)%10 );                              

str[2]='.';

str[3]='0'+( temp%10 );


这样的话“LcdShowStr(0, 0, str);”就是显示19.2了。

可是温度传感器测温最高有125度,也就是我们也要满足测量超过100度时候的显示。

比如显示101.2度时,液晶屏是这样显示

13.4.png


显示29.5度液晶屏要这样显示

13.5.png


显示0.7度液晶屏要这样显示,可以看到小数点要灵活改变

13.6.png


那么我们需要重新完善显示的代码,我们定义一个u8变量temp_i初始化时为0


temp_float=(float)temp*0.0625*10.0;//实际温度值再乘以10倍

temp=(unsigned int)temp_float;     //得到16位整型的数值

str[0]='0'+( (temp/1000)%10 );     //当温度大于等于100度时需要显示百位数

str[1]='0'+( (temp/100)%10 );      //当温度大于等于10度时需要显示十位数

str[2]='0'+( (temp/10)%10 );       //当温度大于等于1度时需要显示个位数

str[3]='.';

str[4]='0'+( temp%10 );            //温度必须显示小数点后的一位

  

if(str[0]=='0')temp_i++;

if(str[1]=='0')temp_i++;

  

LcdShowStr(0, 0, str+temp_i);      //显示到液晶屏上

temp_i=0;


我们做的是高位为0不显示,也就是当温度为25.9度时,有

str[0]=’0’; str[1]=’2’; str[2]=’5’; str[3]=’.’; str[4]=’9’;

而“LcdShowStr(0, 0, str+temp_i);”就是从str[1]开始显示,这样液晶屏就是这样显示了

13.7.png


同理当温度为0.7度时,“LcdShowStr(0, 0, str+temp_i);”里的temp_i的值为2,那么就是从str[2]开始显示,显示就如以下的方式了,显示完了temp_i要清0,继续接下一次的显示。

13.8.png

关键字:51单片机  温度传感器  DS18B20 引用地址:51单片机-温度传感器代码解析Ⅰ

上一篇:51单片机-代码文件和测试
下一篇:51单片机-温度传感器代码解析Ⅱ

推荐阅读

今年以来芯片成了科技届的重要话题,安防芯片尤其是AI安防芯片更是颇受关注。在安防领域,各类芯片广泛分布于整个安防监控系统中,扮演着核心角色,芯片在很大程度上左右着安防系统的整体功能、技术指标、稳定性、能耗、成本等,并在安防行业未来发展发展脉络及方向上起到关键作用。安防产业从模拟进化到数字再到网络高清,以及当前的人工智能,无一例外得...
在上海,购买插电式混合动力车可以赠送新能源牌照,是很多车主在没有汽油车指标,又不想买纯电动车的情况下的新选择。但是,最近上海的不少车主向媒体反映,他们此前购买的国六版比亚迪秦proDM超能版油电混动汽车,一直不能办理牌照,车提回来了只能在小区里停着,这究竟是什么原因? 购买国六版比亚迪,四个月没能上车牌 上海的韩先生4月份在上海卓景比亚...
近日小米正式推出了小米 10 青春版哆啦A梦限定款,以纪念该系列产品诞生 50 周年。这款手机采用 8GB RAM + 256GB 存储配置,售价为 2799 元。 目前可以预订,并将于 9 月 1 日起发售。全新的哆啦A梦限定款具有与常规版颜色类似的蓝色机身。但除此之外,它还在后玻璃面板底部放置了巨大的哆啦A梦「圆脸」。除了手机之外,购买者还将获得以...
在示波器的使用中,经常需要将波形全局和局部的兴趣波形组合起来进行观看,这就要用到大家非常熟悉的Zoom功能了,ZDS2022示波器的Zoom功能有哪些颇有意思的小细节呢?首先,我们将ZDS2022示波器的波形缩放功能直接放在了操作面板上,作为可以一键操作的快捷按键。当使用Zoom功能的时候,无需寻找,无需进入子菜单,您只需按下操作面板上的Zoom按键,就能完...

史海拾趣

问答坊 | AI 解惑

vxworks6.5如何得到对端的mac地址?

{    STATUS sts; int     sockfd;  …

查看全部问答∨

flash芯片的检测和烧写问题

小弟用三星的f9f208,但是发现有很多芯片都有坏道,不知道这些坏道影响使用不?而且怎么在焊接之前对这些芯片进行检测呢?如果有编程器加上夹具,可以对其进行检测吗?另外,可否通过编程器读取已经烧写好的flash并生成bin文件,然后用这个bin文件 ...…

查看全部问答∨

有关IAR FOR AVR 分配在数组的疑问

一个项目里,用到M128,外置32KRAM,有几个全局大数组,2个4000数组,三个1000数组(嘿嘿,够大了吧),在地址不定位的情况下声明这几个数组,编译时几乎都报错,地址重叠。每个数组地址绝对定位定义后没问题(最好数组间留一些空间)。现在疑问是 ...…

查看全部问答∨

过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分

过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分…

查看全部问答∨

请教:nboot中C代码的执行问题

  不知道什么原因,nboot的用C语言写的代码一直不能运行完整。汇编全部执行完毕了,但是一跳到C函数main,问题就来了,不能运行函数,根据我点的灯的情况来看,似乎是卡在函数里面了,就是说跳到函数里面就出不来了,如果将那些初始化代 ...…

查看全部问答∨

请教关于WINCE编译参数的问题

最近我用PB4.2定制一个WINCE系统,如果我选择X86系列的目标平台进行定制,都可以顺利地生成NK.bin,然而我实际 的目标平台是S3C2410,当然我得选择sumsang SMDK2410:ARM4的BSP来定制,然而却总是无法生成NK.bin,奇怪的是 也不抱错,我在想,是不 ...…

查看全部问答∨

嵌入式系统含义及应用

摘要: 对目前国内流行的嵌入式系统定义提出质疑,认为嵌入式系统不是“专用计算机系统”,嵌入式系统不只“以计算机技术为基础”。从嵌入式系统的发展起源、体系结构、功能特点、知识技术体系等方面进行了分析论证,从而进一步完善了嵌入式系统的定 ...…

查看全部问答∨

STM8S独门看门狗(IWDG)无法启动,求助!

想法很简单,就是使用看门狗复位让一个LED闪。程序进去的时候,把LED点亮一段时间,然后关闭LED,最后有一个死循环,让看门狗复位芯片,然后再点亮LED。 但程序进去后,LED被点亮然后灭了就再也没亮,说明看门狗没有复位芯片。我今天查了一 ...…

查看全部问答∨

大家来看看这两块屏,感觉有点意思呀....

本帖最后由 ddllxxrr 于 2016-1-7 17:06 编辑 下午逛了逛淘宝,看到两块屏,挺便宜的....第一个,320*240,不到30块......28.8,多了貌似还能便宜..........   第二个....不知道分辨率,看起来应该也不小,也不像笔段式的,盒子上说是 ...…

查看全部问答∨

MSP430F149flash程序问题

我的目的是想练习使用一下flash的掉电不丢失功能,通过八位led灯指示数据t,按下按键s1时t的值会变化,然后将变化后的值存入flash中,下次上电后通过按下按键s2时读出上次存的值让led灯显示出来,程序如下有些问题,可能是我c语言指针部分学的不太 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved