电热水器水温水位控制系统设计
第27页
}
if(key1_state==2) {if(keyon==0) {keyoff=0; if(key2==1) {yp=yp+20;
if(yp==100){yp=20;} key2=0; } }
disbuffer[7]=12;disbuffer[6]=yp/10;disbuffer[5]=0;disbuffer[4]=12;disbuffer[3]=11;disbuffer[2]=11;disbuffer[1]=11;disbuffer[0]=11;display1();
}
if(key1_state==0) {ET0=1; TR0=1;
if(o==1) { ET0=0; TR0=0; tm_read(); o=0; }
{//level_read();
disbuffer[7]=pl/1000; disbuffer[6]=pl/100; disbuffer[5]=pl/10; disbuffer[4]=pl; /*
disbuffer[7]=12;disbuffer[6]=p/10;disbuffer[5]=p;disbuffer[4]=12;*/
display1(); }
电热水器水温水位控制系统设计
第28页
if(temp111 if(temp111>ytm+3&&temp111 /*********************温度数据读取比较控制程序*****************/ /**************DS18B20****************/ bit tmreset (void) unsigned int i; P0_0 = 0; i = 103; while (i>0) i--; P0_0 = 1; i = 4; while (i>0) i--; presence= P0_0; delay(20); return (presence); } bit tmpread (void) { unsigned int i; bit dat; P0_0 = 0; P0_0 = 1; i++; i++; //延时 dat = P0_0; i = 8; while (i>0) i--; return (dat); } unsigned char tmpread2 (void) // 发送复位和初始化 { static bit presence; // 延时 // 读取数据的一位 // 延时 //读一个字节 电热水器水温水位控制系统设计 第29页 { unsigned char i,j,dat; dat = 0; for (i=1;i<=8;i++) { j = tmpread (); dat = (j << 7) | (dat >> 1); } return (dat); } void tmpwrite (unsigned char dat) { unsigned int i; unsigned char j; bit testb; for (j=1;j<=8;j++) { testb = dat & 0x01; dat = dat >> 1; if (testb) { P0_0 = 0; i++; i++; P0_0 = 1; i = 8; while (i>0) i--; } else { P0_0 = 0; i = 8; while (i>0) i--; P0_0 = 1; i++; i++; } } // 写0 // 写0 //写一个字节 电热水器水温水位控制系统设计 第30页 } void tmpchange(void) { tmreset (); delay (200); // 复位 // 延时 // 跳过序列号命令 // 发转换命令 44H, // ds1820 开始转换 tmpwrite (0xcc); tmpwrite (0x44); } //********************************************* //********************************************* void tmp (void) { tmreset (); delay (200); // 复位 // 延时 // 跳过序列号命令 // 发送读取命令 // 读取低位温度 // 读取温度 tmpwrite (0xcc); tmpwrite (0xbe); a = tmpread2 (); P0_0 = 0; b = tmpread2 (); P0_0 = 0; } tm_read() { tmpchange(); delay(200); tmp(); P0_0=0;//读取温度 //读取高位温度 // 开始温度转换 // 读取延时 temp111=(b<<4)|(a>>4); if(tmreset ()==0) { disbuffer[3]=11; disbuffer[2]=(temp111/10); //-------------------------------------------------- 电热水器水温水位控制系统设计 第31页 disbuffer[1]=temp111; disbuffer[0]=10; } else if (tmreset ()==1) {disbuffer[3]=11; disbuffer[2]=12; disbuffer[1]=12; disbuffer[0]=10; } } /*********************液位数据读取比较控制程序*****************/ uchar tlc549_read() { uchar i,adcdata; adcdata=0; for(i=0;i<8;i++) {delay(100); adcdata=adcdata<<1; if(adc) adcdata++; ccl=1; delay(100); ccl=0; } return adcdata; } level_read() {temp=tlc549_read(); if(temp<0xFB&&temp>0xB8){p=50;} if(temp<0xB8&&temp>0x86){p=85;} /* disbuffer[3]=pl/1000; disbuffer[2]=pl/100; disbuffer[1]=pl/10; disbuffer[0]=pl; display(); //*测频率*/

