找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DS18B20怎样配置寄存器?写测温精度的R1 R0位

查看数: 14250 | 评论数: 31 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-10-29 16:49

正文摘要:

DS18B20默认是12位精度的,就是*0.0625,时间太长的,我想改与0.5精度的,就是9位数。开发板原程序是没有问题的,我摸了几天我怎改也不行。 下面是百度找的。bbs.elecfans点com/jishu_1532799_1_1.html 第二:高速 ...

回复

ID:654797 发表于 2021-12-14 22:05
jiangkeqin_sy 发表于 2018-10-31 09:07
发送了一个字节0001 1111,ds18b20就算接收了一个字,它也只对R1 R0进行操作

我读取到的这个参数是01111100,不是01111111,手册上说是01111111
ID:382454 发表于 2020-11-9 17:20
ssman 发表于 2020-11-9 16:43
我是这样的。把精度配置9位的,即0x1f写入暂存器,再发考命令0x48,1820就把那3字节保存到非易失存储器上。 ...

这样也可以。我是开机初始化的时候就写。
ID:520027 发表于 2020-11-9 16:58
设置成9位精度的,把0x1f写人暂存器,再发个copy0x48命令,1820把3字节放到非易失存储器。9位精度是*0.5+0.5的。把它们放到main()中while循环之前初始化。9位精度也是3字节,数据类型是一样的。这样即可显示正常。
ID:520027 发表于 2020-11-9 16:43
我是这样的。把精度配置9位的,即0x1f写入暂存器,再发考命令0x48,1820就把那3字节保存到非易失存储器上。9位精度的是*0.5+0.5 即可显示正常。把它们放到main中while循环之前初始化
ID:382454 发表于 2020-11-6 12:06
24#说的很清楚了。你可以先试试。
ID:20672 发表于 2020-1-9 21:30
楼主能否把9位分辨率的程序分享一下啊~谢谢
ID:601671 发表于 2019-8-19 18:16
我的就是设置 9bit分辨率设置不成功,现在读温度就是太慢了,750ms 才能转化一次,想改成95ms  转化一次  但按上面的设置了 也是不 成功??  不知道什么原因???求大神指导
ID:601671 发表于 2019-8-19 18:15
我的就是设置 9bit分辨率设置不成功,现在读温度就是太慢了,750ms 才能转化一次,想改成95ms  转化一次  但按上面的设置了 也是不 成功??  不知道什么原因???求大神指导
ID:565874 发表于 2019-6-18 16:31
univers 发表于 2019-4-6 16:34
如果碰到DS18B20问题的兄弟,都可以发表出来啊,大家一起学习。

配置精度不成功,我把暂存寄存器的值读出来,高温限和低温限和我配置的一样,就分辨率那里写不进去,一直是0x7f,只是哪里出问题了
ID:488996 发表于 2019-4-19 09:54
univers 发表于 2018-10-31 10:49
我百度找了好久也是没用。这里有一个说的挺全的。
https://wenku.baidu.com/view/d20114c2aa00b52acfc7c ...

你应该还是乘以 0.0625 因为即使你设置的精度是0.5,你读出来的值 二进制 仍然有4位 表示的是小数,乘以0.0625 是因为数据整体往左移了4位
ID:382454 发表于 2019-4-6 16:34
如果碰到DS18B20问题的兄弟,都可以发表出来啊,大家一起学习。
ID:382454 发表于 2019-4-5 23:19
changyuan1724 发表于 2018-12-29 01:12
兄dei,你这个问题解决了没有?我也遇到了 ,但是我解决了,你的问题出在转换系数上。无论你使用哪个位数的 ...

是这样嘛,今天才看到,非常感谢兄弟,我有时间试试!可能是我理解错误吧!
ID:504495 发表于 2019-4-3 22:35
我还特意注册了论坛账号
ID:504495 发表于 2019-4-3 22:34
非常感谢楼主,用了楼主的方法解决了精度的问题,感谢感谢!!
ID:229821 发表于 2019-4-1 12:33
谢谢。我解决了。
ID:449525 发表于 2018-12-29 08:29
看到了普中的板子
我是用pwm控制背光的,定时器会打断温度传感器,论坛上也有这个问题
关闭中断的话,读温度传感器时间过长,造成屏幕闪烁
其实你读取温度传感器要那么快么?2秒读一次就ok了,还有就是你可以判断温度改变了,在更新
ID:457743 发表于 2018-12-29 01:13
解决了吗?我解决了
ID:457743 发表于 2018-12-29 01:12
兄dei,你这个问题解决了没有?我也遇到了 ,但是我解决了,你的问题出在转换系数上。无论你使用哪个位数的精度,你需要乘的系数永远都是0.0625。9位的分度是0.5摄氏度,不是说转换系数就是0.5摄氏度。
ID:382454 发表于 2018-11-27 10:03
初始化经过测试,这样才行的,DS18B20有严格的时序时间。
下面的延时是精确的才行。
/*******************************************************************************
* 函 数 名         : ds18b20Init
* 函数功能           : 初始化
* 输    入         : 无
* 输    出         : 初始化成功返回1,失败返回0
*******************************************************************************/

uchar ds18b20Init()
{
    uchar i=0;
    DSPORT = 0;             //将总线拉低480us~960us
    delay520us();
    DSPORT = 1;            //然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低   
    delay22us();        //这里非常重要,测试只有10-35us才有效,超过就返回不了啦,(现在取中间值22us)while延时的话要i最低=4开始才有效while(i--)
    while(DSPORT)        //等待DS18B20拉低总线 也就是检测DQ引脚状态
    {
        delayms(1);
        i++;
        if(i>5)//等待>5MS
        {
            return 0;//初始化失败
        }
   
    }
    delay520us();    //等待520us让ds18b20释放总线
    return 1;        //初始化成功
}
ID:382454 发表于 2018-11-3 18:28
昨天测试了一下,初始化时序有点问题,返回不了1.之后我单单测试了初始时序,按时序图的时间,修改了时序。可以返回1了。也就是认到了DS18B20
之后把初始化放上去,还是200多度,看来还有别的地方也要改才行,应该是在写bate指令那里。
ID:382454 发表于 2018-11-1 16:55
原程序。

DS18B20温度传感器.rar

1003.83 KB, 下载次数: 83

ID:382454 发表于 2018-10-31 23:08
小猫猫爱吃鱼 发表于 2018-10-31 18:26
你好!应该是你时序控制的不对,命令应该是正确的,
多测试吧,好事多磨,总会成功的。。。
也可以加我好 ...

有时间再研究研究,那不是要重头写过才行。非常感谢谢你!明天把原程上传大家看看。
ID:303383 发表于 2018-10-31 18:26
提示: 作者被禁止或删除 内容自动屏蔽
ID:418526 发表于 2018-10-31 15:02
univers 发表于 2018-10-29 16:57
不知道是不是我理解错误,这几个代码要怎样加上去才行啊?
还有一个问题,配置4寄存器只有R1R0可供用户写 ...

小白,是你多多指教
ID:267330 发表于 2018-10-31 09:07
发送了一个字节0001 1111,ds18b20就算接收了一个字,它也只对R1 R0进行操作
ID:411697 发表于 2018-10-30 23:45
配置4寄存器只有R1R0可供用户写,但我们发送了一个字节0001 1111,有没有什么不妥?是不是ds18b20就算接收了一个字,它也只对R1 R0进行操作
ID:382454 发表于 2018-10-30 19:27
真是蛋痛,没有一个人理我。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表