单片机/MCU论坛
直播中

邓旭杰

10年用户 139经验值
擅长:可编程逻辑
私信 关注
[问答]

我是新学生,想问问DS18B20温度读出来,怎么转换成带小数的十进制数,显示出来

我最近在学习DS18B20 , 温度读出来后不知如何转换成带小数的十进制数显示在1602上。希望大神工程师点拨一番。谢谢。

回帖(12)

曲终人散

2016-10-5 17:07:40
我发过一个帖子,你去我那看看,有源代码,也是1602显示的
4 举报

骓枫电子科技

2016-10-5 19:10:21
datasheet上有说明呀
举报

王栋春

2016-10-5 20:00:50
引用: @曲终人散@ 发表于 2016-10-5 17:07
我发过一个帖子,你去我那看看,有源代码,也是1602显示的

坛友将链接给楼主附上呀         
1 举报

曲终人散

2016-10-5 22:46:42
引用: 王栋春 发表于 2016-10-5 20:00
坛友将链接给楼主附上呀

这就去给发链接去
举报

曲终人散

2016-10-5 22:48:36
我的51学习之DS18B20
https://bbs.elecfans.com/jishu_940818_1_1.html
(出处: 中国电子技术论坛)
你可以看看这个帖子,有源代码
举报

王栋春

2016-10-5 22:50:51
引用: @曲终人散@ 发表于 2016-10-5 22:46
这就去给发链接去

好的  多谢了              
举报

曲终人散

2016-10-5 22:51:51
引用: 王栋春 发表于 2016-10-5 22:50
好的  多谢了

相互帮助么,还有就是你回复的真迅速呀
举报

王栋春

2016-10-5 22:54:38
引用: @曲终人散@ 发表于 2016-10-5 22:51
相互帮助么,还有就是你回复的真迅速呀

正在看资料  准备睡觉了  
举报

曲终人散

2016-10-5 22:59:45
引用: 王栋春 发表于 2016-10-5 22:54
正在看资料  准备睡觉了

嗯嗯,早睡早起,明天继续战斗
举报

邓旭杰

2016-10-6 08:32:44
谢谢各位,我昨天看资料写的程序
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('.');

               
                                
        }
}
举报

houjue

2016-10-6 19:34:08
就是数据类型的问题,没啥技术含量。
举报

王栋春

2016-10-6 19:38:12
引用: @曲终人散@ 发表于 2016-10-5 22:59
嗯嗯,早睡早起,明天继续战斗

不知 那个资料到位了吗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分