我在使用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溫度感測器的程式但是讀

先解決一個18b20,不用系列號的。再解決一個18b20,使用系列號的。最後,再解決二個18b20,使用系列號的。現在,你弄的規模這麼大,難說在那一個步驟,有問題。 舉例說明 八位二進位制為一位元組,那最大為 1111 1111 255.先將這個數除100得到百位2,然後100取餘為55,將取餘後的...

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...