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

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

1.大于等于0度的转换

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

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

假如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度时,液晶屏是这样显示

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

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

那么我们需要重新完善显示的代码,我们定义一个u8变量temp_i初始化时为0temp_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]开始显示,这样液晶屏就是这样显示了

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

温度传感器c语言编写,温度传感器代码解析Ⅰ相关推荐

  1. c语言程序代码有什么用,用c语言编写的代码程序是什么?

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  2. c#语言编写成绩代码是,在C#中的分数

    在C#中的分数 60; {S0}简介 是从.NET框架中缺少的重要功能之一是一个Fraction类.解释,我是从,说:"因为我们有相同的数据类型可以代表,我们没有公开这种类型的具体,这是具体 ...

  3. pt100温度传感器c语言,pt100温度传感器阻值,pt100温度与阻值对照表

    描述 Pt100在用于温度传感器时,是采用温度系数符合特定要求的金属铂制成的,依据物体电阻值随温度变化而变化的原理工作的,电阻式温度传感器中,按照国际温标(国际组织对热力学温度的定义)在热力学温度为2 ...

  4. 浏览器可以用c语言编辑吗,如何在浏览器端运行c/c++语言编写的代码

    安装依赖 Node.js(0.8 or above; 0.10.17 or above to run websocket-using servers in node): Python2.x (2.7. ...

  5. java三色球问题_C语言三色球问题代码解析

    问题描述 一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配? 问题分析 根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8- ...

  6. 用c语言如何实现管道的大小,C语言编写管道代码

    什么是管道: 管道是Unix中最古老的进程间通信的形式. 我们把从一个进程链接到另外一个进程的一个数据流称为管道. 本质是有固定大小的内核缓存区. 管道的限制 管道是半双工的,数据只能向一个方向流动, ...

  7. c语言编写水仙花数代码

    水仙花数,也称为自恋数,是指一个n位数(n>=3)各位数字的n次方之和等于该数本身的数.例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153. 下面是用C语言编写的代码 ...

  8. 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc

    习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...

  9. android程序内下载文件,android文件下载代码 android程序 里如何编写下载代码

    android开发文件下载在手机报错 package cc.download; import android.app.Activity;import android.os我比任何人都懂你不会真的陪我到 ...

最新文章

  1. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(1):Mybatis和Hibernate概念理解...
  2. php数组选择随机元素,php 数组随机选择一个元素显示的简单示例
  3. 副本的leader选举
  4. ideal pom文件安装到maven库中_java学习之web基础(14)Maven基础学习
  5. 算法--Hash算法及其应用场所
  6. php压缩中文乱码,完美解决PHP中文乱码
  7. angularjs 服务详解
  8. kettle转换和作业插件开发及调试
  9. 2022-03-28 术语MES、WMS
  10. 【leetcode】栈(python)
  11. 关于Android平台上面is not valid; is your activity running?
  12. SQL的连接查询——内连接、左连接、右连接、自连接(重要)
  13. 台式电脑连接电脑主机与显示器
  14. Vasp第一性原理计算从零单排——石墨烯能带的计算
  15. 在开始——运行里头输入命令能打开的文件是放在WINDOWS哪个目录下
  16. Matlab 指定分辨率保存图片
  17. Jmeter5.x性能压测工具入门介绍
  18. 【Android-Kotlin】匿名内部类与Lambda 表达式(附RecycleView监听)
  19. 网络销售-----让客户绝对产生购买欲望的二十个技巧(一)
  20. python 一个月有多少天_python中一个月有多少天

热门文章

  1. 文末赠书3本 | 盼了一年的Core Java最新版卷Ⅱ,终于上市了
  2. 工程类如安监、基建等项目投标流程规范建议
  3. 51单片机-6-矩阵键盘
  4. arm 处理器的堆栈操作
  5. linux 怎么卸载gnome-screenshot,史上最全的使用 gnome-screenshot 获取屏幕快照指南
  6. 天道酬勤,上善若水—八字真言让您立于“不败之地”
  7. SQL学习(二)——SELECT COUNT GROUP BY HAVING
  8. python中百分号可以格式化_Python基础-字符串格式化_百分号方式_format方式
  9. PLMN=46004是中国移动的SIM卡
  10. uni-app项目配置手机端底部的tab栏(一)