找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2750|回復(fù): 3
收起左側(cè)

單片機(jī)溫度轉(zhuǎn)換的算法有一行代碼始終想不明白

[復(fù)制鏈接]
ID:189772 發(fā)表于 2018-3-28 21:52 | 顯示全部樓層 |閱讀模式
看到一位大俠的貼子,地址如下:
摘要部分如下,
unsigned chardis[]={0x00,0x00,0x00,0x00,0x00,0x00};//顯示數(shù)據(jù)
unsigned char TemL;
unsigned char TemLH;
unsigned char TemLL;
unsigned char TemH;
unsigned long Tem;
bit TempS;

TemL=r_18b20();    //低字節(jié)
TemH=r_18b20();   //高字節(jié)

TemLH=TemL>>4; 低字節(jié)的4位整數(shù)
TemLL=TemL&0x0F; 低字節(jié)的4位小數(shù)
Tem=(TemH*16 + TemLH + TemLL*0.0625)*10000;

TemH*16相當(dāng)于TemH右移4位,高字節(jié)的4位有效的整數(shù)位,

Tem=(TemH*16 + TemLH + TemLL*0.0625)*10000;這一句始終想不明白,為什么只有小數(shù)部分乘以0。0625?




回復(fù)

使用道具 舉報(bào)

ID:189772 發(fā)表于 2018-3-29 07:39 | 顯示全部樓層
求大神解答呀,高分懸賞
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-3-29 08:24 | 顯示全部樓層
“不要迷信哥,哥只是個(gè)傳說”
你發(fā)現(xiàn)得對(duì)啥,我認(rèn)為那個(gè)就是錯(cuò)的。
雖然那個(gè)實(shí)驗(yàn)顯示了東西,但不一定是正確的濕度嘛。
這里有個(gè)正確的,你看看。

                temp=tp*0.0625*100+0.5;       
                //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)
                //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
                //算加上0.5,還是在小數(shù)點(diǎn)后面。

想得通了哈。
回復(fù)

使用道具 舉報(bào)

ID:189772 發(fā)表于 2018-3-29 19:59 | 顯示全部樓層
2的負(fù)4次方正好是0.0625,所以,小數(shù)部分部分乘以0。0625是正確的,只是程序處理方面,我還沒有完全弄明白,不管如何,謝謝你
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表