基于DS18B20的温度采集显示系统的设计 - 百度文库 ÏÂÔر¾ÎÄ

¿Î³ÌÉè¼ÆÓÃÖ½

ow_reset(); //¿ª»úÏÈת»»Ò»´Î

write_byte(0xcc);//skip ROM write_byte(0x44);//·¢×ª»»ÃüÁî

for(h=0;h<500;h++)//¿ª»úÏÔʾ¡°8888¡±Á½Ãë {scan();}

display[0]=0;display[1]=0;display[2]=0;display[3]=0; flag2=0;

while(1) { if(flag==0 && flag2>1)

//ζÈÏÔʾ½çÃæ

{

LED1=0; if(display[1]+display[2]*10>=sheding) //±È½Ï {

ALERT=1; //±¨¾¯ } else { ALERT=0;

}

}

if(flag==0 && flag2>1) { read_temp(); //¶Á³öζÈÊý¾Ý work_temp(); //´¦ÀíζÈÊý¾Ý

ge= display[3];

shi= display[2];

µÚ 15 Ò³

¿Î³ÌÉè¼ÆÓÃÖ½

}

if(K1==0) {

flag2++; //flag2=0ʱΪ³õʼ½çÃæ flag2=1ʱΪÉ趨

if(flag2>1) flag2=2;

if(flag==0)

flag=1;

//flag=0 ʱ ζÈÏÔʾ flag=1 É趨ÏÔʾ

else if(flag==1) flag=0;

LED=~LED; key_delay(20); if(flag==1) {

sheding=30; ge=0; shi=3;

// display[0]= ge; // ¸öλÉ趨ºÃµÄζÈÓÃÓÚÏÔʾ

// display[2] =shi; //ʮλ

}

}

if(flag==1) {

LED1=1; if(K2==0) //++

µÚ 16 Ò³

¿Î³ÌÉè¼ÆÓÃÖ½

{ ge++; if(ge>9) { ge=0; shi++; if(shi>9) shi=0;

}

sheding=ge+shi*10; key_delay(20);

}

if(K3==0) //-- { ge--; if(ge<0) { ge=9; shi--; if(shi<0) shi=9; }

sheding=ge+shi*10;

key_delay(20);

}

display[1]= ge;

display[2] =shi; // }

// ¸öλÉ趨ºÃµÄζÈÓÃÓÚÏÔʾ

ʮλ

µÚ 17 Ò³

¿Î³ÌÉè¼ÆÓÃÖ½

for(h=0;h<500;h++) //ÏÔʾζÈÁ½Ãë { scan();

}

} }

4.2²¿·Ö×Ó³ÌÐò

4.2.1 DS18B20¸´Î»×Ó³ÌÐò

Á÷³ÌͼÈçͼ4-2Ëùʾ£º DQÖÃ1 DQÖÃ0 ÑÓʱ×îÉÙ573us DQÖÃ1 ¶ÌÑÓʱ£¬µÈ´ýDS18B20»ØÓ¦ N DQ=0? Y FLAG1ÖÃ1 FLAG1ÖÃ0 ÑÓʱ DQÖÃ1 ·µ»Ø µÚ 18 Ò³