|
void print(float num)
{
u8 tmp[2];
u8 i = 0;
u16 s = 0;
// float s = 0;
// sprintf(tmp,"%06.2f",num);
// s = atof(tmp);
s = (u16)(num*100);
tmp[0] = s>>8&0xff;
tmp[1] = s&0xff;
for(i=0;i<2;i++)
{
while(USART_GetFlagStatus(USART2 , USART_FLAG_TC) != SET)
{
}
USART_SendData(USART2,tmp);
}
}
void SendTemperature(float* Max1,float* Min1,u8 location)
{
u8 i = 0;
u8 tmp[2];
location -= 0x30;
if(location>=1&&location<=8)
{
print(Max1[location-1]);
print(Min1[location-1]);
print((Max1[location-1]+Min1[location-1]));
tmp[0] = (u16)(Max1[location-1]*100)>>8 &0xff;
tmp[1] = (u16)(Max1[location-1]*100)&0xff;
for(i=0;i<2;i++)
{
printf("%X",tmp);
}
tmp[0] = (u16)(Min1[location-1]*100)>>8&0xff;
tmp[1] = (u16)(Min1[location-1]*100)&0xff;
for(i=0;i<2;i++)
{
printf("%X",tmp);
}
tmp[0] = (u16)((Max1[location-1]+Min1[location-1])*100)>>8&0xff;
tmp[1] = (u16)((Max1[location-1]+Min1[location-1])*100)&0xff;
for(i=0;i<2;i++)
{
printf("%X",tmp);
}
printf("\r\n");
}
}
Max1,Min1都是两位小数的float类型的数据,如90.12,但是求和就会少0.01.求大神支招。 |
|