东车日报|余承东:不要造20万以下的车-小鹏G6内饰曝光-华为前高管加盟理想汽车
06-21
最近一直在学习和编写单片机程序。
今天有空就模仿DS18B20测温和显示实验,写了一个基于与DS18B20单总线通信的程序。
DS18B20数字温度传感器(参考:智能温度传感器DS18B20原理及应用)是DALLAS公司生产的1-Wire器件,为单总线器件,电路简单,体积小。
因此,用来组成接线简单的温度测量系统。
许多这样的数字温度计可以挂在一根通信线上。
DS18B20产品的特点: (1) 只需一个I/O口即可实现通信。
(2)。
DS18B20 中的每个器件都有一个唯一的序列号。
(3)在实际应用中,无需任何外部元件即可实现温度测量。
(4)测量温度范围在-55℃至+℃之间; -10~℃范围内误差±5℃; (5)数字温度计的分辨率可由用户在9位至12位之间选择。
将12位温度值转换为数字量所需时间不超过ms; (6)有内部温度上限和下限报警设置。
DS18B20引脚分布图 DS18B20详细引脚功能说明: 1. GND地信号; 2. DQ数据输入输出引脚。
开漏单总线接口引脚。
当在寄生电源下使用时,该引脚可以为器件提供电源;排水管打开并且经常达到高水位。
通常需要外接一个5kΩ左右的上拉电阻。
3. VDD 可选 VDD 引脚。
电压范围:3~5.5V;当使用寄生电源时,该引脚必须接地。
DS18B20存储器结构图:暂存器的前两个字节是测量温度信息的低字节和高字节;第3和第4字节是TH和TL的易失性副本,每次上电复位时都会刷新;第5个字节是配置寄存器的易失性副本,在电源复位期间也会刷新;第9个字节是前8个字节的CRC校验值。
配置寄存器的命令内容如下:0R1R11 MSB LSBR0和R1为温度值分辨率位,根据下表进行配置。
默认出厂设置为 R1R0 = 11,即 12 位。
温度值分辨率配置表 R1R0 分辨率最大转换时间(ms) bit93.75 (tconv/8) bit .50(tconv/4)bit(tconv/2)bit(tconv) 4 个分辨率对应的温度分辨率分别为 0.5℃、0.25℃、0.℃、0.℃(即最低位代表温度值) 12 位分辨率下两个温度字节的具体格式如下: 低字节:2^32^22 ^12^02^-12^-22^-32^-4 高字节:SSSSS2^62^52^4 高字节前5位均为符号位S。
如果分辨率为低于12位,最低值为0。
例如:当分辨率为10位时,低字节为:2^32^22^12^02^-12^- ,高字节不变....转换后输出的一些温度和数字如下:温度数字输出改为16位系统℃07D0H℃H.℃H.℃00A2H.5℃H0℃H-0.5℃FFF8H-10.℃FFE5H-25.℃FF6FH-55℃FC90H 从上表可以看出,当输出为负温度时,使用补码表示时,方便计算机计算(如果使用C语言,直接将结果赋值给int变量即可)。

