unsigned char tempt[]=""; unsigned char i,j; while(1) { temp=ReadTemperature(); init_lcd(); write_cmd(0x80); // 设置光标位置为第一行第一列 for(i=0;i<13;i++) { write_data(tempt[i]); } } 我想要将我读到的temp的值转换成char类型然后存到tempt里面
时间: 2023-12-05 14:03:27 浏览: 51
好的,根据你提供的代码,你需要将读取到的温度值转换成字符类型并存储到tempt数组中。你可以通过以下代码实现:
```
// 假设读取到的温度值为float类型,例如23.5
float temp = ReadTemperature();
// 将温度值转换成字符类型,存储到tempt数组中
sprintf((char *)tempt, "%.1f", temp);
```
这里使用了sprintf函数,可以将浮点类型的温度值转换成字符类型,并存储到tempt数组中。其中"%.1f"表示保留1位小数,可以根据需要进行修改。需要注意的是,tempt数组的长度需要足够存储转换后的字符类型温度值,否则可能会出现溢出问题。
相关问题
unsigned int temp=0; unsigned char tempt[]=""; unsigned char i,j; while(1) { temp=ReadTemperature(); sprintf((char *)tempt, "%.1f", temp); init_lcd(); write_cmd(0x80); // 设置光标位置为第一行第一列 for(i=0;i<13;i++) { write_data(tempt[i]); } } 我想要将我读到的temp的值转换成char类型然后存到tempt里面,请给我写出详细的代码
好的,请参考下面的代码:
```
#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;
}
```
这段代码中,我们定义了一个足够大的tempt数组来存储转换后的温度值。在while循环中,我们首先调用ReadTemperature()函数读取温度值,然后使用sprintf()函数将其转换成字符类型,并存储到tempt数组中。接着,我们调用init_lcd()函数初始化lcd屏幕,将光标位置设置为第一行第一列,并使用for循环将tempt数组中的字符逐个写入lcd屏幕中。需要注意的是,这里使用了strlen()函数获取tempt数组的长度,避免了可能出现的溢出问题。
void Init_DS18B20(void) { unsigned char x=0; DQ = 1; Delayns(8); DQ = 0; Delayns(80); DQ = 1; Delayns(14); x=DQ; Delayns(20); } unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for(i=0;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat |= 0x80; Delayns(4); } return(dat); } void WriteOneChar(unsigned char dat) { unsigned char i=0; for(i=0;i>0;i--) { DQ = 0; DQ = dat&0x01; Delayns(5); DQ = 1; dat>>=1; } } unsigned int ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt = 0; Init_Ds18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0625; t=tt*10+0.5; return(t); }
这段代码是使用单总线DS18B20温度传感器读取温度的代码,具体的函数包括:
1. Init_DS18B20():初始化DS18B20传感器,包括发送复位信号,等待一定时间,读取DS18B20的响应等。
2. ReadOneChar():读取单总线上DS18B20传感器发送的数据。
3. WriteOneChar():向单总线上的DS18B20传感器写入数据。
4. ReadTemperature():读取DS18B20传感器的温度数据,并计算出对应的温度值。
其中,Init_DS18B20() 和 ReadOneChar() 函数用来实现单总线通信协议,WriteOneChar() 用来向DS18B20传感器写入指令,ReadTemperature() 则用来读取DS18B20传感器的温度数据,并进行相关的计算,得到对应的温度值。
阅读全文