#include <stdio.h>#include <stdlib.h>#include <string.h>unsigned int ReadTemperature(); // 假设有一个函数可以读取温度值int main() { unsigned int temp = 0; unsigned char tempt[15] = ""; // 定义一个足够大的数组来存储转换后的温度值 unsigned char i, j; while (1) { temp = ReadTemperature(); sprintf((char *)tempt, "%.1f", temp); // 将温度值转换成字符类型,并存储到tempt数组中 init_lcd(); write_cmd(0x80); // 设置光标位置为第一行第一列 for (i = 0; i < strlen((char *)tempt); i++) { write_data(tempt[i]); // 逐个将tempt数组中的字符写入lcd屏幕中 } } return 0;}为什么我的值一直是0.0,请帮我修改
时间: 2024-03-05 17:47:59 浏览: 76
根据你提供的代码,我们可以初步判断问题可能出在ReadTemperature()函数上。你需要检查该函数的实现,确保其能够正确地读取温度值。同时,你也可以尝试在主函数中手动赋值给temp变量,查看是否能够正确地将其转换成字符类型并显示在LCD屏幕上。以下是一份示例代码,供你参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int ReadTemperature() {
return 235; // 假设温度值为235
}
int main() {
unsigned int temp = 0;
unsigned char tempt[15] = ""; // 定义一个足够大的数组来存储转换后的温度值
unsigned char i, j;
while (1) {
// temp = ReadTemperature();
temp = 235; // 手动赋值
sprintf((char *)tempt, "%.1f", (float)temp / 10); // 将温度值转换成字符类型,并存储到tempt数组中
init_lcd();
write_cmd(0x80); // 设置光标位置为第一行第一列
for (i = 0; i < strlen((char *)tempt); i++) {
write_data(tempt[i]); // 逐个将tempt数组中的字符写入lcd屏幕中
}
}
return 0;
}
```
在这份示例代码中,我们手动将temp变量赋值为235,然后将其转换成字符类型并存储到tempt数组中。需要注意的是,我们将temp除以10再转换成字符类型,这是因为你在sprintf()函数中使用了"%.1f"格式化字符串,表示保留1位小数。如果你的温度值是整型,你需要将其除以10,以保证显示的温度值正确。
如果你的程序能够正常运行并显示温度值,那么问题就很可能出在ReadTemperature()函数上,你需要检查其实现。如果还有问题,可以继续提供更多信息,我们一起来排查。
阅读全文