zhange 发表于 2024-5-18 09:34:20

降龙棍外接ds18b20 记录

本帖最后由 zhange 于 2024-11-21 09:10 编辑

1.待编辑,成功了来写经验(已经实现了2个ds18b20轮流读取,这俩温度相差0.3 在正常的0.5范围内)





2.注意时钟的选择是22.1184mhz

3.必须先单独获取ds18b20的标识码下边楼层有代码

4.可以研究下中文手册看一下命令

5.没研究寄生电容模式,以后再说吧。。。。。。


6.切记执行序列
通过单线总线端口访问 DS18B20 的协议如下:
步骤1. 初始化
步骤2. ROM 操作指令
步骤3. DS18B20 功能指令

7.名词解释(个人理解)

释放总线:总线进入高电平状态




zhange 发表于 2024-5-18 09:37:39

本帖最后由 zhange 于 2024-5-18 09:49 编辑

第一步:接上dbs18b20

买了2个一次,给客服要说明书,没上班那。看着是3个外接引脚,和冲哥讲的应该一样。电源线2根,一根数据线。


直接接单片机外接出来的电源    冲哥说的外接电源稳定??dq接p33



接上灯就亮了


zhange 发表于 2024-5-18 09:50:38

第二步:下个程序测试下

就用冲哥的这个吧{:4_168:}{:4_168:}



一下成功

zhange 发表于 2024-5-18 09:51:17

第三步:结束??不复制别人的程序不行我要自己写   

开写。。。。。。。。

晓飛飛 发表于 2024-5-18 11:08:55

别弄DS18B20了,来试试国产的单线温度传感器NST1001吧,精度更高,编程更简单。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7496

zhange 发表于 2024-5-18 14:51:09

晓飛飛 发表于 2024-5-18 11:08
别弄DS18B20了,来试试国产的单线温度传感器NST1001吧,精度更高,编程更简单。
https://www.stcaimcu.com/ ...

这个得研究支持国产    我去买个玩玩   

zhange 发表于 2024-5-18 15:31:07

先上一下ds18b20的基础知识:



DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。


温度高于100℃时,不推荐使用寄生电源,因为DS18B20在这种温度下表现出的漏电流比较大,通讯可能无法进行。在类似这种温度的情况下,强烈推荐使用DS18B20的VDD引脚。


如果总线停留在低电平超过480us,总线上的所有器件都将被复位。



执行序列
通过单线总线端口访问 DS18B20 的协议如下:
步骤1. 初始化
步骤2. ROM 操作指令
步骤3. DS18B20 功能指令










zhange 发表于 2024-5-18 15:34:33

本帖最后由 zhange 于 2024-5-19 07:41 编辑

初始化
通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道 DS18B20 在总线上且已准备好操作,详见单总线信号节。




void DS18b20_Reset(void)                //复位
{
        bit flag = 1;
       
        while( flag )
        {
                DQ = 0;                                //输出低电平
                Delay480us();
                DQ = 1;                                //输出高电平
                Delay60us();
                flag = DQ;                        //读取当前电平
                Delay480us();       
        }               
}


zhange 发表于 2024-5-18 15:35:54

ROM 指令
一旦总线控制器探测到一个存在脉冲,它就发出一条 ROM 指令。如果总线上挂有多只 DS18B20,这些指令将基于器件独有的 64 位 ROM 片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少只,什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM 指令有 5 条,都是 8 位长度。总线控制器在发起一条 DS18B20 功能指令之前必须先发出一条 ROM 指令。

zhange 发表于 2024-5-18 15:51:03


复位序列:复位和存在脉冲
和 DS18B20 间的任何通讯都需要以初始化序列开始,初始化序列见图 13。一个复位脉冲跟着一个存在脉冲表明 DS18B20 已经准备好发送和接收数据。
在初始化序列期间,总线控制器拉低总线并保持 480us 以发出(TX)一个复位脉冲,然后释放总线,进入接收状态(RX)。单总线由 5K 上拉电阻拉到高电平。当DS18B20 探测到 I/O 引脚上的上升沿后,等待 15-60us,然后发出一个由 60-240us低电平信号构成的存在脉冲。





相关函数

void DS18b20_Reset(void)                //复位
{
        bit flag = 1;
       
        while( flag )
        {
                DQ = 0;                                //输出低电平
                Delay480us();
                DQ = 1;                                //输出高电平
                Delay60us();
                flag = DQ;                        //读取当前电平
                Delay480us();       
        }               
}


页: [1] 2
查看完整版本: 降龙棍外接ds18b20 记录