ds18b20+lcd1602+89c52设计温度控制器,显示温度能到小数位,控制温度不能到小数,怎么改才能到小数
oid data_pros() //数据处理函数
{
uint8 i;
uint8 temp_buf[2],humi_buf[2];
uint8 temphbuf[2],templbuf[2],humihbuf[2],humilbuf[2];
float dio; //测量温度值
uint16 k; //取小数点后两位有效数字
tempvalue=readtemp(); //读取温度
DHT11_Read_Data(&temp,&humi);
temp_buf[0]=temp/10+0x30; //LCD显示温度做准备
temp_buf[1]=temp%10+0x30;
humi_buf[0]=humi/10+0x30; //LCD显示湿度做准备
humi_buf[1]=humi%10+0x30;
dio=a*0.0625;
k=dio*10000;//取小数点后两位有效数字
temphbuf[0]=temph/10+0x30; //LCD显示上下限温度做准备
temphbuf[1]=temph%10+0x30;
templbuf[0]=templ/10+0x30;
templbuf[1]=templ%10+0x30;
humihbuf[0]=humih/10+0x30; //LCD显示上下限湿度做准备
humihbuf[1]=humih%10+0x30;
humilbuf[0]=humil/10+0x30;
humilbuf[1]=humil%10+0x30;
if(mode==0) //测量温度,湿度显示
{
lcd_init_display(); //LCD显示函数
wrc(0x85); //LCD显示温度位置
wrd(num[tempvalue%100/10]); //测量温度十位显示
wrd(num[tempvalue%100%10]); //测量温度个位显示
wrd('.');
wrd(num[k/1000]); //取小数点后两位有效数字
wrd(0xdf);
wrd('C'); //测量温度符号
for(i=0;i<2;i++)
{
wrc(0Xc5+i); //LCD显示湿度位置
wrd(humi_buf[i]); //测量湿度十个位显示
}
for(i=0;i<3;i++)
{
wrc(0Xc7+i); //LCD显示符号位置
wrd(str5[i]); //测量湿度符号 %RH
}
}
if(mode==1) //温度上限显示
{
wrc(0x80);
for(i=0;i<6;i++)
{
wrd(str6[i]);
}
wrd(temphbuf[0]);
wrd(temphbuf[1]);
}
if(mode==2) //温度下限显示
{
wrc(0x80);
for(i=0;i<6;i++)
{
wrd(str7[i]);
}
wrd(templbuf[0]);
wrd(templbuf[1]);
}
if(mode==3) //湿度上限显示
{
wrc(0x80);
for(i=0;i<6;i++)
{
wrd(str8[i]);
}
wrd(humihbuf[0]);
wrd(humihbuf[1]);
}
if(mode==4) //湿度下限显示
{
wrc(0x80);
for(i=0;i<6;i++)
{
wrd(str9[i]);
}
wrd(humilbuf[0]);
wrd(humilbuf[1]);
}
}
|