ds18b20负温度显示问题void wendu_decimal(uint dat) //温度转换后送显示{float temp;if(temp=dat*0.625){wendu_shi=temp/100; //取十位 temp除不用定义类型wendu_ge =((uint)temp)%100/10; //取个位 temp求模要定义类型,为16位,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 22:56:51

ds18b20负温度显示问题void wendu_decimal(uint dat) //温度转换后送显示{float temp;if(temp=dat*0.625){wendu_shi=temp/100; //取十位 temp除不用定义类型wendu_ge =((uint)temp)%100/10; //取个位 temp求模要定义类型,为16位,
ds18b20负温度显示问题
void wendu_decimal(uint dat) //温度转换后送显示
{
float temp;
if(temp=dat*0.625)
{
wendu_shi=temp/100; //取十位 temp除不用定义类型
wendu_ge =((uint)temp)%100/10; //取个位 temp求模要定义类型,为16位,故定义uint
wendu_shu=((uint)temp)%100%10; //取小数
wendu_fu=0;
}
else //负温度时
{
temp=(~temp+1)*0.0625*10;
wendu_shi=temp/100; //取十位 temp除不用定义类型
wendu_ge =((uint)temp)%100/10; //取个位 temp求模要定义类型,为16位,故定义uint
wendu_shu=((uint)temp)%100%10; //取小数
wendu_fu=-3;
}
lcd_write_com(0x80+0x40+10); //送显示
lcd_write_date(0x30+wendu_fu);
lcd_write_date(0x30+wendu_shi);
lcd_write_date(0x30+wendu_ge);
lcd_write_date(0x2e);
lcd_write_date(0x30+wendu_shu);
lcd_write_date(0xdf); //温度符号
lcd_write_date(0x43);
}
这样一段程序其实负温度我不会编写,请大家帮忙改一下让能正确显示负温度,好像就差了temp定义的一句话,
还有在正温度的时候,最前端显示的不是0,而是什么都不显示,到负温度的时候才显示-号

ds18b20负温度显示问题void wendu_decimal(uint dat) //温度转换后送显示{float temp;if(temp=dat*0.625){wendu_shi=temp/100; //取十位 temp除不用定义类型wendu_ge =((uint)temp)%100/10; //取个位 temp求模要定义类型,为16位,
这有问题.
if(temp=dat*0.625)
{
应该改为
temp=dat*0.625;
if(temp>=32)//
{
华氏度与摄氏度的换算:
华氏度比摄影氏度小.一华氏度等于5/9摄氏度.从华氏度变成摄氏度的公式是:
(华氏度-32)× 摄氏度
也可以这样算:
(华氏度-32)×5÷9=摄氏度
将摄氏度换算为华氏度的公式是:摄氏度÷5/9 +32=华氏度
或者:摄氏度×9÷5+32=华氏度
32是个什么数字呢?
水的冰点是0摄氏度(0℃),是32华氏度(32℉),也就是说,用摄氏温度表测量,水到0°结冰;如果用华氏温度测量,水的结冰点是32°.