在函数void main(void)增加代码实现以下功能:(7分)①正确调用sh10.c里的call_sht11函数,完成温湿度数据采集;②根据考试资源目录下的“1.通讯协议”的485通信协议.docx里的报文协议,将采集到的温度、湿度数据正确填写到发送数组Tx_Buff里。
时间: 2023-09-11 09:05:09 浏览: 81
### 回答1:
下面是实现功能的代码:
```c
#include <stdio.h>
#include "sh10.h"
#define ADDR 0x01 // 设备地址
#define CMD_TEMP 0x03 // 温度命令
#define CMD_HUMI 0x05 // 湿度命令
unsigned char Tx_Buff[8] = {0}; // 发送数组
void main(void)
{
unsigned char data[4] = {0};
float temp, humi;
call_sht11(data); // 调用采集函数
// 将数据转为浮点数
temp = (float)(((unsigned int)data[0] << 8) | data[1]);
temp = -39.70 + 0.01 * temp;
humi = (float)(((unsigned int)data[2] << 8) | data[3]);
humi = -4 + 0.0405 * humi - 2.8e-6 * humi * humi;
// 填写发送数组
Tx_Buff[0] = ADDR;
Tx_Buff[1] = CMD_TEMP;
Tx_Buff[2] = (unsigned char)(temp / 256);
Tx_Buff[3] = (unsigned char)(temp % 256);
Tx_Buff[4] = (unsigned char)(humi / 256);
Tx_Buff[5] = (unsigned char)(humi % 256);
// 发送数组
// ...
}
```
其中,`call_sht11()`函数是采集温湿度数据的函数,`data`数组存储采集到的原始数据。将原始数据转为浮点数后,填写到发送数组`Tx_Buff`中,再根据实际情况发送数组即可。
### 回答2:
在函数void main(void)中增加以下代码实现所需功能:
首先,在代码中引入sh10.c文件,以便调用其中的call_sht11函数。可以通过以下方式实现:
#include "sh10.c"
然后,在调用call_sht11函数之前,在主函数中定义变量来存储获取的温度和湿度数据。可以使用如下代码:
float temperature;
float humidity;
接下来,在主函数中调用call_sht11函数,将获取的温度和湿度数据存储到上述定义的变量中。可以使用如下代码实现:
call_sht11(&temperature, &humidity);
最后,根据参考的485通信协议文档中的报文协议,在发送数组Tx_Buff里填写采集到的温度和湿度数据。假设数组Tx_Buff已经在代码中定义并初始化,可以使用如下代码实现:
Tx_Buff[0] = (unsigned char)temperature;
Tx_Buff[1] = ((unsigned char)(temperature*10)) % 10;
Tx_Buff[2] = (unsigned char)humidity;
Tx_Buff[3] = ((unsigned char)(humidity*10)) % 10;
这样,就可以在主函数中正确调用sh10.c里的call_sht11函数,完成温湿度数据采集,并将数据正确填写到发送数组Tx_Buff里。
### 回答3:
要在函数void main(void) 中实现以上功能,我们需要进行以下步骤:
1. 在程序开头引入sh10.c 的头文件。在main函数之前添加以下代码:
```c
#include "sh10.c"
```
2. 在main函数中,正确调用sh10.c里的call_sht11函数,完成温湿度数据采集。具体代码如下:
```c
int main(void) {
/* 其他代码 */
// 调用call_sht11函数进行温湿度数据采集
call_sht11();
/* 其他代码 */
}
```
3. 根据考试资源目录下的“1.通讯协议”的485通信协议.docx里的报文协议,将采集到的温度、湿度数据正确填写到发送数组Tx_Buff里。具体代码如下:
```c
int main(void) {
/* 其他代码 */
// 调用call_sht11函数进行温湿度数据采集
call_sht11();
// 将采集到的温度、湿度数据填写到发送数组Tx_Buff
Tx_Buff[2] = temperature >> 8; // 将温度的高字节存入Tx_Buff的第三个元素
Tx_Burff[3] = temperature & 0xFF; // 将温度的低字节存入Tx_Buff的第四个元素
Tx_Buff[4] = humidity >> 8; // 将湿度的高字节存入Tx_Buff的第五个元素
Tx_Burff[5] = humidity & 0xFF; // 将湿度的低字节存入Tx_Buff的第六个元素
/* 其他代码 */
}
```
以上代码假设温度数据存储在变量temperature中,湿度数据存储在变量humidity中。根据具体情况,请将采集到的温度、湿度数据存储到相应变量中,并修改上述代码中的变量名。