RT_thread系统中驱动OLED显示浮点型数据的函数
/***************************************************************** void OLED_ShowFNum()显示任意浮点数,参考中景园OLED_ShowNum()函数
* x , y :起点坐标
* Fnum:要显示的浮点数
***************************************************************/
void OLED_ShowFNum(rt_uint8_t x,rt_uint8_t y,float Fnum)
{
char Data= " "; //创建目标数组,用来存放转换后的字符数据
sprintf(Data,"%.1f",Fnum); //保留小数点后1位小数,打印到Data数组中
OLED_ShowStr(x,y,Data); //调用OLED字符串显示函数,在OLED屏上显示
}
OLED_ShowStr函数
/* **********************************
* x,y--起始点坐标;ch【】--为要显示的字符 ;TextSize--字符大小(1:6*8 ;2:8*16)
* ***********************************/
void OLED_ShowStr(rt_uint8_t x,rt_uint8_t y,char ch[],unsigned char TextSize)
{
rt_uint8_t c=0;
rt_uint8_t i=0;
rt_uint8_t j= 0;
switch(TextSize)
{
case 1:
{
while(ch != '\0')
{
c = ch - 32;
if(x > 126)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
for(i=0;i<6;i++)
WriteDat(iic_1,F6x8);
x += 6;
j++;
}
}break;
case 2:
{
while(ch != '\0')
{
c = ch - 32;
if(x > 126)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
for(i=0;i<8;i++)
WriteDat(iic_1,F8X16);
OLED_SetPos(x,y+1);
for(i=8;i<16;i++)
WriteDat(iic_1,F8X16);
x +=8;
j++;
}
}break;
}
}
利用sprintf()函数的不需要再做多余的数据格式转换了,直接将浮点数据,打印到char类型的数组,这里一定要逐一,是char类型的数据 sprintf()函数的强大已足够,不需要再做多余的数据格式转换了,将浮点数直接转换后,存放在char类型的数组中,注意,一定是char类型的数组中
页:
[1]