欢迎来到天天文库
浏览记录
ID:44164917
大小:510.51 KB
页数:4页
时间:2019-10-19
《Arduino 温湿度传感器DHT11模块实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Arduino温湿度传感器DHT11模块实验网上有很多DHT11的测试,试了N个程序,总是不得要领,各种报错,最后终于找到一套可用的库。首先是DHT11.h文件1.#ifndef__DHT11_H__2.#define__DHT11_H__3.#include4.//DHT11IO设置5.#defineDHT11_DQ26.#defineDHT11_DQ_0digitalWrite(DHT11_DQ,LOW)7.#defineDHT11_DQ_1digitalWrite(DHT11_DQ,HIGH)8.9.//函
2、数或者变量声明10.externvoidDHT11_Init();11.externunsignedcharDHT11_Read_Byte();12.externvoidDHT11_Read();13.14.externunsignedcharHUMI_Buffer_Int;15.externunsignedcharTEM_Buffer_Int;16.17.#endif其次是DHT11.cpp文件1.#include"DHT11.h"2.//定义变量3.unsignedcharHUMI_Buffer_Int=0;4.unsignedc
3、harTEM_Buffer_Int=0;5.//****************************************************6.//初始化DHT117.//****************************************************8.voidDHT11_Init()9.{10.pinMode(DHT11_DQ,OUTPUT);11.DHT11_DQ_0;//拉低总线,发开始信号;12.delay(30);//延时要大于18ms,以便DHT11能检测到开始信号;13.DHT11_
4、DQ_1;14.delayMicroseconds(40);//等待DHT11响应;15.pinMode(DHT11_DQ,INPUT);16.while(digitalRead(DHT11_DQ)==HIGH);17.delayMicroseconds(80);//DHT11发出响应,拉低总线80us;18.if(digitalRead(DHT11_DQ)==LOW);19.delayMicroseconds(80);//DHT11拉高总线80us后开始发送数据;20.}21.22.//***********************
5、*****************************23.//读一个字节DHT11数据24.//****************************************************25.unsignedcharDHT11_Read_Byte()26.{27.unsignedchari,dat=0;28.unsignedintj;29.pinMode(DHT11_DQ,INPUT);30.for(i=0;i<8;i++)31.{32.if(digitalRead(DHT11_DQ)==LOW)33.{34.wh
6、ile(digitalRead(DHT11_DQ)==LOW);//等待50us;35.delayMicroseconds(30);//判断高电平的持续时间,以判定数据是‘0’还是‘1’;36.if(digitalRead(DHT11_DQ)==HIGH)37.dat
7、=(1<<(7-i));//高位在前,低位在后;38.while(digitalRead(DHT11_DQ)==HIGH);//数据‘1’,等待下一位的接收;39.}40.}41.returndat;42.}43.44.//***********************
8、*****************************45.//读取温湿度值,存放在TEM_Buffer和HUMI_Buffer46.//****************************************************47.voidDHT11_Read()48.{49.DHT11_Init();50.HUMI_Buffer_Int=DHT11_Read_Byte();//读取湿度的整数值51.DHT11_Read_Byte();//读取湿度的小数值52.TEM_Buffer_Int=DHT11_Read_B
9、yte();//读取温度的整数值53.DHT11_Read_Byte();//读取温度的小数值54.DHT11_Read_Byte();//读取校验和55.delayMicroseconds(50);//DHT11拉低总
此文档下载收益归作者所有