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