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/06/30 04:08:11
![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位,](/uploads/image/z/6551223-15-3.jpg?t=ds18b20%E8%B4%9F%E6%B8%A9%E5%BA%A6%E6%98%BE%E7%A4%BA%E9%97%AE%E9%A2%98void+wendu_decimal%28uint+dat%29+%2F%2F%E6%B8%A9%E5%BA%A6%E8%BD%AC%E6%8D%A2%E5%90%8E%E9%80%81%E6%98%BE%E7%A4%BA%7Bfloat+temp%3Bif%28temp%3Ddat%2A0.625%29%7Bwendu_shi%3Dtemp%2F100%3B+%2F%2F%E5%8F%96%E5%8D%81%E4%BD%8D+temp%E9%99%A4%E4%B8%8D%E7%94%A8%E5%AE%9A%E4%B9%89%E7%B1%BB%E5%9E%8Bwendu_ge+%3D%28%28uint%29temp%29%25100%2F10%3B+%2F%2F%E5%8F%96%E4%B8%AA%E4%BD%8D+temp%E6%B1%82%E6%A8%A1%E8%A6%81%E5%AE%9A%E4%B9%89%E7%B1%BB%E5%9E%8B%2C%E4%B8%BA16%E4%BD%8D%2C)
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°.