我在使用ds18b20檢測溫度,溫度20時,是正常的,溫度20時,返回值是0xff,0xff,請教高手為什麼

時間 2021-07-17 06:09:10

1樓:匿名使用者

應該是你的程式上出來還存在小問題。

2樓:匿名使用者

近期通過ds18b20再加lcd1602加序列輸出除錯成功,的lcddata埠p0

#包括#包括#“ stc12c5a.h“

#定義xtal 11059200 / /杯晶振頻率

#定義波特率9600 / /通訊波特率

#定義uchar無符號字元型

#定義的uint無符號整數 br p> sbit dq = p2 ^ 3; / / ds18b20的資料腳

sbit e = p2 ^ 7 / / 1602,使

sbit rw = p2 ^ 6 / / 1602讀取和寫入

sbit rs = p2 ^ 5 / / 1602資料/命令選擇

uchar資料temp_data的[2] = / / 8 - 位的資料快取記憶體》 uchar**編號 = ; / / lcd1602數字ascii表,用來顯示數字

uint ds [4]; / /溫度顯示4個顯著的數字

uint dh;

uint升

uint pic16f684; / /十六進位制轉十進位制資料快取

無效延遲(無符號整型數)

的無效inituart(無效)/ /串列埠初始化

無效sendonebyte(無符號字元)/ /串列埠傳送1位元組

無效的delay()/ / lcd1602延遲

無效wcmd(uchar德爾)/ /寫命令程式

>無效寫(uchar德爾)/ /寫入資料

無效l1602_init(無效)/ / lcd1602初始化

:無效l1602_char(uchar掛起,的uchar李,燒焦的跡象)/ /寫一個字元

uchar;

(掛起== 2)一個= 0xc0;

= a +謊言 - 1

wcmd(一)寫(標誌);}

無效l1602_string(uchar uchar李掛起,,uchar * p),/ /寫字串

uchar a,b = 0;

(掛起== 1)= 0x80的;

(掛起== 2)= 0xc0;

= a +謊言 - 1; 而(1) }

uchar init_ds18b20(無效)

:uchar readonechar(無效)

dq = 1;

回報率(值); br />}

,無效writeonechar(無符號字元型dat)

} 無效read_temperature的(無效)

無效的主要() }

居然把ascii碼只要38就夠了,當我沒想到

3樓:

如果ds18b20壞了會一直顯示85的,

我編寫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...

ds18b20裡的溫度值正負判斷為什麼要判斷大於

科強小米 tem data l read byte 讀低8位資料,低8位資料格式 2 3,2 2,2 1,2 0,2 tem data h read byte 讀高8位資料,高8位資料格式 s,s,s,s,s,2 6,2 5 temp data tem data h 256 tem data l s...

ds18b20與其他溫度感測器有什麼優缺點

優點 1 與微控制器的介面簡單 2 單隻使用比較簡單 3 有體積小,硬體開銷低,抗干擾能力強 缺點 1 多隻單匯流排使用涉及到rom搜尋的程式,比較難懂點2 精度0.5度。ds18b20數字溫度感測器接線方便,封裝成後可應用於多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼封裝式,型號多種多樣,有lt...