stm32F4使用温湿度传感器模块->DHT11_第1页
stm32F4使用温湿度传感器模块->DHT11_第2页
stm32F4使用温湿度传感器模块->DHT11_第3页
stm32F4使用温湿度传感器模块->DHT11_第4页
stm32F4使用温湿度传感器模块->DHT11_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页stm32F4使用温湿度传感器模块-->DHT11就是雁凌家的模块,测好了,弄了很久吧发现是他们家的杜邦线不行,以后买模块要看杜邦线质量,还是买点好的太耽误开发周期了我们用的模块是四线转三线的(dht11从四线的引脚变成三线的输出)

线路连接dht11有三根线连出来,vcc,gnd,还有一个负责输入和输出所以最后一根线可以连接到没有被占用的gpio口就能获得数据连接到板子的pb2上面程序编写唤醒dht11->检测dht11是否存在->读取数据

唤醒dht11输出低电平20ms再输出高电平30us

//复位DHT11voidDHT11_Rst(void){DHT11_IO_OUT();//设置为输出DHT11_DQ_OUT=0;//拉低DQdelay_ms(20);//拉低至少18msDHT11_DQ_OUT=1;//DQ=1delay_us(30);//主机拉高20~40us}

检测dht11唤醒后dht11会拉低电频40,80us拉低后会再次拉高40~80us

读取数据读取一位数据dht11会拉低电频拉低后会再次拉高,此时就是当时数据位的值,我们进行检测

u8DHT11_Read_Byte(void){u8i,dat;dat=0;for(i=0;i=100)return1;elseretry=0;while(!DHT11_DQ_INdelay_us(1);};if(retry>=100)return1;return0;}

//从DHT11读取一个位//返回值:1/0u8DHT11_Read_Bit(void){u8retry=0;while(DHT11_DQ_INdelay_us(1);}retry=0;while(!DHT11_DQ_INdelay_us(1);}delay_us(40);//等待40usif(DHT11_DQ_IN)return1;elsereturn0;}

//从DHT11读取一个字节//返回值:读到的数据u8DHT11_Read_Byte(void){u8i,dat;dat=0;for(i=0;iMODERGPIOB->MODER|=0MODERGPIOB->MODER|=1<<(2*2);}//PB12输出模式IO操作函数#defineDHT11_DQ_OUTPBout(2)//数据端口PB12#defineDHT11_DQ_INPBin(2)//数据端口PB12u8DHT11_Init(void);//初始化DHT11u8DHT11_Read_Data(u8*temp,u8*humi);//读取温湿度u8DHT11_Read_Byte(void);//读出一个字节u8DHT11_Read_Bit(void);//读出一个位u8DHT11_Check(void);//检测是否存在DHT11voidDHT11_Rst(void);//复位DHT11#endif

main.c

#include"sys.h"#include"delay.h"#include"usart.h"#include"led.h"#include"key.h"#include"lcd.h"#include"sdram.h"#include"dht11.h"#include"pcf8574.h"

intmain(void){u8t=0;u8temperature;u8humidity;HAL_Init();//初始化HAL库Stm32_Clock_Init(360,25,2,8);//设置时钟,180Mhzdelay_init(180);//初始化延时函数uart_init(115200);//初始化USARTLED_Init();//初始化LEDKEY_Init();//初始化按键SDRAM_Init();//初始化SDRAMLCD_Init();//初始化LCDPCF8574_Init();//初始化PCF8574POINT_COLOR=RED;LCD_ShowString(30,50,200,16,16,"ApolloSTM32F4/F7");LCD_ShowString(30,70,200,16,16,"DHT11TEST");LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(30,110,200,16,16,"2023/1/16");PCF8574_ReadBit(BEEP_IO);//由于DHT11和PCF8574的中断引脚共用一个IO,//所以在初始化DHT11之前要先读取一次PCF8574的任意一个IO,//使其释放掉中断引脚所占用的IO(PB12引脚),否则初始化DS18B20会出问题while(DHT11_Init())//DHT11初始化{LCD_ShowString(30,130,200,16,16,"DHT11Error");delay_ms(200);LCD_Fill(30,130,239,130+16,WHITE);delay_ms(200);}LCD_ShowString(30,130,200,16,16,"DHT11OK");POINT_COLOR=BLUE;//设置字体为蓝色LCD_ShowString(30,150,200,16,16,"Temp:C");LCD_ShowString(30,170,200,16,16,"Humi:%");while(1){if(t%10==0)//每100ms读取一次{PCF8574_ReadBit(BEEP_IO);//读取一次PCF8574的任意一个IO,使其释放掉PB12引脚,//否则读取DHT11可能会出问题DHT11_Read_Data(//读取温湿度值LCD_ShowNum(30+40,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论