请教各位高手DS18B20的9位分辨率如何设置啊?
帮忙的,路过的,有事的,没事的,各位大哥大姐们,小弟正在弄DS18B20的实验,实验要求我用DS18B20的9位分辨率进行温度测量,小弟费劲了千辛万苦,也没有达到实验效果,希望各位好心人能给小弟点帮助,让我能够从痛苦的挣扎中解脱出来,在此小弟先谢过了! 要达到什么效果啊? 回复【1楼】dudu_q-----------------------------------------------------------------------
DS18b20默认的情况下是12位数据采集,可实在12位的情况下,速率很慢,我的实验要求就是把速率提上来,采用9位数据采集 一般情况下的温度值应为9 位(符号占1 位) , 但因符号位扩展成高8 位, 故以16 位补码形式读出。
哪里来的12位呢? 呵呵。我今天才做了。
步骤是:先写0x1f到配置寄存器,这就是9位,再保存到18B20EEPROM里面
再把第一步的程序注释掉,用你12位的程序读温度,你发现变成9位了。 还有一个方法就是取12位里面的9位。 速率的问题其是不大,你可以用定时的方式解决 回复【4楼】kaixinlaohe
-----------------------------------------------------------------------
呵呵,谢谢你啊。不过你说的我有点不懂啊,“把第一步的程序注释掉”是什么意思啊? 回复【3楼】dudu_q
-----------------------------------------------------------------------
DS18b20是9~12位可编程的 以前做的时候还真没细看
又翻了一下
设置分辨率是设置存储器里面的第九个字节冗余检验字节
修改里面的R1和R0就可以设定分辨率了。 回复【9楼】dudu_q
-----------------------------------------------------------------------
是啊,PDF里面说的轻松啊,实际操作起来好难啊! enum ds18b20_bits {
DS18B20_BITS_9 = 0x1F,
DS18B20_BITS_10= 0x3F,
DS18B20_BITS_11= 0x5F,
DS18B20_BITS_12= 0x7F,
};
// 设置上下限温度和位数
voidDS18B20Config(unsigned char alarm_h,unsigned char alarm_l,unsigned charbits)
{
OWWriteByte(0x4E);
OWWriteByte(alarm_h);
OWWriteByte(alarm_l);
OWWriteByte(bits);
}
点击此处下载 ourdev_526069.rar(文件大小:7K) (原文件名:atmega_ds18b20_api.rar) 哥们,先谢谢你了啊!回头试一下。 11楼的 资料下载不了 正需要呢,谢谢啊,回去我好好看看 18B20不显示采集温度是怎么回事啊,前几天还显示呢,
现在只是显示初始化温度0℃ 我 也遇到这样的问题唉, 为什么我配置成12位与配置 成9位读出的数据是一样的 rauqwmourmhtkgn 发表于 2012-10-28 09:53 static/image/common/back.gif
为什么我配置成12位与配置 成9位读出的数据是一样的
我也是啊!!!怎么回事我读出来 都已经是1F 的了,显示温度数据 还是12位的 !{:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:} {:cry:}
页:
[1]