while(1)
Sum1=e*10; P2=0xff;
for(k=0;k<100;k++) { if(P2==0xf7)
{delay(10); if(P2==0xf7) h+=1; {
tempchange(); e=get_temp();
h=display(Sum1,h,j);
if(P2==0xfb)
{delay(10); if(P2==0xfb) }
h-=1;
h=display(Sum1,h,j); }
if(P2==0xfd)
{delay(10); if(P2==0xfd) j+=1;
h=display(Sum1,h,j); }
if(P2==0xfe) } } }
display(Sum1,h,j); {delay(10); if(P2==0xfe) j-=1;
h=display(Sum1,h,j);
}
DS18B20部分程序:
sbit ds=P3^5; //温度传感器信号线
unsigned int temp; float f_temp;
unsigned int warn_l1=260; unsigned int warn_l2=250; unsigned int warn_h1=300; unsigned int warn_h2=320;
void delay(unsigned int z)//延时函数 { }
void dsreset(void) //18B20复位,初始化函数 {
unsigned int x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--);
unsigned int i; ds=0; i=103; while(i>0)i--; ds=1; i=4; while(i>0)i--; }
bit tempreadbit(void) //读1位函数 {
unsigned int i; bit dat;
ds=0;i++; //i++ 起延时作用 ds=1;i++;i++; dat=ds;
i=8;while(i>0)i--; return (dat); }
unsigned char tempread(void) //读1个字节 {
unsigned char i,j,dat; dat=0;
for(i=1;i<=8;i++) {
j=tempreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 }
return(dat); }
void tempwritebyte(unsigned char dat) //向18B20写一个字节数据 {
unsigned int i; unsigned char j; bit testb; for(j=1;j<=8;j++) {
testb=dat&0x01; dat=dat>>1; if(testb) //写 1