DS18B20測溫基於stc89c52微控制器

2021-10-03 08:11:11 字數 2612 閱讀 8982

在開頭說明一下:本程式只用了溫度測量這乙個功能,其他功能並未在此涉及。

鄙人不才,如有錯誤還望各位大佬指點。

趁這段時間充裕把ds18b20溫度感測器的一些東西寫一寫(主要是程式)。

dallas半導體公司的數位化溫度感測器ds18b20是世界上第一片支援「一線匯流排」介面的溫度感測器,即只有一根資料線。它的適用電壓為3v-5v,可程式設定9-12位的解析度,精度為±0.5℃,測溫範圍-55℃~+125℃。

ds18b20的使用難點主要在延時時間上,只要把延時搞懂了那麼除測溫以外的功能也就不難了。相信你們手裡都有晶元手冊,手冊上的時序畫的明明白白,我也就不多說廢話了,直接上程式

/**************************************

平台stc89c52 晶振11.0592mhz

6位共陰數碼管 74hc573鎖存器

**************************************/

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table=

;uchar tem[2]

;///用來存放兩位元組的溫度

uchar wendu[5]

;///用來存放(正負)十進位制的溫度

uchar fuhao;

bit flag;

sbit dq=p2^2;

///感測器的訊號線

sbit dula=p2^6;

///數碼管段選端

sbit wela=p2^7;

///數碼管位選端

void

delayus

(uchar t)

void

delayms

(uint z)

void

delaynop()

/***************************************

ds18b20復位函式

***************************************/

void

res(

)/*************************************

寫乙個位元組函式

*************************************/

void

ds18b20_write_byte

(uchar dat)

else}}

/************************************

讀乙個位元組函式

************************************/

bit ds18b20_read_bit()

uchar ds18b20_read_byte()

return dat;

}/*************************************

開始溫度轉換函式

*************************************/

void

ds18b20_starttempreture()

/************************************

計算讀取溫度函式

************************************/

void

ds18b20_transtemperature()

else}if

(fuhao==

0xf0

)else

///符號位

temp=

(tem[1]

<<4)

|(tem[0]

>>4)

; wendu[1]

=temp%

100/10;

///十位

wendu[2]

=temp%10;

///個位

temp=tem[0]

&0x0f

; temp_i=temp*

0.0625

*10000

; wendu[3]

=temp_i/

1000

;///十分位

wendu[4]

=temp_i%

1000

/100

;///百分位

}/**************************************

數碼管顯示函式

**************************************/

void

display

(uchar fu,uchar shi,uchar ge,uchar shifen,uchar baifen)

/***************************************

主函式***************************************/

void

main()

else

}}

基於DS18B20的多點測溫方案詳解

ds18b20 單線數字溫度感測器,多個 ds18b20 可以併聯在惟一的單線上,實現多點測溫。具體方案主要是以下步驟 寫乙個獲取ds18b20的64位序列號的keil工程,獲取需要連線的ds18b20器件的序列號。uint8 t rom 8 void read rom void 將獲取到的ds18...

DS18B20溫度測量

1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...

DS18B20溫度換算

dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...