当前位置:首页 > 单片机 > 单片机
[导读]#include "typedef.h"#include #include "TemDHT11.h"#ifndef _DHT11_TYPE#define _DHT11_TYPE//连接端口#define DHT11_DirP2DIR#define DHT11_InP2IN#define DHT11_OutP2OUT#define DHT11_BitBIT4#endif//8bit湿度+

#include "typedef.h"
#include
#include "TemDHT11.h"

#ifndef _DHT11_TYPE
#define _DHT11_TYPE

//连接端口
#define DHT11_DirP2DIR
#define DHT11_InP2IN
#define DHT11_OutP2OUT
#define DHT11_BitBIT4
#endif


//8bit湿度+8bit湿度小数点
//8bit温度+8bit温度小数点
//数据位为0是高电平26~28us | 1高电平70us

u8 DHT11_Data[5] = {0}; //从DHT11中读到的数据

void read_DHT11(u8 *Data)
{
u8 re,m,n,Time_out;
DHT11_Dir &= (~DHT11_Bit);//引脚为输入
for(n = 0; n < 5; n++)
{
for(m = 0; m < 8; m++)
{
while( !(DHT11_In & DHT11_Bit) );//每1bit以50us低电平时限开始,直到高电平到来
delay_us(30);
re = 0;
if((DHT11_In & DHT11_Bit))//30us后还是高电平说明是1
{
re = 1;
}
Time_out = 2;
while((DHT11_In & DHT11_Bit) && (Time_out++ ));
if(Time_out == 1)//超时处理
{
break;
}
*Data <<= 1;
if(re)
{
*Data |= 0x01;
}
}
Data++;
}
}

//DHT11的握手协议模拟和数据的读取
u8 DHT11_GetData(void)
{
u8 o,sum;
DHT11_Dir |= DHT11_Bit;
DHT11_Out &= ~DHT11_Bit;//拉低,发出开始信号

delay_ms(18);//拉低18ms
DHT11_Out |= DHT11_Bit;//拉高20us等待
delay_us(20);
DHT11_Dir &= (~DHT11_Bit);
if( !(DHT11_In & DHT11_Bit) )//DHT11响应
{
while( !(DHT11_In & DHT11_Bit) );//80us低电平,等待DHT11的响应信号
while( (DHT11_In & DHT11_Bit) );//DHT11准备发送数据
read_DHT11(DHT11_Data);//主机接收数据
sum = 0;
for(o = 0; o < 4; o++)//数据校验
{
sum += DHT11_Data[o];
}
if(sum != DHT11_Data[4])
{
return 0;
}
else
{
return 1;
}
}
return 0;
}

//对温度湿度进行格式化(如果获取温度成功)
void DHT11_format(char *Des_str)
{
Des_str[0] = DHT11_Data[0]/10 + 0x30;
Des_str[1] = DHT11_Data[0] + 0x30;
Des_str[2] = '.';
Des_str[3] = DHT11_Data[1]/10 + 0x30;
Des_str[4] = DHT11_Data[1] + 0x30;
Des_str[5] = '%';
Des_str[6] = ' ';
Des_str[7] = DHT11_Data[2]/10 + 0x30;
Des_str[8] = DHT11_Data[2] + 0x30;
Des_str[9] = '.';
Des_str[10] = DHT11_Data[3]/10 + 0x30;
Des_str[11] = DHT11_Data[3] + 0x30;
Des_str[12] = 'C';
Des_str[13] = 0;
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

我很高兴与您分享我的最新项目:我使用XIAO ESP32C6, XIAO扩展板和SHT31温湿度传感器构建的DIY温湿度计。我的目标是创造一种设备,可以帮助我监测家里的湿度水平,特别是因为我住在沿海热带地区,那里的湿度波...

关键字: ESP32C6 SHT31 温湿度传感器 温湿度计

本文将演示一种加速嵌入式系统设计原型阶段的方法,说明如何将与硬件无关的驱动程序和传感器结合使用,简化整个嵌入式系统的器件选择。同时还将介绍嵌入式系统的器件、典型软件结构以及驱动程序的实现。后续文章“利用与硬件无关的方法简...

关键字: 嵌入式系统 驱动程序 传感器

随着科技的飞速发展,嵌入式系统已经成为现代生活不可或缺的一部分,它们被广泛应用于从智能家居到自动驾驶汽车的各个领域。而在这些系统中,C语言由于其高效性、可移植性和对硬件的直接控制能力,成为了嵌入式系统开发的首选语言。

关键字: C语言 驱动程序

数据是任何分析和预测的关键资源。它总是需要创建任何信息或统计。有很多在线和离线平台可用于记录数据,我们已经使用了许多基于物联网的平台和web服务器来存储和可视化数据。这里我们使用最流行的离线方式来存储数据,这是- SD卡...

关键字: 物联网 Arduino SD卡 温湿度传感器

每个嵌入式软件应用程序都必须在某个时候访问最低级别的固件并控制硬件。驱动程序的设计和实现对于确保系统能够满足其实时要求至关重要。

关键字: 嵌入式 驱动程序

在Linux内核开发中,字符设备驱动程序是连接硬件设备与用户空间应用程序的重要桥梁。本文将详细介绍如何编写一个基本的字符设备驱动程序,从理论框架到实际代码实现,再到测试和部署。

关键字: Linux 字符设备 驱动程序

USB摄像头是一种采用USB接口的视频采集设备,其优点在于即插即用、操作简便,无需额外驱动程序,支持笔记本电脑,并且成本较低,可以支持远程网络观看。

关键字: usb摄像头 驱动程序

传感器的DATA口需要接4.7K的上拉电阻。上拉电阻的作用是在单片机不进行输出以及传感器待机时,使得DATA口为高电平,当总线闲置时, 其状态为高电平。

关键字: dht11 温湿度传感器 上拉电阻

与两相双极步进电机的驱动电路相比,两相单极步进电机的驱动电路在输入段配置、内部逻辑及控制电路和驱动电路使用双通道方面基本相同,但是输出段的配置不同。

关键字: 四相步进电机 驱动程序 程序电路

本文介绍了如何实现嵌入式MICREL网卡的驱动程序开发和设计。首先,我们介绍了MICREL网卡的概述和工作原理。然后,详细探讨了驱动程序的开发流程,包括硬件和软件的配置以及驱动程序的编写和测试。最后,总结了几点注意事项和...

关键字: 嵌入式 MICREL网卡 驱动程序
关闭