DHT11温湿传感器的C程序
很不错的程序,下面只是其中的一小段程序。 //-------------------------------- //-----湿度读取子程序 ------------ //-------------------------------- //----以下变量均为全局变量-------- //----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //----调用相关子程序如下---------- //---- Delay();, Delay_10us();,COM(); //-------------------------------- void RH(void) { //主机拉低18ms P2_0=0; Delay(180); P2_0=1; //总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); //主机设为输入 判断从机响应信号 P2_0=1; //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P2_0) //T ! { U8FLAG=2;//////////////////////////////////////////////////// //判断从机是否发出 80us 的低电平响应信号是否结束 while((!P2_0)&&U8FLAG++); U8FLAG=2; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((P2_0)&&U8FLAG++); //数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; //数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }//fi }//fi } 《DHT11温湿度传感器的C程序解析》 DHT11是一款常见的温湿度传感器,它能够同时测量环境的温度和湿度,并通过单总线(One-Wire)通信方式将数据传输给微控制器。在C语言编程环境中,与DHT11进行交互通常涉及到特定的读取和解析步骤。本文将深入解析提供的C程序代码,了解如何通过C程序读取DHT11传感器的数据。 程序中涉及的关键硬件连接是P2.0口,它被用作与DHT11的通讯接口。在C程序中,我们看到`P2_0`被定义为一个sbit,即特殊功能位,用于控制与DHT11的通信。程序中的延迟函数如`Delay`、`delay`和`Delay_10us`是实现精确时序控制的重要部分,因为DHT11的数据交换依赖于严格的时序。 在程序中,`RH()`函数是湿度读取子程序,这个函数执行了以下关键步骤: 1. 主机(MCU)首先拉低P2.0口18毫秒,发送启动信号。 2. 接着,P2.0口被设置为高电平,然后等待20微秒的延迟,这是等待DHT11响应的时间。 3. 主机将P2.0设置为输入模式,监听从机(DHT11)的响应。如果从机响应,P2.0口会被拉低,表示数据交换开始。 4. 之后,主机会接收从机发送的5个8位数据:湿度高8位、湿度低8位、温度高8位、温度低8位和一个校验位。每个数据位的读取都包含等待低电平和高电平的过程,以及超时判断,以确保正确读取。 5. 数据接收后,进行校验计算,比较接收到的校验位和根据接收数据计算出的校验值是否一致。如果一致,说明数据传输正确,否则数据可能错误。 在程序中,全局变量如`U8T_data_H`、`U8T_data_L`、`U8RH_data_H`、`U8RH_data_L`和`U8checkdata`分别存储温度和湿度的高低8位数据,以及校验位。而`U8comdata`则用来临时存储每次从DHT11接收到的数据位。 这个C程序实现了DHT11传感器的读取功能,通过精确的时序控制和数据校验,确保了温湿度数据的可靠获取。在实际应用中,开发者可以基于此程序进行扩展,例如将读取到的温湿度数据显示在LCD或者通过无线模块发送出去。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页