鍩轰簬DS18B20鐨勬俯搴﹂噰闆嗘樉绀虹郴缁熺殑璁捐 - 鐧惧害鏂囧簱 联系客服

发布时间 : 星期三 文章鍩轰簬DS18B20鐨勬俯搴﹂噰闆嗘樉绀虹郴缁熺殑璁捐 - 鐧惧害鏂囧簱更新完毕开始阅读5fa4d673ff00bed5b9f31ded

课程设计用纸

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 页