[51单片机] 关于多个DS18B20传感器的问题

[复制链接]
6979|36
 楼主| bluelove原来 发表于 2014-4-19 20:06 | 显示全部楼层 |阅读模式
用DS18B20传感器和51单片机做出多路温度监测系统,但是要用到三个DS18B20,每个DS18B20接一个51单片机管脚,不是单总线的,这样的程序怎么写?一个传感器我已经知道怎么写了,但是3个的确实没找到,求助一下给个思路或者给一个实例。。。谢谢各位了
 楼主| bluelove原来 发表于 2014-4-19 20:29 | 显示全部楼层
怎么没人来啊。。。。
xxwl0406 发表于 2014-4-19 20:36 | 显示全部楼层
一个能搞定,3个不是一样的啊。。
看见未来 发表于 2014-4-19 20:37 | 显示全部楼层
和一个的没区别,
一个读完读另一个。
ayb_ice 发表于 2014-4-19 21:11 来自手机 | 显示全部楼层
先要搜索3个器件的ID,然后根据ID区别不同器件,搜索命令才是单总线的精华所在,有点**的,
ningling_21 发表于 2014-4-19 21:52 | 显示全部楼层
一个读温度的函数,带一个参数,参数为1时读取第一个18B20,为2时读取第二个,为3读取第三个...
一清如水 发表于 2014-4-19 22:31 | 显示全部楼层
要我说,你就没明白DS18B20是怎么操作的,强烈建议仔细看一下数据手册,DS18B20就是单总线操作的,即便你一个引脚挂机一个,那也是单总线操作的!多个DS18B20同一单片机引脚可以通过ID号来区别。你这种三个引脚操作三个,只要其同一个可以了,那其他的只要复制不就行了,就是改一下引脚而已,连ID号都不用管
mcu5i51 发表于 2014-4-20 08:59 | 显示全部楼层
强烈建议用AVR等可以单独操作IO的芯片,直接一个函数改变IO参数就可以了,51的需要写多个函数或判断后直接操作IO
ayb_ice 发表于 2014-4-20 09:24 | 显示全部楼层
mcu5i51 发表于 2014-4-20 08:59
强烈建议用AVR等可以单独操作IO的芯片,直接一个函数改变IO参数就可以了,51的需要写多个函数或判断后直接操 ...

开什么玩笑,51就不可以传参数吗

dai277530706 发表于 2014-4-20 12:29 | 显示全部楼层
mcu5i51 发表于 2014-4-20 08:59
强烈建议用AVR等可以单独操作IO的芯片,直接一个函数改变IO参数就可以了,51的需要写多个函数或判断后直接操 ...

嘿嘿,你好有趣哦~人家只有51,因为你这句话还要去找AVR单片机还要学AVR,这不是舍近求远吗?
伏尔加的鱼 发表于 2014-4-20 14:12 | 显示全部楼层
一个能编写,三个没道理不会吧,不过觉得倒不如使用单总线的省事儿
ayb_ice 发表于 2014-4-20 14:44 | 显示全部楼层
伏尔加的鱼 发表于 2014-4-20 14:12
一个能编写,三个没道理不会吧,不过觉得倒不如使用单总线的省事儿

你试试看,不太容易的
guishende 发表于 2014-4-20 16:23 | 显示全部楼层
一清如水 发表于 2014-4-19 22:31
要我说,你就没明白DS18B20是怎么操作的,强烈建议仔细看一下数据手册,DS18B20就是单总线操作的,即便你一 ...

就是这样
guishende 发表于 2014-4-20 16:31 | 显示全部楼层

便宜的测温芯片有哪些?-20℃到100℃之间,精度0.5左右就行的。越便宜越好,知道的说下。
sl_lovearm 发表于 2014-4-20 17:45 | 显示全部楼层
18B20就是单总线啊,一个总线可以挂多个18B2O的
dai277530706 发表于 2014-4-20 17:52 | 显示全部楼层
guishende 发表于 2014-4-20 16:31
便宜的测温芯片有哪些?-20℃到100℃之间,精度0.5左右就行的。越便宜越好,知道的说下。 ...

热敏电阻最便宜
xyz549040622 发表于 2014-4-20 18:55 | 显示全部楼层
循环扫描即可
w522930954 发表于 2014-4-21 08:45 | 显示全部楼层
guishende 发表于 2014-4-20 16:31
便宜的测温芯片有哪些?-20℃到100℃之间,精度0.5左右就行的。越便宜越好,知道的说下。 ...

二极管最便宜。。。。1N4148或者三极管CB短接
mcu5i51 发表于 2014-4-21 09:40 | 显示全部楼层
ayb_ice 发表于 2014-4-20 09:24
开什么玩笑,51就不可以传参数吗

你试着写一个SetGPIO(u8 prot,u8 bit)的函数,
你会发现51芯片和avr,STM8等完全不同;
ayb_ice 发表于 2014-4-21 10:40 | 显示全部楼层
mcu5i51 发表于 2014-4-21 09:40
你试着写一个SetGPIO(u8 prot,u8 bit)的函数,
你会发现51芯片和avr,STM8等完全不同;
...

我不会用它方法吗

假设P1_0,P1_1接两个1820

然后

#define DS1820_1 (1<<0)
#define DS1820_2 (1<<1)

#define CLEAR_DQ(n)        P0 &= ~(n)


void test(void)
{
        CLEAR_DQ(DS1820_1);

        CLEAR_DQ(DS1820_2);

        ......
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部