u8 DHT11_Read_Data(u8 *temp, u8 *humi) { u8 buf[5]; u8 i; DHT11_RST(); //DHT11端口复位,发出起始信号 if(DHT11_Check() == 0) //等待DHT11回应,0为成功回应 { for(i = 0; i < 5; i++) //读取40位数据 { buf[i] = DHT11_Read_Byte(); //读出数据 } if((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4]) //数据校验 { *humi = buf[0]; //将湿度值放入指针humi *temp = buf[2]; //将温度值放入指针temp } } else return 1; return 0; }如何将指针所指的值转换成u8
时间: 2024-01-29 10:04:49 浏览: 52
要将指针所指的值转换为u8类型,只需要使用解引用运算符 * 即可。比如,如果你有一个指向u8类型数据的指针p,你可以使用以下方式将其所指向的值转换为u8:
```
u8 val = *p;
```
在上面的代码中,val就是p所指向的值。
相关问题
u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]; u8 i; DHT11_Rst(); if(DHT11_Check()==0) { for(i=0;i<5;i++)//¶ÁÈ¡40λÊý¾Ý { 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; return 0; }
这段代码是一个读取DHT11温湿度数据的函数。下面是代码的解释:
```c
u8 DHT11_Read_Data(u8 *temp, u8 *humi)
{
u8 buf[5];
u8 i;
DHT11_Rst(); // 发送复位信号
if (DHT11_Check() == 0) // 检测DHT11响应
{
for (i = 0; i < 5; i++) // 读取40位数据
{
buf[i] = DHT11_Read_Byte();
}
if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4]) // 数据校验
{
*humi = buf[0]; // 湿度数据存储在buf[0]中
*temp = buf[2]; // 温度数据存储在buf[2]中
}
}
else
{
return 1;
}
return 0;
}
```
该函数通过调用`DHT11_Rst()`函数发送复位信号,并调用`DHT11_Check()`函数检测DHT11是否响应。如果DHT11响应,就继续读取40位数据,并进行数据校验。最后将湿度数据存储在`*humi`指向的内存地址中,将温度数据存储在`*temp`指向的内存地址中,返回值为0表示读取成功,为1表示读取失败。注意,在调用该函数之前,需要先定义`DHT11_Rst()`和`DHT11_Check()`函数,它们分别用于发送复位信号和检测DHT11响应。
u8 DHT11_Read_Data(u8 *temp, u8 *humi) { u8 buf[5]; u8 i; DHT11_Rst(); if(DHT11_Check() == 0) { for(i = 0; i < 5; i++) //读取40位数据 { 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; return 0; }解释这些代码意思
这段代码是一个从DHT11传感器读取温度和湿度数据的函数,具体的解释如下:
1. `DHT11_Read_Data` 函数的返回值是一个 `u8` 类型的变量,表示函数执行的结果。如果返回值为0,则表示读取数据成功;如果返回值为1,则表示读取数据失败。
2. `temp` 和 `humi` 是指向 `u8` 类型的指针变量,用于存储读取到的温度和湿度值。
3. `buf` 是一个长度为5的数组,用于存储从DHT11传感器读取的40位数据。
4. `DHT11_Rst()` 函数用于产生复位信号,将DHT11传感器从空闲状态转换为工作状态。
5. `DHT11_Check()` 函数用于检测DHT11传感器是否响应,如果响应则返回0,否则返回1。
6. `DHT11_Read_Byte()` 函数用于从DHT11传感器读取一个字节的数据,读取过程中需要等待一定的时间。
7. 在 `for` 循环中,将40位数据读取到 `buf` 数组中。
8. 在 `if` 语句中,校验读取到的40位数据是否正确,校验方法为将前4个字节相加,如果和等于第5个字节,则表示数据正确。
9. 如果校验通过,则将湿度值和温度值分别存储到 `*humi` 和 `*temp` 中。
10. 最后返回函数执行的结果。
总的来说,这段代码是一个从DHT11传感器读取温度和湿度数据的函数,实现了DHT11传感器数据读取、校验和数据解析等操作。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)