锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

温度传感器代码解析Ⅰ

时间:2022-11-20 06:00:00 901030温度传感器902040温度传感器9370c型传感器传感器if550510路温度传感器

温度传感器的读写时间原理与红外遥控器相似,关于宋先生lesson16_2例程的DS18B20.c我们就不解释代码了,

文档第16章《手把手教你学51单片机》已经解释清楚。我们需要解释的是如何在液晶屏上显示温度值的转换。

1.转换大于等于0度

首先,当我们知道大于或等于0度时,临时存取未转换的16位变量值只需乘以0.0625是转换的实际温度。

看下表就知道了,0x07D0=实际温度为2000*0.0625= 125度。

8cd4fbfc8ecf48a1887c0e3c38918ce4.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) );

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

str[2]='.';

str[3]='0' ( temp );

这样的话“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=(unsignedint)temp_float;///得到16位整形手术的值

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

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

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

str[3]='.';

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

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

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

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

temp_i=0;

我们所做的是,当温度为25时,高度为0而不显示.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,继续下一次显示。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章