目录
一.18B20组成
1.64位ROM
2.内部存储器
3.配置寄存器
二.18B20温度转换规则及指令
三.18B20指令时序图及代码实现
1.18B20初始化
2.18B20读时序
3.18B20写时序
四.51单片机具体实现代码
1.18B20D读取数据函数
2.18B20D读取数据函数的头文件
3.主函数
一.18B20组成
- 管脚顺序:1-GND 2-DQ 3-VDD
- 组成:64位ROM +存储器和控制器 +高速缓存存储器 + 8位CRC生成器 + 温度灵敏元件 + 高/低温触发器TH/TL + 配置寄存器
1.64位ROM
出厂前已经刻录好数据,用于存储18B20的地址序列号,由 8位产品类型标号 + 48位序列号 + 8位CRC循环冗余校验码。
用处:用于实现一根总线挂载多个18B20
2.内部存储器
内部存储器包括高度暂存器RAM + EEPROM;
EEPROM用于存放TH/TL高低温触发器+结构寄存器
3.配置寄存器
存储的第四字节为配置寄存器,用于配置传感器的精度;组成 1111 1+ R0 + R1 + 0 ,低4位和第7位不可改变。
| R1 | R0 | 精度 |
|---|---|---|
| 0 | 0 | 9bit |
| 0 | 1 | 10bit |
| 1 | 0 | 11bit |
| 1 | 1 | 12bit |
二.18B20温度转换规则及指令
- 核心功能:可直接读出数字的温度数值
- 精度:用户可编程 9位 --0.5℃;10位 --0.25℃;11位 --0.125℃;12位 --0.0625℃。默认精度:12位
- 工作过程:总线发出44H命令,进行测量温度和AD转换;转换后,产生数据以两字节的形式存储在高速缓存存储器中后,器件保持等待状态。
- 温度数据组成:16位,
- (MS 5bit)高5位为符号位,T>0时,全为0,实际温度 = 后7位数据 *1 ℃ + 后4位数据* 0.625℃;T<0时,全为1,实际温度 =( 后7位数据取反+1的数据前7位)* 1℃ +( 后4位数据取反+1的数据前7位)* 0.0625℃;
- (MS 3bit+ LS 4bit)高字节的后三位+低字节的前4位为整数部分
- (LS 4bit)低字节的后4位为小数部分
- eg:
- 1111 1111 1111 1000 (FFF8h)>>> 1111 1 温度为负 ,111 1111 1000取反+1 =000 0000 1000(8) ;实际的温度 = -8*0.0625 = 0.5℃
- 0000 0111 1101 1000 (07D8h)>>> 0000 0 温度为正 ,0000 0111 1101 1000 ;实际的温度 = (111 1101)125 * 1 +(1000)8 * 0.0625= 125 .5℃
三.18B20指令时序图及代码实现
| 指令 | 代码 | 功能 |
| 读ROM | 33H | 读取ROM的序列号 |
| 跳过ROM | CCH | 忽略64bitROM地址,直接可进行温度转换 |
| 温度转换 | 44H | 启动温度转换,转换时长最大750ms,存入内部RAM |
| 读暂存器 | 0BEH | 读取内部RAM的内容 |
1.18B20初始化

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36608.html