DS18B20控制程式(自編)

2021-06-06 14:07:35 字數 1151 閱讀 9061

這個程式是我用了幾天的課外時間編寫成功的,程式有的複雜,但只要你思路清楚,就算我沒有作註解的相信你也看得懂,可能你的想法比我的還好,我的程式不是編寫溫控程式的最好的,我只是來和有興趣的人學習的。

這個程式有幾個關鍵點,一是要看懂ds18b20的時序,程式採用現在主流的c語言編寫,組合語言很複雜,但是組合語言有它的好處,這裡就不說了,程式最小精度是0.1攝氏度!

以後是程式

/****************ds18b20數字溫度控制程式*********************************/

/***************2011.6.8***************************************/

#include

#define uint unsigned int

#define uchar unsigned char

uchar tplsb,tpmsb;

sbit dq = p3^6;

uchar code leddata[12]=;//0~9,-,no

uchar  code  point[16]=;

uchar  temp_d[4]=;

void delay(uint t)//延時t ms

}void delay1(int n)

void txreset(void)//產生復位脈衝初始化ds18b20

void rxwait(void)//等待應答訊號

uchar rdbyte(void)//讀取資料的乙個位元組

return b;

}void wrbyte(uchar b)//寫資料的乙個位元組

else}}

void convert(void)//啟動溫度轉換

uint rdtemp(void)//讀取溫度值

void zhuanhuan(uint temprature)

temp_d[2]=zs%10;

temp_d[3]=point[xs];

}else }

else //<0

temp_d[2]=zs%10;

temp_d[3]=point[xs];

}else  }

}void display(  ) //溫度顯示

void main( )

}

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 為標誌位,對...

ds18b20驅動配置

初始化時序 void ds18b20 rst void 返回1 沒有檢測到ds18b20的存在返回0 存在 u8 ds18b20 check void if retry 200 return1 else retry 0 while ds18b20 dq in retry 240 if retry 2...