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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

根據(jù)時序圖來寫關(guān)于 DS18B20的寫數(shù)據(jù)

[復(fù)制鏈接]
ID:535242 發(fā)表于 2020-2-29 14:35 | 顯示全部樓層 |閱讀模式
圖片當(dāng)中的寫法看不明白,有沒有能幫忙稍微詳細解答下,新手一枚!我看很多師傅的寫法不區(qū)分寫1還是寫0?又是為哈?
* 函 數(shù) 名         : Ds18b20WriteByte
* 函數(shù)功能                   : 向18B20寫入一個字節(jié)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void Ds18b20WriteByte(uchar dat)
{
        uint i, j;

        for(j=0; j<8; j++)
        {
                DSPORT = 0;                       //每寫入一位數(shù)據(jù)之前先把總線拉低1us
                i++;
                DSPORT = dat & 0x01;  //然后寫入一個數(shù)據(jù),從最低位開始
                i=6;
                while(i--); //延時68us,持續(xù)時間最少60us
                DSPORT = 1;        //然后釋放總線,至少1us給總線恢復(fù)時間才能接著寫入第二個數(shù)值
                dat >>= 1;
        }
}

51hei截圖20200229143237.png
51hei截圖20200229143330.png
回復(fù)

使用道具 舉報

ID:258566 發(fā)表于 2020-2-29 19:05 | 顯示全部樓層
你這張圖從哪里找的。 18b20圖不一樣.PNG
回復(fù)

使用道具 舉報

ID:130435 發(fā)表于 2020-2-29 20:42 | 顯示全部樓層
技術(shù)貼值得mark mark mark
回復(fù)

使用道具 舉報

ID:535242 發(fā)表于 2020-3-1 11:41 | 顯示全部樓層
cccc888 發(fā)表于 2020-2-29 19:05
你這張圖從哪里找的。

從郭天祥老師寫的書里面看來得 ,錯了哈,你有英文原版的資料么 發(fā)我一份 pull1121@163.com 謝謝
回復(fù)

使用道具 舉報

ID:535242 發(fā)表于 2020-3-1 11:46 | 顯示全部樓層
cccc888 發(fā)表于 2020-2-29 19:05
你這張圖從哪里找的。

我看到了 即使你的時序圖是對的 那個寫1的時候DS被拉高了 為啥我上面別人寫的程序怎么不區(qū)分哈 還是按拉低了處理的 根本不區(qū)分寫0和1?
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2020-3-1 14:50 | 顯示全部樓層
這是美信的官方PDF,你參考一下
18B20時序?qū)嶋H上是比較簡單的,基本是以延時為主的,你多看一下別人的程序,或者是中文版的PDF數(shù)據(jù)手冊就可以了 DS18B20.pdf (382.99 KB, 下載次數(shù): 13)
回復(fù)

使用道具 舉報

ID:535242 發(fā)表于 2020-3-1 16:20 | 顯示全部樓層
Y_G_G 發(fā)表于 2020-3-1 14:50
這是美信的官方PDF,你參考一下
18B20時序?qū)嶋H上是比較簡單的,基本是以延時為主的,你多看一下別人的程序,或 ...

感謝哈 還是不太明白
回復(fù)

使用道具 舉報

ID:642838 發(fā)表于 2020-3-2 20:55 | 顯示全部樓層
pull1121 發(fā)表于 2020-3-1 11:46
我看到了 即使你的時序圖是對的 那個寫1的時候DS被拉高了 為啥我上面別人寫的程序怎么不區(qū)分哈 還是按拉 ...

程序?qū)懛ㄇf種,每個人的寫法不同,意義一樣。
寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后dat & 0x01,若為0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若為1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。
這就是第一種寫法的意思。
回復(fù)

使用道具 舉報

ID:282850 發(fā)表于 2020-3-3 10:20 | 顯示全部樓層
重新畫個圖,來解釋。圖中有3處相同,所以正如你所說,大部分人不區(qū)分是寫1還是寫0。我所見過的程序各寫的程序是不區(qū)分的。
你圖中寫1采樣是15+20us,不對,原版上還是15+30us。
由于采樣都是在15us后才開始的,不論寫1、寫0,所以關(guān)鍵點1:15us以內(nèi)操作好DQ線。
由于采樣時間都是45us,關(guān)鍵點2:不能在15+45us期間變換DQ,一定要保持足夠時間讓采樣完成。
由于數(shù)據(jù)位的分隔是最小1us的高電平,關(guān)鍵點3:必須要有1us以上的分隔拉低再拉高電平。
區(qū)分寫1寫0的程序明顯要復(fù)雜一點,沒用延時函數(shù)較差勁(編譯后要多),建議采納大家都用的不區(qū)分方式。
IMG_20200303_100130.jpg
回復(fù)

