标题:
单片机温度采集问题 请教大神
[打印本页]
作者:
残破的羽翼
时间:
2016-5-22 00:29
标题:
单片机温度采集问题 请教大神
请问下面的语句中Temp=(((float)(ch)/51)*3+30)*10;是什么意思(部分管教定义省略)
void Display_Result(uchar ch)
{
Temp=(((float)(ch)/51)*3+30)*10;
a=Temp/100;
b=(Temp-a*100)/10;
c=Temp-a*100-b*10;
DS1=0;DS2=1;DS3=1;DS4=1;
P0=LEDData[a];DP=1;
Delayms(2);
DS1=1;DS2=0;DS3=1;DS4=1;
P0=LEDData[b]; DP=0;
Delayms(2);
DS1=1;DS2=1;DS3=0;DS4=1;
P0=LEDData[c]; DP=1;
Delayms(2);
DS1=1;DS2=1;DS3=1;DS4=0;
P0=0xF0; DP=0;
Delayms(2);
作者:
zzqDietrich
时间:
2016-5-22 10:50
daimazhenque
作者:
yyg123321a
时间:
2016-5-22 14:47
//获取当前温度值
int getTmpValue()
{
unsigned int tmpvalue;
int value; //存放温度数值
float t;
unsigned char low, high;
sendReadCmd();
//连续读取两个字节数据
low = readByte();
high = readByte();
//将高低两个字节合成一个整形变量
//计算机中对于负数是利用补码来表示的
//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的
value
tmpvalue = high;
tmpvalue <<= 8;
tmpvalue |= low;
value = tmpvalue;
//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度
t = value * 0.0625;
//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
//如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
//如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
return value;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1