标题: LCD采集温度显示代码,最后两句什么意思啊 [打印本页]

作者: lipingjiang    时间: 2020-2-28 19:29
标题: LCD采集温度显示代码,最后两句什么意思啊
void TEMP_Read()  //读取温度整数
        {
                uint8 a,b;
                TEMP_INITIALIZE();
                TEMP_Write_Char(0xcc); //跳过ROM
                TEMP_Write_Char(0x44);//温度转化
                TEMP_Delay(100);


                TEMP_INITIALIZE();
                TEMP_Write_Char(0xcc);//跳过ROM
                TEMP_Write_Char(0xbe);//获取温度
                TEMP_Delay(100);

                a=TEMP_Read_Char();
                b=TEMP_Read_Char();

                Temp_Value=b<<4;
                Temp_Value+=(a&0xf0)>>4;
        }
最后两句什么意思啊,求救


作者: ccczzz    时间: 2020-2-28 20:11
temp_value=b<<4;//temp_value=b左移动4位 , 转换成10进制temp_value+=(a&0xf0)>>4; //temp_value=temp_value+((a&0xf0)>>4) 转换成10进制
作者: ccczzz    时间: 2020-2-28 20:12
一己之见望采纳。
作者: ccczzz    时间: 2020-2-28 20:15
temp_value=b<<4;//temp_value=b左移动4位
temp_value+=(a&0xf0)>>4; //temp_value=temp_value+((a&0xf0)>>4)右移动4位
作者: csmyldl    时间: 2020-2-28 20:58
Temp_Value=b<<4;
Temp_Value+=(a&0xf0)>>4;
因为采集到的温度只有12位,b是高8位数据(但只有低4位有用),a是低8位数据,高4位是与b的低4位组成温度的整数,a的低4位是温度的小数部分
所以这两名的意思是:取b的低4位数据作为Temp_Value的高4位,取a的高4位作为Temp_Value的低4位,最后构成温度的整数值
作者: xuyaqi    时间: 2020-2-28 21:10
Temp_Value=b<<4; 把b左移4位赋予Temp_Value。
Temp_Value+=(a&0xf0)>>4;  把a与0xf0相与再左移4位,加上Temp_Value再赋予Temp_Value  。
作者: wulin    时间: 2020-2-28 21:47
这是取正整数弃小数的语句。楼主了解了DS18b20输出的数据结构后理解最后两句什么意思就容易了。
DS18b20输出的是2个字节数据,a=低8位,b=高8位,b的最高位0为+,1为-,次3位始终为0,b的低4位是整数的高4位,a的高4位是整数的低4位。所以b<<4+a>>4就是用一个字节表示的正整数。
作者: 我叫小大打    时间: 2020-3-10 13:23
这很
很简单的
temp_value=b<<4;//temp_value=b左移动4位
temp_value+=(a&0xf0)>>4;
作者: sbmtv    时间: 2020-3-10 14:52
很简单啊  就是
temp_value=b<<4;//temp_value=b
左移动4位
temp_value+=(a&0xf0)>>4; //temp_value=temp_value+((a&0xf0)>>4)
右移动4位
作者: huangfu112000    时间: 2020-3-10 15:24
temp_value取左4位




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1