1樓:匿名使用者
主機將匯流排拉低最短480us,之後釋放匯流排。由於5kω上拉電阻的作用,匯流排恢復到高電平。ds18b20檢測到上公升沿後等待15到60us,發出存在脈衝:
拉低匯流排60-240us。至此,初始化和存在時序完畢。所有的寫時隙必須至少有60us的持續時間。
相鄰兩個寫時隙必須要有最少1us的恢復時間。所有的寫時隙(寫0和寫1)都由拉低匯流排產生。為產生寫1時隙,在拉低匯流排後主機必須在15us內釋放匯流排(拉低的電平慧中要持續至少1us)。
由於上拉電阻的作用,匯流排電平恢復為高電平,直到完成寫時隙。
為產生寫0時隙,在拉低匯流排後主機持續拉低匯流排即可,直到寫時隙完成後釋放匯流排(持續時間60-120us)。
寫時隙產生後,ds18b20會在產生後的15到60us的時間內取樣匯流排,以此來確定寫0還是寫只有在主機發出讀時隙時才能傳送資料到主機。因此,主機必須在be 命令,b4命令後立即產生讀時隙以使ds18b20提供相應的資料。另外,在44命令,b8命令後也要產生讀時隙。
所有的讀時隙必須至少有60us的持續時間。相鄰兩個讀時隙必須要有最少1us的恢復時間。所有的讀時隙都由拉低匯流排,持續至少1us後再釋放匯流排(由於上拉電阻的作用,匯流排恢復為高電平)產生。
ds18b20輸出的資料在下降沿產生前衝山後15us後有效。因此,釋放匯流排和主機取樣匯流排等動作要在15us內判態完成。
2樓:冒卉巨集良工
18b20的復位狀態為85,但你一直顯示85,後來又顯示埋宴79,說明你的時序完全不對,該輪液帶協議定義了幾種訊號的時序:初始化時序臘蘆、讀時序、寫時序。所有時序都是將,ctwztv
3樓:網友
我空間裡有一篇18b20的使用心得,希望對你有用,望~~
為什麼18b20溫度測量時,總是跳變!
4樓:攝影師天意
你看看這個溫度的計算 正常18b20是12位溫度 這個程式溫度計算的很粗略 估計是你說的這種情況 你溫度用查表顯示就能好很多。
code uchar table_tempfh=這個是溫度小數位的查表,精確到。
a=readonechar();讀取溫度值低位。
b=readonechar();讀取溫度值高位。
temp_value=b<<4;
temp_value+=(a&0xf0)>>4;
小數部分(查表對照,獲取小數位)
5樓:做而論道
1. 程式中,沒有考慮到18b20的轉換時間;
2. 讀出的溫度資料,是兩個位元組,合併成溫度數值,應有16位數的變數,但是:
unsigned char i=0; /這是8位的變數,丟失資訊了。
while(1)
i=readtemperature();讀溫度 顯然不會正確。
我用18b20測溫,當溫度達65度就讀出錯誤溫度值,換乙個18b20也還是如此.誰知道什麼原因嗎?
6樓:網友
上公升到65度的時候就出錯?
前面的資料都正常?
你把你的程式給我瞄瞄。
18b20讀取(很急)
7樓:網友
讀一位元組的修改部分,你試下能纖核如不能用。
unsigned char readonechar()unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
dq = 0; /給脈衝訊號。
nop_()毀啟///延時5us (可以不延氏團時)dat>>=1;
dq=1;//將電平拉高。
if(dq)
dat|=0x80;
delay50us();在45us到60us進行取樣 ,總時間大於60us
nop_()
return(dat);
微控制器18b20感測器測溫問題
8樓:種花小當家
ds18b20的操作延時量是除錯的重點,所以你這樣提問沒人能回答,因為不知道你用什麼頻率的晶振,如果你的程式是at系列微控制器的程式,你可以把延時量加大4-5倍試試。
9樓:網友
ff是因為微控制器沒有讀到感測器的資料,檢測一下硬體,然後看看有沒有初始化什麼的,我當時在lcd1602上顯示時也出現過這種問題。
ds18b20溫度轉換問題
1 接收資料為雙位元組 先低位,後高位 先低位元組,後高位元組 2 高位元組的前5位若為 0 則將資料乘以0.0625 即 t d 0.0625 3 高位元組的前5位若為 1 則將資料先取反,再加一,再乘以0.0625 即 t d 1 0.0625 溫度是 55 125 對應的值是 55 ff92 ...
溫度計的設計,(使用DS18B20)
at89c51微控制器 那可以的要求的撒 微控制器數字式溫度計設計,用ds18b20和12864液晶屏 1 我做過的是ds18b20 pic微控制器 數碼管顯示。2 也做過微控制器 熱電偶 12864顯示溫度3 最近要做的是,微控制器 ds18b20 數碼管顯示 時間顯示。有按鍵,設定溫度上限和下限...
我編寫ds18b20程式想顯示溫度在led燈上但
include reg52.h include include 要用到取絕對值函式abs define uchar unsigned char define uint unsigned int sbit ds p2 1 sbit ds p3 2 ds18b20 sbit duan p2 6 sbit...