#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit ds=P3^7; //温度传感器信号线
sbit beep=P3^0; //蜂鸣器
sbit led=P3^1;
uint temp;
uchar s1num,s2num,s3num,s4num,s5num;
float f_temp;
sbit s1=P1^0; //定义按键--调节上限 下限
sbit s2=P1^1; //定义按键--步进加0.5
sbit s3=P1^2; //定义按键--步进减0.5
sbit s4=P1^3; //定义按键--显示上限/返回
sbit s5=P1^4; //定义按键--显示下限/返回
int warn_l0=100; //温度下限初值 当前温度*10
int warn_h0=400; //温度上限初值 当前温度*10
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,// 带小数点的编码
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //不带小数点的编码
void delay(uint z) ///////延时函数////////////////
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void dsreset(void) ////18B20复位,初始化函数//////
{
uint i;
ds=0; i=103; while(i>0)i--;
ds=1; i=4; while(i>0)i--;
}
bit tempreadbit(void) ////读1位函数///////////
{
uint i;
bit dat;
ds=0;i++; //延时
ds=1;i++;i++;
dat=ds;
i=8;while(i>0)i--;
return (dat);
}
uchar tempread(void) //////读1个字节////////
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
}
void tempwritebyte(uchar dat) ////向18B20写一个字节数据 //////
{
uint i;