在開頭說明一下:本程式只用了溫度測量這乙個功能,其他功能並未在此涉及。
鄙人不才,如有錯誤還望各位大佬指點。
趁這段時間充裕把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 為標誌位,對...