求教DHT11温度sht30温湿度值的读取读不出来的问题

【Arduino基础教程】DHT11温湿度传感器 - 简书
【Arduino基础教程】DHT11温湿度传感器
DHT11温湿度传感器模块
DHT11是用来检测空气温度和湿度的模块。
测量范围:
湿度: 20% ~ 9 0%(精度5.0%)
温度:0 ~ +50 ℃(精度2℃)
响应时间:&50ms
低功耗、小体积、稳定可靠
DHT11模块接线示意图
加载库文件
到下载MQ135的库文件,在Arduino IDE中,点击项目-&加载库-&添加一个.zip库,选择下载好的DHT-lib.zip文件即可。
#include &dht.h&
#define DHT11_PIN A0
void setup(){
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
void loop(){
Serial.print("DHT11, \t");
int chk = DHT.read11(DHT11_PIN);
switch (chk){
case DHTLIB_OK:
Serial.print("OK,\t");
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error,\t");
case DHTLIB_ERROR_ACK_L:
Serial.print("Ack Low error,\t");
case DHTLIB_ERROR_ACK_H:
Serial.print("Ack High error,\t");
Serial.print("Unknown error,\t");
// DISPLAY DATA
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);
delay(2000);
DHT TEST PROGRAM
LIBRARY VERSION: 0.1.20
Humidity (%),
Temperature (C)
(BREATHE On Sensor ! )
伪文青/摄影湿/程序猿/技术宅/极客范/美食控
个人主页:我用LCD12864显示dht11温湿度传感器读出来的数据,调试了好多次为什么小数部分还是零_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
我用LCD12864显示dht11温湿度传感器读出来的数据,调试了好多次为什么小数部分还是零
我有更好的答案
需要给你写一份吗
现在还行不
代做的我id
为您推荐:
其他类似问题
dht11的相关知识
等待您来回答查看: 1133|回复: 3
DHT11温湿度传感器,显示的值永远为104,初始化ok,应该是读数据出现问题?求解
主题帖子精华
初级会员, 积分 88, 距离下一级还需 112 积分
在线时间0 小时
[C] 纯文本查看 复制代码DHT11代码和主函数代码如下 ,已经纠结了几天了,找不到原因,原子的原程序改的
[C] 纯文本查看 复制代码DHT11函数
[C] 纯文本查看 复制代码
[C] 纯文本查看 复制代码#include \"dht11.h\"
#include \"delay.h\"
void DHT11_Rst(void)
DHT11_IO_OUT();
//SET OUTPUT
DHT11_DQ_OUT=0;
delay_ms(30);
DHT11_DQ_OUT=1;
delay_us(50);
u8 DHT11_Check(void)
u8 retry=0;
DHT11_IO_IN();//SET INPUT
while (DHT11_DQ_IN&&retry&100)
delay_us(1);
if(retry&=100)return 1;
else retry=0;
while (!DHT11_DQ_IN&&retry&100)
delay_us(1);
if(retry&=100)return 1;
u8 DHT11_Read_Bit(void)
u8 retry=0;
while(DHT11_DQ_IN&&retry&100)
delay_us(1);
while(!DHT11_DQ_IN&&retry&100)
delay_us(1);
delay_us(40);
if(DHT11_DQ_IN)return 1;
else return 0;
u8 DHT11_Read_Byte(void)
for (i=0;i&8;i++)
dat|=DHT11_Read_Bit();
u8 DHT11_Read_Data(u8 *temp,u8 *humi)
u8 buf[5];
DHT11_Rst();
if(DHT11_Check()==0)
for(i=0;i&5;i++)
buf[i]=DHT11_Read_Byte();
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
*humi=buf[0];
*temp=buf[2];
}else return 1;
u8 DHT11_Init(void)
GPIO_InitTypeDef
GPIO_InitS
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_11);
DHT11_Rst();
return DHT11_Check();
[C] 纯文本查看 复制代码
[C] 纯文本查看 复制代码主函数
[C] 纯文本查看 复制代码
[C] 纯文本查看 复制代码#include \"led.h\"
#include \"delay.h\"
#include \"key.h\"
#include \"sys.h\"
#include \"12864.h\"
#include \"usart.h\" &
#include \"dht11.h\"
&int main(void)
delay_init();
NVIC_Configuration();
uart_init(9600);
& LED_Init();
KEY_Init();
InitDis(); &
DisStr(1,1,\"DHT11_测试\");
& while(DHT11_Init())
DisStr(2,3,\"DHT11 Error\");
delay_ms(200);
delay_ms(200);
DisStr(2,3,\"DHT11 OK\");
&DisStr(3,1,\"温度 & &C\");
DisStr(4,1,\"湿度 & &%\");
if(t%10==0)
DHT11_Read_Data(&temperature,&humidity);
DisInt(3,4,temperature);
DisInt(4,4,humidity);
printf(\"温度\");
printf(\"%d\r\n\",temperature);
printf(\"湿度\");
printf(\"%d\r\n\",humidity);
delay_ms(10);
LED0=!LED0;
[C] 纯文本查看 复制代码
我待ARM如初恋,ARM虐我千百遍!
主题帖子精华
金钱113315
在线时间828 小时
直接下载我们例程测试不行么?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 88, 距离下一级还需 112 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
我只是把你们的显示程序改成了12864显示&&其他都没改
我待ARM如初恋,ARM虐我千百遍!
主题帖子精华
金钱113315
在线时间828 小时
回复【3楼】核弹技术哪家强:
---------------------------------
可以直接下载我们例程试试
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
Powered by查看: 833|回复: 2
HC-06蓝牙+DHT11温湿度模块
下载分9506 分
原创币0 点
下载156 次
上传1587 次
主题帖子积分
笔记本维修
刚开始鼓捣了两天单片机,终于小有收获。做了两件事,将HC-06蓝牙模块与单片机连接,实现手机蓝牙端和单片机的通信;利用DHT11采集到的温湿度数据通过蓝牙实时传给手机端显示。
硬件上,我直接将蓝牙模块与单片机的串口处连接(蓝牙-单片机: VCC-5V, GND-GND, RX-TX,TX-RX)?。软件上,由于HC-06的资料比较少,我下载了几个HC-05的程序看,发现都是讲RX/TX(发射/接收端)接在单片机IO的情况。这才意识到,如果蓝牙模块是直接连在串口端的话,写代码相当于只是串口通信了。所以尝试打开串口实验(这个大家都有的,买单片机老板都会送,这个程序要实现的是STM32通过串口和上位机的对话,STM32在收到上位机发过来的字符串后,原原本本的返回给上位机,需要注意在上位机输入的字符串末尾加入回车键,否则无响应),几乎不需要改动什么,烧进去之后看结果。首先蓝牙的LED灯亮了,是个好现象。手机打开蓝牙串口助手的客户端,也成功配对了蓝牙(默认密码是)。但是手机端显示的却是乱码,我估计可能是不能识别中文的原因,所以将程序里所有输出的中文都改成简版的英语,这样也能知道输出的是哪个部分。重新烧了一次,结果如下图:
?这才看出来,是一直提示“input”,结果是正确的,可以返回我输入的字符串,但是单词都得分几次才能出来,显然是软件不合适。重新找了个软件,成功解决问题,实现了实验要求。而一直提示input,是由于这段代码:
这句话原本是times 0==0,所以致使频繁输出input,将时间拉长就明显好多啦~
?DHT11的代码在网上也很方便的找得到,问题在于如何修改。这个模块只有三个引脚,很自然的高接高,地接地,但是数据线接哪需要看程序是怎么给的。程序里有dht11.c和dht11.h,可以看到程序是要求数据线接单片机的PG11管脚,但是我的单片机并没有这个管脚,这就很麻烦了,需要改变两个文件里对管脚的定义。为了使改动的地方减少,我意图改为PA11/PB11/PC11中的某个管脚。此时,需要查看单片机的原理图,看哪个管脚是空闲的,同时综合板子上管脚的位置,我选择了改为PC11。修改的程序如下图(.c+.h):
?但这个程序较为麻烦的是,主函数也得改,因为原程序的作用是:开机的时候先检测是否有DHT11存在,如果没有,则提示错误。只有在检测到DHT11之后才开始读取温湿度值,并显示在LCD上,如果发现了DHT11,则程序每隔100ms左右读取一次数据,并把温湿度显示在LCD上。而我的要求是输出到串口处。所以直接将所有LCD输出的句子都删去,改为printf即可。我仔细看了蓝牙模块的程序,主函数里并没有特别的地方,直接用printf就输出到了串口处了。可是这次却不一样,打开手机蓝牙端,没有任何反应。我百度了一下原因, 这个链接给我帮助,意思是printf需要重定向到串口处。我再一次打开蓝牙的keil工程,发现确实勾选“UseMicroLIB”了,所以想试试“Target——Code Generation——选中UseMicroLIB”的办法,结果确实可靠。如下图:
测试的温度湿度准不准是一码事,起码连接和代码是没有问题了~?
嗯,今天就这些。宝宝是纯小白,希望大家指教!?
承接:青岛地区笔记本维修业务,有意者站内信或留言。
下载分14 分
原创币0 点
下载330 次
主题帖子积分
会员等级:
见习维客, 积分 55, 距离下一级还需 15 积分
不错的经验 多谢分享
你也会单片机?&
下载分9506 分
原创币0 点
下载156 次
上传1587 次
主题帖子积分
笔记本维修
不错的经验 多谢分享
你也会单片机?
承接:青岛地区笔记本维修业务,有意者站内信或留言。
高级工程师
高级工程师
Powered by Discuz! X3.4 -ALicensed
& 2017 Comsenz Inc.

我要回帖

更多关于 温湿度监控系统 的文章

 

随机推荐