久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3590|回復: 5
上一主題 下一主題
收起左側

ds18b20 的程序分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:223841 發(fā)表于 2017-8-21 19:29 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

u16 ds18b20_read_temp_val()
{
        u16 temp_16_bit=0;
        u8  temp_L=0;
        u8  temp_H=0;
        ds18b20_ready_read_temp();
        temp_L=ds18b20_read_one_char();//讀取溫度低八位
        temp_H=ds18b20_read_one_char();//讀取溫度高八位
        if(temp_H>0x7f)
        {
                temp_L=~temp_L;                                        //補碼轉換,取反加一
                temp_H=~temp_H+1;  
                temp_16_bit=100;
        }
        temp_16_bit=temp_16_bit+temp_H*16+temp_L/16;          ///   這以下
        temp_16_bit=temp_16_bit*100;
        temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10;     ///
        temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10;      ///這以上
        return (u16)(temp_16_bit);
}

從這以下到 這以上 ,
        temp_16_bit=temp_16_bit+temp_H*16+temp_L/16;          ///   這以下
        temp_16_bit=temp_16_bit*100;
        temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10;     ///
        temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10;      ///這以上
        return (u16)(temp_16_bit);

沒看太明白什么意思。請各位指點一下,謝謝。




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:149988 發(fā)表于 2017-8-22 08:38 | 只看該作者

RE: ds18b20 的程序分析

temp_16_bit=temp_16_bit+temp_H*16+temp_L/16;          ///   這以下
temp_16_bit=temp_16_bit*100;
temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10;     ///
temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10;      ///這以上
return (u16)(temp_16_bit);

如果上5個語句是同一個程序中連續(xù)的5個語句,那么:
因為:temp_16_bit=100、
temp_H=ds18b20_read_one_char();//讀取溫度高八位、
temp_L=ds18b20_read_one_char();//讀取溫度低八位。
所以:temp_16_bit=temp_16_bit+temp_H*16+temp_L/16; ///這以下。
可以寫為:
temp_16_bit=100+(讀取溫度高八位*16)+(讀取溫度低八位/16); 本語句的意思是:將temp_16_bit本身的值100  加上  讀取溫度高八位乘以16  再加上  讀取溫度低八位除以16  后存于  temp_16_bit中。
temp_16_bit=temp_16_bit*100; 本語句的意思是:將上式temp_16_bit取得的新值再乘上100,并存于temp_16_bit中。
temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10; ///  該語句中 temp_L&0x0f意思是:讀取溫度低八位數(shù)同0x0f相與,其意義是保留  讀取溫度低八位數(shù)中低四位。屏蔽掉高四位。將相與后的新數(shù)先乘以10再除以16,最后加上temp_16_bit中的值,再存入temp_16_bit中去。
temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10; ///這以上。該語句同上一句意識相同,只是多了個%10,%10的意思是:取余數(shù)的意思,就是將(temp_L&0x0f)*100/16結果除10,取其余數(shù)。最后加上temp_16_bit中值再存入temp_16_bit中去。





回復

使用道具 舉報

板凳
ID:223841 發(fā)表于 2017-8-22 13:57 | 只看該作者
不倒翁.WZT 發(fā)表于 2017-8-22 08:38
temp_16_bit=temp_16_bit+temp_H*16+temp_L/16;          ///   這以下
temp_16_bit=temp_16_bit*100;
te ...

首先,謝謝您的詳細解釋。   您說的這些 我看懂了,可能是我表達不準確。 這幾條語句的 DS18B20的這個算法到底是什么意思?什么意義?
回復

使用道具 舉報

地板
ID:111634 發(fā)表于 2017-8-22 15:58 | 只看該作者
本帖最后由 zl2168 于 2017-8-22 16:14 編輯

給你推薦一實例程序,其中測溫數(shù)據(jù)轉換有詳細解釋。


實例97 一線式DS18B20測溫
實例97 DS18B20測溫.rar (51.78 KB, 下載次數(shù): 6)

Proteus仿真一下,確認有效。
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。仿真電路和Hex文件能在清華出版社網(wǎng)站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。


回復

使用道具 舉報

5#
ID:223841 發(fā)表于 2019-3-1 17:16 | 只看該作者
zl2168 發(fā)表于 2017-8-22 15:58
給你推薦一實例程序,其中測溫數(shù)據(jù)轉換有詳細解釋。

就一個hex文件,沒什么實質(zhì)用處
回復

使用道具 舉報

6#
ID:471066 發(fā)表于 2019-3-1 20:52 | 只看該作者
ds18b20很基礎的東東,壇子里有教程,多看看就明白了!
回復

使用道具 舉報

7#
ID:472242 發(fā)表于 2019-3-2 11:41
這個張志良怎么這么無自知之明呢,51黑的案例比他多了去,還來這里班門弄斧!

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女啪啪网址 | 一区二区三区四区在线视频 | www一级片 | 四虎影院在线观看免费视频 | 欧美亚洲综合久久 | 久久久久免费精品国产小说色大师 | 一区二区视频在线 | 99在线资源 | 久久精品中文 | av日韩高清 | 国产免费一区二区 | 成人激情视频在线播放 | 日韩成人免费av | 精品国产乱码久久久久久影片 | 久久伊人精品 | 欧美精品黄 | 欧美日韩在线电影 | 国产最新网址 | 日一区二区| 日韩一区二区福利 | 亚洲高清视频一区二区 | 亚洲精品国产偷自在线观看 | 久久一及片 | 亚洲精品成人av久久 | 久久久久免费 | 免费v片| 一区二区视频 | 欧美国产日韩成人 | 欧美一区二区三区,视频 | 欧产日产国产精品视频 | www.久久影视| 91大神新作在线观看 | 天天天堂 | 日韩不卡一区二区三区 | 国产精品日韩欧美一区二区三区 | 亚洲性网 | 91精品国产一区二区 | 一区二区在线免费观看 | 四虎影院新网址 | 国产一区高清 | 丝袜美腿一区二区三区动态图 |