怎么将从DS18B20提取出来的温度变成ASCII码?
代码如下,如有帮助,请采纳一下,谢谢。
#include<stdio.h>
int main()
{
int n;
char buf[4] = {0};
printf("int值:");
scanf("%d",&n);
sprintf_s(buf,4,"%x",n);
printf("ascii码:%s\n",buf);
return 0;
}
这个是我之前写过的温度读取转化成浮点数,在ttt中返回,然后加一个sprintf(data,"%.2f",ttt);就可以转化成字符串了
bool get_temputer(float* ttt) //读取温度值
{
uint8_t sign; /* 温度值为正或负 */
unsigned char TL,TH;
unsigned int tmp;
float t = 0;
if(init_1820()==0) //复位18b20
{
return false;
}
write_1820(0xcc); // 发出转换命令
write_1820(0x44);
ds_delay_ms(800); //不延时也好使,不知道怎么回事!
if(init_1820()==0) //复位18b20
{
return false;
}
write_1820(0xcc); //发出读命令
write_1820(0xbe);
TL=read_1820(); //读数据
TH=read_1820();
if(TH>7) /* 高5位为1,说明温度为负 */
{
tmp = ~(TH<<8|TL) + 1; //补码
sign=1;//温度为负
}
else
{
sign=0;//温度为正
tmp = TH<<8 | TL;
}
if(sign)
t=-(tmp*0.0625);
else
t=(tmp*0.0625);
//printf("gettemp:[%d][%d][%f]\r\n",TH,TL,t);
*ttt=t;
return true;
}