文章目录
- 1
- 1.1
- 1.2
- 2
- 3
- 4
- DS18B20 只能检测温度 右边这几个 都能
1
1.1
- 数字信号输出 指 0/1
- 使用单总线通信 1个IO口就能获取温湿度 T/H
- 要有 模数转化(内部还有个8位单片机)
- 电容感湿元件 白色的 还有个ic NTC测温 可能在ic内部 使用单片机内部测温 精确度不高
- 可用作智能家居 如果既想测湿度 又想 高精度温度 可以考虑 DHT22(贵两倍?) 可以达到DS18B20 的精度
1.2
- 这两共用插槽(简单理解 应该是在原子的板子里面)
- 这么看好简单 连接
- DS18B20没用 GND引脚 DHT11 用了 4个引脚
- 要想移植 就改一下 宏定义 估计就行
- 这来说 时序代码 很重要
2
- 起始信号 像DS18B20发出复位脉冲
- 响应信号 像DS18B20应答脉冲(这里主机就接收就好了)
- 这里没要结束信号
- 图里这些典型值 选自 电容式 DHT11的pdf (旧版教程里 是电阻式)
- 主机又不能控制从机 输出 只能检测
- 响应信号里第一个while 是看 拉低没 第二个是看 拉高没 (有一个没做到就 rval=1 返回失败)
起始信号 是实打实 影响数据线了 主动的
读数据
- 拉高那部分 根据时间不同代表 0/1?
- 要知道这对应哪个点/部分
- 这是 读1bit位的
- 100那个不必理会 && 前面有数据线卡着呢
- 高位数据 先输出 所以左移
- 这 data不能 是 =
- 获取1字节
3
- 结束信号 不要
4
- 解释为啥每隔 2s (好像这就是每隔两S 就是当前的 可能和运行时间有关)
实战
- 宏定义
- 输出 高低电平
- 读取
- dht11.c里 大部分相同 就这个和 初始化最后不一样
- 这没看check的返回值吧
- 这返回值 表示校验成功
- 因为打印 所以包含串口 头文件
- main.c 这么写的
先学LCD