天耀中华 发表于 2024-1-6 10:57:48

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;
    }
}

天耀中华 发表于 2024-1-6 11:00:02

利用sprintf()函数的不需要再做多余的数据格式转换了,直接将浮点数据,打印到char类型的数组,这里一定要逐一,是char类型的数据

天耀中华 发表于 2024-1-6 11:01:13

sprintf()函数的强大已足够,不需要再做多余的数据格式转换了,将浮点数直接转换后,存放在char类型的数组中,注意,一定是char类型的数组中
页: [1]
查看完整版本: RT_thread系统中驱动OLED显示浮点型数据的函数