🚀write in front🚀
🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚
前言:
本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。
引用:
51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili
c51语言变量语句意思,C51中循环语句-CSDN博客
正文:
0. 🌿概述
在淘宝上购买了江协科技51单片机开发板套件(普中科技STC51单片机A2型号),就上在上一篇博文里说的自己计划学习下江协科技51单片机开发教程,通过STC51单片机这种MCU这种贴近于裸机的开发来增加对于系统硬件层面知识的了解和掌握。
术语和缩略语
缩写 | 全称 | 说明 |
1-Wire | One-Wire Bus | 单总线 |
Scratchpad | Scratchpad | 暂存器 |
1. 🚀 DS18B20温度传感器介绍
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
- 测温范围:-55°C 到 +125°C
- 通信接口:1-Wire(单总线)
- 其它特征:可形成总线结构、内置温度报警功能、可寄生供电
DS18B20是数字温度传感器,其输入输出是数字量,相对于模拟温度传感器,功能强大,使用简单。如果使用模拟温度传感器,例如热敏电阻,那么需要将一个电阻和热敏电阻串联起来,热敏电阻的阻值随着温度而变化,热敏电阻的电压分值也就随着温度而变化,使用AD(模式数字转换器)转换器来采集热敏电阻的电压分值,然后将电压分值转换为温度阻值。可以发现使用模拟温度传感器,需要AD模拟数字转换器,电路复杂。
2. 🚀引脚及应用电路
引脚 | 说明 |
GND | 电源地 |
DQ | 单总线接口 |
VDD | 电源(3.0V ~ 5.5V) |
DS18B20支持寄生供电,使用寄生供电可以减少引脚接线的使用,直接使用DQ作为寄生供电
3. 🚀单总线通信协议
- 单总线是由Daslas达拉斯公司开发的一种异步通用数据总线
- 一根通信线:DQ
- 异步,半双工
- 单总线只需要一根通信线即可实现数据的双向传输,当采用寄生共供电时,还可以省去设备的VDD线路,此时,供电通信只需要DQ和GND两根线。
单总线使用的时候有一些弊端,其使用和应用范围远没有I2C的使用广泛。几乎是DS18B20托起了单总线协议的一片天。
单总线的电路规范
- 设备的DQ均要配置为开漏输出模式
- DQ添加一个上拉电阻,阻值一般为4.7K欧姆左右
- 若此总线的冲击采用寄生供电,则主机还需要配置一个强上拉输出电路。
单总线时序结构
初始化:当主机将总线拉低至少480us,然后释放总线,等待15-60us后,存在的从机会拉低总线60-240us以响应主机,然后从机将释放总线。
问题:这里的时间都是一个范围,不好估计要等待多长时间,最后程序里都使用一个中间值。
单总线发送一位
发送一位:主机将总线拉低60-120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1.从机将在主机法蒂30us后(典型值)读取电平,整个时间应大于60us。
单总线读取一位
接收一位:主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1,整个时间拍你应该大于60us。
发送一个字节
发送一个字节:连续调用8次发送一位的时序,依次发送一个字节的8位,低位在前。
接收一个字节:连续调用8次接收一位的时序,依次接受一个字节的8位,低位在前
4.🚀DS18B20操作流程
每次对DS18B20进行操作都必须按照如下的步骤,每次对DS18B20操作之前都必须进行初始化
- 初始化:从机复位,主机判断从机是否响应
- ROM操作:ROM指令+本指令需要的读写操作
- 功能操作:功能指令+本指令需要的读写操作
ROM操作就是对DS18B20寻址比较,功能操作就是RAM操作,
执行"CONVERT T"功能指令,就会将温度传感器里的转换一次并放到RAM暂存器(ScratchPad)里。
功能指令:
- CONVERT T:温度传感器转换一次温度,并更新到ScratchPad暂存器里,即更新一次温度。
- WRITE SCRATCHPAD :写暂存器
- READ SCRATCHPAD:读暂存器
- COPY SCRATCHPAD:将暂存器里的值写入到E2PROM
- RECALl E2:将E2PROM里的值调到暂存器
5. 🚀DS18B20数据帧
DS18B20数据帧,读取温度需要进行的操作:
温度转换:初始化->跳过ROM->开始温度转换
温度读取:初始化->跳过ROM->读暂存器->连续的读操作
6. 🚀DS18B20温度存储格式
DS18B20温度传感器中的温度存储格式,实际上是一种二进制的补码格式的形式,第4位的bit[3:0]表示小数,2^(-4)表示最小为0.0625的分辨率。