<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 簡(jiǎn)單的DS18B20溫度測試

簡(jiǎn)單的DS18B20溫度測試

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
DS18B20是目前比較常用的一種溫度測試芯片。其具有微型化、低功耗、高性能、抗干擾強等優(yōu)點(diǎn)。同時(shí)可以直接將溫度轉化為數字信號提供給處理器。詳細的資料請參見(jiàn)芯片的資料說(shuō)明。

本實(shí)驗是一個(gè)簡(jiǎn)單的溫度檢測實(shí)驗。單片機將檢測到的溫度用數碼管顯示。程序如下:

本文引用地址:http://dyxdggzs.com/article/201611/321146.htm

=================================================================================================

#include
#define uchar unsigned char
#define uint unsigned int
int a,b,c,temp;
sbit DS=P3^3;//18B20端口設置
uchar code table[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F //"9"
};

void dsdelay(int num)// 延時(shí)10約為53us 時(shí)鐘為11.0592M
{
while(num--);
}

void delay(uint z) //延時(shí)函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

int init() //18B20初始化
{
uchar x=0;
DS=1;
dsdelay(8);//延時(shí)44us
DS=0;
dsdelay(110); //延時(shí)約500us
DS=1;
dsdelay(14); //稍微延時(shí),讀取x
x=DS;
dsdelay(20);
}

uchar readchar() //從18B20中讀取1個(gè)字節
{
uchar i=0;
uchar dat;
for(i=8;i>0;i--)
{
DS=0;
dat>>=1;
DS=1;
if(DS)
dat|=0x80;
dsdelay(4);
}
return(dat);
}

void writechar(uchar dat) //向18B20中寫(xiě)數據
{
uchar i=0;
for(i=8;i>0;i--)
{
DS=0;
DS=dat&0x1;
dsdelay(5);
DS=1;
dat>>=1;
}
}

uint readtemp() //讀取溫度值
{
uchar a;
uchar b;
uint t;
float tt;
a=0;
b=0;
t=0;
tt=0;
init();

writechar(0xcc); //跳過(guò)讀序號列號的操作
writechar(0x44); // 啟動(dòng)溫度轉換
init();
writechar(0xcc); //跳過(guò)讀序號列號的操作
writechar(0xbe); //讀取溫度寄存器
a=readchar(); //讀高8位
b=readchar(); //讀高8位
t=b;
t<<=8;
t=t|a;//兩字節合成一個(gè)整型變量。
tt=t*0.0625; //得到真實(shí)十進(jìn)制溫度值,因為DS18B20可以精確到0.0625度,所以讀回數據的最低位代表的是0.0625度
t= tt*10+0.5; //放大十倍,這樣做的目的將小數點(diǎn)后第一位也轉換為可顯示數字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
return(t);
}

void display() //數碼管顯示溫度值
{
P1=0xf0; //位選
P2=table[a];//段選
delay(3);
P1=0xf1;
P2=table[b];
delay(3);
P1=0xf2;
P2=0x08;
delay(3);
P1=0xf3;
P2=table[c];
}
void main()//主函數
{
int m;
m=0;
while(1)
{
if(m==0) //消除85現象
{
delay(500);
temp=readtemp();
delay(500);
delay(200);
m=1;
}
else
{
temp=readtemp();
a=temp/100;
b=temp0/10;
c=temp;
display();
}
}

}



關(guān)鍵詞: DS18B20溫度測

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>