單片機(jī)驅(qū)動溫感的18B20.h文件
DS18B20數(shù)字溫度傳感器封裝后可應(yīng)用于多種場合。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機(jī)房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。
利用單片機(jī)完全可以讀取DS18B20所測量到的二進(jìn)制數(shù)字溫度,測溫步驟:1、復(fù)位;2、跳過讀序列號命令(總線只有一個DS18B20);3、啟動溫度轉(zhuǎn)換;4、延時;5、讀取溫度;6、處理測量到的二進(jìn)制數(shù)據(jù);7、顯示。
為方便調(diào)用我封裝為了一個18b20.h文件下載地址:http://www.51hei.com/f/18b20h.rar可以任意調(diào)用.
下面是18B20.h程序:
sbit DQ=P3^3;
void delay_50us(uint t)
{
unsigned char j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay_8us(uint t)
{
while(--t);
}
void delay_3us()
{
;
;
}
void write_ds18b20(uchar value)
{
uchar i=0;
for(i=0;i<8;i++)
{
DQ=1;
delay_3us();
DQ=0;
delay_8us(2);
if (value & 0x01) DQ=1; //
delay_50us(1);
delay_8us(2);
value>>=1;
}
DQ=1; //
}
uchar read_ds18b20(void)
{
uchar i=0;
uchar value = 0;
for (i=0;i<8;i++)
{
value>>=1;
DQ=0;// DQ_L;
delay_3us();
DQ=1; //
delay_8us(2);
if(DQ==1) value|=0x80;
delay_8us(6);
}
DQ=1;
return value;
}
void rest_ds18b20(void)
{
rest:delay_3us();
delay_3us();
DQ=1;
delay_3us();
DQ=0;
delay_50us(11);
DQ=1;
delay_8us(5);
if(DQ==1)
return;
delay_50us(2);
if(DQ==1)
return;
else
goto rest;
}
評論