分享一个DHT11的温湿度测量程序和数字温湿度传感器DHT11技术手册.pdf
单片机源程序如下:
- #include<stm32f10x.h>
- #include<SysTick.h>
- #include<GPIO.h>
- #include<DHT11.h>
- /*复位DHT11*/
- void Init_Dht11()
- {
- /*设置GPIO为输出口*/
- Gpio_Config_Mode_Out();
- /*拉低总线*/
- DHT11_DQ_OUT_Low;
- /*延迟18US*/
- Delay_us(18);
- /*复位总线*/
- DHT11_DQ_OUT_High;
- /*设置GPIO为输入口*/
- Gpio_Config_Mode_In();
- /*等待复位信号*/
- while(DHT11_DQ_IN);
- /*等待高电平*/
- while(!DHT11_DQ_IN);
- /*等待低电平 准备输出*/
- while(DHT11_DQ_IN);
- }
- /*读一个字节*/
- u8 Read_One_Byte()
- {
- u8 i=0;
- u8 a=0x01;
- u8 b=0;
- for(i=0;i<8;i++)
- {
- /*设置GPIO为输入口*/
- Gpio_Config_Mode_In();
- /*等待高电平*/
- while(!DHT11_DQ_IN);
- /*延迟30us*/
- Delay_us(30);
- if(DHT11_DQ_IN==1)
- {
- b=b<<1;
- b=b|a;
- /*等待低电平*/
- while(DHT11_DQ_IN);
- }
- else
- {
- b=b<<1;
- }
- }
- return(b);
- }
- u16 Read()
- {
- u8 a=0;
- u8 b=0;
- u8 c=0;
- u16 d=0;
- /*复位DHT11*/
- Init_Dht11();
- /*读出整数部分*/
- a=Read_One_Byte();
- /*读出小数部分*/
- b=Read_One_Byte();
- /*读出整数部分*/
- c=Read_One_Byte();
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
DHT11驱动.rar
(2.17 MB, 下载次数: 22)
|