使用道具 舉報

ID:535242 發(fā)表于 2020-3-3 12:06 | 顯示全部樓層
odfggf 發(fā)表于 2020-3-2 20:55
程序?qū)懛ㄇf種,每個人的寫法不同,意義一樣。
寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始 ...

嗯嗯  很感謝您的詳細解釋 之前是不太明白 為啥不區(qū)分寫0和1 。有跟帖的師傅解釋的很清楚了 謝謝!
回復(fù)

使用道具 舉報

ID:535242 發(fā)表于 2020-3-3 12:11 | 顯示全部樓層
f556 發(fā)表于 2020-3-3 10:20
重新畫個圖,來解釋。圖中有3處相同,所以正如你所說,大部分人不區(qū)分是寫1還是寫0。我所見過的程序各寫的 ...

首先非常感謝您的詳細解釋,還手畫了圖。我能理解這幾個關(guān)鍵點。就是在采樣的45微秒的時候,不是數(shù)據(jù)線拉高了么?我的理解是這樣,是不是此時的高電平是被單片機被動拉高的,所以不用去處理?
回復(fù)

使用道具 舉報

ID:407089 發(fā)表于 2020-3-3 14:14 | 顯示全部樓層
“我的理解是這樣,是不是此時的高電平是被單片機被動拉高的,所以不用去處理?”
看來你對這時序還不是太明白,DSPORT = dat & 0x01; 這句的意義是數(shù)據(jù)dat最低位如果是1,與上0x01就是1,即DSPORT=1,單片機主動拉高電平;如果最低位是0,則DSPORT=0,單片機主動拉低電平。不管是拉低還是拉高,一直保持該電平到45us,這是給18b20讀數(shù)據(jù)的時間,這期間DSPORT=1則18b20讀到1,為0則讀到0,不一定非要延時45us,我試過延時80us也正常工作
回復(fù)

使用道具 舉報

ID:282850 發(fā)表于 2020-3-3 14:15 | 顯示全部樓層
pull1121 發(fā)表于 2020-3-3 12:11
首先非常感謝您的詳細解釋,還手畫了圖。我能理解這幾個關(guān)鍵點。就是在采樣的45微秒的時候,不是數(shù)據(jù)線拉 ...

是這樣的,理解正確。
回復(fù)

使用道具 舉報

ID:419968 發(fā)表于 2020-3-3 14:44 | 顯示全部樓層
    DSPORT = dat & 0x01;  // 這里決定寫0 還是寫1
                i=6;
                while(i--); //延時68us,持續(xù)時間最少60us
                DSPORT = 1;        //這里是釋放總線
回復(fù)

使用道具 舉報

ID:709595 發(fā)表于 2020-4-16 18:33 | 顯示全部樓層
有個朋友給的資料,覺得講的不錯分享給大家。
寫時序圖.jpg
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品中文字幕在线观看 | 亚洲精品第一国产综合野 | 激情一区二区三区 | 成人在线视频一区 | 亚洲欧洲精品一区 | 久久99国产精品久久99果冻传媒 | 97超碰在线播放 | 精品欧美 | 在线天堂免费中文字幕视频 | 亚洲欧美中文字幕在线观看 | 丝袜一区二区三区 | 成人日批视频 | 久久国产欧美日韩精品 | av久久 | 国产丝袜一区二区三区免费视频 | 中文字幕在线不卡播放 | 亚洲精品久久久久avwww潮水 | 在线观看亚洲专区 | av中文字幕在线播放 | 毛片免费视频 | 国产精品久久久久久久模特 | 成人免费福利视频 | 91精品国产一区 | 在线免费观看黄a | 欧美a级成人淫片免费看 | 欧美精品一区二区免费 | 日韩成人免费av | 蜜桃视频在线观看www社区 | 秋霞a级毛片在线看 | 日韩视频精品在线 | 精品欧美乱码久久久久久1区2区 | 欧美一区二区三区在线观看视频 | 国产在线拍偷自揄拍视频 | 精品视频国产 | 成年人免费看的视频 | 中国一级特黄真人毛片 | 国产一区二区三区高清 | 国产精品久久精品 | 综合久久一区 | 性视频网 | 亚洲天堂成人在线视频 |