双源电子

在线客服
 工作时间
周一至周五 :8:30-17:30
周六至周日 :9:00-17:00

ARDUINO学习17

有一种总线,叫做单总线。顾名思义,就只靠一根线来传输数据,而且还是双向传输的!
这种总线的好处就是节省IO口,但处理起来,就麻烦一些了,因为你必须严格按照设备的时序要求来读写数据。
DHT11温湿度传感器就是一个常见的单总线传感器,我们来看一下它的工作流程:

图片
首先,要由单片机主动发起读数操作,此时总线IO脚应该设置为输出状态(黑线);然后将IO脚设置改为输入状态,等待
接收传感器数据;
发起读数操作操作的时序如下图所示:
图片
总线IO脚至少拉低18ms,然后置高,持续20-40us,然后就改为输入状态,等待回数;传感器发数前也会先把总线
拉低,持续约80us,然后置高,持续约80us,跟着后面,就是数据了。
与我们平时读取IO状态不同,单总线上的数据1和0并不是简单由高低电平表示,也要通过时序判断来确定数据。
如下图:单总线的0,是由起始位(低脉冲约50us)和高脉冲(持续26-28us)组成;

图片
单总线的1,是由起始位(低脉冲约50us)和高脉冲(持续70us)组成;
图片
我们把读到的0和1存在数组里,然后就可以根据数据格式计算出温湿度数值了。
DHT11的完整的数据传输为40bit,高位先出。
数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和;
校验和是为了保证数据传输的正确性,计算方法如下:
校验和=8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据
所得结果的末8位;
是不是已经晕头转向了?
不用急,ARDUINO已经为我们提供了DHT11传感器库函数,只要直接调用就好了!
下载地址:
http://playground.arduino.cc/Main/DHT11Lib

联系方式
_faiMaterial_000045

联系人:ANTBOT001

QQ:584860790

邮 箱:584860790@qq.com

交流群: 615486305