我是新学生,想问问DS18B20温度读出来,怎么转换成带小数的十进制数,显示出来
我发过一个帖子,你去我那看看,有源代码,也是1602显示的
datasheet上有说明呀
坛友将链接给小编附上呀
这就去给发链接去
我的51学习之DS18B20
http://bbs.elecfans.com/jishu_940818_1_1.html
(出处: 中国电子技术论坛)
你可以看看这个帖子,有源代码
好的 多谢了
相互帮助么,还有就是你回复的真迅速呀
正在看资料 准备睡觉了
嗯嗯,早睡早起,明天继续战斗
谢谢各位,我昨天看资料写的程序
uint16_get_temp()
{
uint8 a,b;
uint16 d;
float c;
temp_change();
INIT_DS18B20();
delay(1);
DS18B20_write(0xcc);
DS18B20_write(0xbe);
a=DS18B20_read();
b=DS18B20_read();
d=b;
d<<=8;
d=d|a;
c=d*0.0625;
temp1=c*10+0.5;
return temp1;
}
奇怪的是,读出来的显示在1602的数,大了好多。不知是何故?
void main()
{
LCD_init();
while(1)
{
temp2=uint16_get_temp();
delay_us(20);
shi=temp2/10;
ge=temp2%10;
LCD_write_com(0x80);
LCD_write_date(0x30+shi);
LCD_write_date(0x30+ge);
LCD_write_date('.');
}
}
就是数据类型的问题,没啥技术含量。
不知 那个资料到位了吗
