当前位置 :
ds18b20负温度显示问题voidwendu_decimal(uintdat)//温度转换后送显示{floattemp;if(temp=dat*0.625){wendu_shi=temp/100;//取十位temp除不用定义类型wendu_ge=((uint)temp)%100/10;//取个位temp求模要定义类型,为16位,
2人问答
问题描述:

ds18b20负温度显示问题

voidwendu_decimal(uintdat)//温度转换后送显示

{

floattemp;

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,而是什么都不显示,到负温度的时候才显示-号

李恒峰回答:
  这有问题.   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°.
代应回答:
  那么负温度else//负温度时{temp=(~temp+1)*0.0625*10;wendu_shi=temp/100;//取十位temp除不用定义类型wendu_ge=((uint)temp)%100/10;//取个位temp求模要定义类型,为16位,故定义uintwendu_shu=((uint)temp)%100%10;//取小数wendu_fu=-3;这部分的temp怎能定义?我现在仿真,正温度可以显示,负温度显示出来是乱码
最新更新
PC端 | 移动端 | mip端
字典翻译(zidianfy.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
电话:  邮箱:
Copyright©2009-2021 字典翻译 zidianfy.com 版权所有 闽ICP备2022014709号-7
lyric 頭條新聞