如何使用DS18B20:由于DS18B20采用的是1-Wire总线协议,即在一根数据线上实现数据的双向传输,而对于单片机来说,我们必须用软件的方法来模拟单条总线的协议时序来完成访问到 DS18B20 芯片。
由于DS18B20在I/O线上读写数据,因此对数据位读写有严格的时序要求。
DS18B20具有严格的通信协议,保证数据传输的正确性和完整性。
该协议定义了几个信号的时序:初始化时序(dsInit() 实现)、读取时序(readByte())和写入时序(writeByte())。
所有时序均使用主机作为主设备,单总线设备作为从设备。
当主机主动发起写序列时,每个命令和数据传输开始。
如果单总线设备需要回送数据,则在发出写命令后,主机需要发起读序列来完成数据接收。
数据和命令首先传输低端。
DS18B20 与单片机连接电路图: 用软件模拟DS18B20 的单线协议和命令: 主机必须按照以下顺序操作DS18B20 1. 初始化 单线总线上的所有操作都是从初始化开始的。
流程如下: 1)请求:主机通过拉低单线us以上,产生复位脉冲,然后释放线,进入Rx接收模式。
当主机释放总线时,会产生一个上升沿脉冲。
DQ: 1 -> 0(us+) -> 12) 响应:DS18B20 检测到此上升沿后,有 15~60us 的延迟,将总线拉低 60~us 产生响应脉冲。
DQ:1(15~60us) -> 0(60~us)3) 接收响应:主机收到从机响应脉冲后,表示有单线设备在线。
至此,初始化完成。
DQ: 02. ROM 操作命令 当主机检测到响应脉冲时,可以发起 ROM 操作命令。
ROM 操作命令有 5 种,如下表所示: 命令类型、命令字节功能 Read Rom Read ROM33H 读取激光 ROM 中的 64 位。
它只能用于总线上的单个 DS18B20 设备。
当有多个设备时,就会出现数据冲突。
匹配ROM 匹配ROM55H。
该命令后跟一个 64 位 ROM 序列号,用于寻址总线上的多个设备。
对应DS18B20。
只有序列号完全匹配的DS18B20才能响应后续的存储器操作命令。
其他不匹配的将等待复位脉冲。
它可以在单一或多种情况下使用。
Skip Rom 跳过ROMCCH,不需要提供64位ROM。
序列号可用于运行内存操作命令,只能用于单钩。
Search Rom 搜索ROMF0H,并通过排除过程识别总线上所有设备的ROM 序列号。
Alarm Search 报警搜索ECH 命令流程与Search Rom 相同,但DS18B20 只有最近一次满足报警触发条件的温度测量才会响应该命令。
3。
存储器操作命令 存储器操作命令只有在ROM 操作命令成功执行后才能使用。
存储器操作命令有 6 种类型: 命令类型 命令字节功能 Write Scratchpad 写暂存器 4EH 在启动复位脉冲之前,将地址 2~地址 4 的 3 个字节写入暂存器(TH、TL 和配置寄存器)。
必须写下来。
Read Scratchpad 读取暂存器 BEH 读取暂存器的内容,从字节 0 到字节 8,共 9 个字节。
主机可以随时发起复位脉冲来停止此操作。
通常我们只需要读取前5个字节。
Copy Scratchpad 复制暂存器 48H 将在暂存器中内容被复制到 EERAM 中,以便将温度报警触发字节存储到非易失性存储器中。
如果主机在该命令后生成读时隙,则只要设备仍在复制,就会输出 0,复制完成后就会输出 1。
Convert T 温度转换 44H 开始温度转换操作。
如果主机在该命令后生成一个时隙,那么只要设备仍在进行温度转换,就会输出 0,转换完成后,就会输出 1。
Recall E2 Recall E2 register B8H Re -将EERAM中存储的温度报警触发值和配置寄存器值复制到临时寄存器。
当 DS18B20 上电时,此操作会自动发生。
Read Power Supply 读取电源模式 B4H 主机在执行此命令后启动每次读取 在时隙内,DS18B20 将发出其电源模式信号:0 寄生电源,1 外部电源。
4。
DS18B20的数据处理需要严格的时序以保证数据的完整性。
单线DQ上有一个复位脉冲,有六种信号类型:响应脉冲、写0、写1、读0、读1。
除响应脉冲外,其他脉冲均由主机产生。
数据位的读写是通过读写时隙来实现的。
1)写时隙:当主机将数据线从高电平拉至低电平时,产生写时隙。
所有写时隙必须在60us以上,并且每个写时隙之间必须保证1us的恢复时间。
写“1”:主机先将数据线DQ拉低,然后释放15us,然后将数据线DQ拉高;写“0”:主机将DQ拉低并保持低电平至少60us。
2)读时隙:当主机将数据线DQ从高电平拉至低电平时,产生读时隙。
所有读时隙必须持续至少60us,并且每个读时隙之间必须保证1us的恢复时间。
读:主机将DQ拉低至少1us。
此时主机立即将DQ拉高,延时15us后再读取DQ。
源代码:(测量范围:0~99度) DS18B#include2//通过DS18B20测试当前环境温度,并通过数码管显示当前温度值 3sbitwela=P2^7;//选择数码管管位 4sbitdula=P2^6;//选择数码管部分 5sbitds=P2^2;6//0-F数码管(共阴极)的编码 7unsignedcharcodetable[ ]={0x3f,0x06,0x5b,0x4f, 0x66,80x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};9//0-9数码管编码(共阴极),带小数点10unsignedcharcodetableWidthDot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,x87,0xff,0xef};//延迟函数,例如i=10,延迟约为10ms。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-17
06-18
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现