qq_26756383 2015-03-25 05:02
浏览 4410

新手求教ds18b20如何正确显示正负温度值

unsigned char gett(void)
{

Init_DS18B20(); //将DS18B20初始化
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
for(time_DS18B20=0;time_DS18B20<100;time_DS18B20++);
//温度转换需要一点时间
Init_DS18B20(); //将DS18B20初始化
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位
temp_l=ReadOneChar();
//低位在前
temp_h=ReadOneChar();
//高位在后
flag1=temp_h&0xf8;
if(flag1)
{ n=flag1;
temp_h=~temp_h;
if(temp_l==0)temp_h++;
//若低8位全为0且温度为负,取补时就要向高位进1
temp_l=~temp_l+1;

}
temnum=(temp_h*256+temp_l)/16;
return temnum; //返回温度值
}

上面是我的程序,但是temnum无法读出为负时的值,如何修改才能让返回的温度值temnum具有正负性

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog