温度传感器c语言编写,温度传感器代码解析Ⅰ
温度传感器的读写时序原理跟红外遥控差不多,关于宋老师的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语言编写,温度传感器代码解析Ⅰ相关推荐
- c语言程序代码有什么用,用c语言编写的代码程序是什么?
前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...
- c#语言编写成绩代码是,在C#中的分数
在C#中的分数 60; {S0}简介 是从.NET框架中缺少的重要功能之一是一个Fraction类.解释,我是从,说:"因为我们有相同的数据类型可以代表,我们没有公开这种类型的具体,这是具体 ...
- pt100温度传感器c语言,pt100温度传感器阻值,pt100温度与阻值对照表
描述 Pt100在用于温度传感器时,是采用温度系数符合特定要求的金属铂制成的,依据物体电阻值随温度变化而变化的原理工作的,电阻式温度传感器中,按照国际温标(国际组织对热力学温度的定义)在热力学温度为2 ...
- 浏览器可以用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. ...
- java三色球问题_C语言三色球问题代码解析
问题描述 一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配? 问题分析 根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8- ...
- 用c语言如何实现管道的大小,C语言编写管道代码
什么是管道: 管道是Unix中最古老的进程间通信的形式. 我们把从一个进程链接到另外一个进程的一个数据流称为管道. 本质是有固定大小的内核缓存区. 管道的限制 管道是半双工的,数据只能向一个方向流动, ...
- c语言编写水仙花数代码
水仙花数,也称为自恋数,是指一个n位数(n>=3)各位数字的n次方之和等于该数本身的数.例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153. 下面是用C语言编写的代码 ...
- 编程是将c语言编写的源程序,C语言程序设计基础教程习题答案20120319.doc
习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. 在C语言中,输入操作是由库函数__scanf ...
- android程序内下载文件,android文件下载代码 android程序 里如何编写下载代码
android开发文件下载在手机报错 package cc.download; import android.app.Activity;import android.os我比任何人都懂你不会真的陪我到 ...
最新文章
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(1):Mybatis和Hibernate概念理解...
- php数组选择随机元素,php 数组随机选择一个元素显示的简单示例
- 副本的leader选举
- ideal pom文件安装到maven库中_java学习之web基础(14)Maven基础学习
- 算法--Hash算法及其应用场所
- php压缩中文乱码,完美解决PHP中文乱码
- angularjs 服务详解
- kettle转换和作业插件开发及调试
- 2022-03-28 术语MES、WMS
- 【leetcode】栈(python)
- 关于Android平台上面is not valid; is your activity running?
- SQL的连接查询——内连接、左连接、右连接、自连接(重要)
- 台式电脑连接电脑主机与显示器
- Vasp第一性原理计算从零单排——石墨烯能带的计算
- 在开始——运行里头输入命令能打开的文件是放在WINDOWS哪个目录下
- Matlab 指定分辨率保存图片
- Jmeter5.x性能压测工具入门介绍
- 【Android-Kotlin】匿名内部类与Lambda 表达式(附RecycleView监听)
- 网络销售-----让客户绝对产生购买欲望的二十个技巧(一)
- python 一个月有多少天_python中一个月有多少天
热门文章
- 文末赠书3本 | 盼了一年的Core Java最新版卷Ⅱ,终于上市了
- 工程类如安监、基建等项目投标流程规范建议
- 51单片机-6-矩阵键盘
- arm 处理器的堆栈操作
- linux 怎么卸载gnome-screenshot,史上最全的使用 gnome-screenshot 获取屏幕快照指南
- 天道酬勤,上善若水—八字真言让您立于“不败之地”
- SQL学习(二)——SELECT COUNT GROUP BY HAVING
- python中百分号可以格式化_Python基础-字符串格式化_百分号方式_format方式
- PLMN=46004是中国移动的SIM卡
- uni-app项目配置手机端底部的tab栏(一)