请选择 进入手机版 | 继续访问电脑版
查看: 115|回复: 3

[求助] oled显示怎么设置32大小字体,OLED_showChar函数里的16,24怎么看

[复制链接]

该用户从未签到

54

主题

151

帖子

3

蝴蝶豆

高级会员

最后登录
2019-4-15
发表于 2019-3-26 14:36:08 | 显示全部楼层 |阅读模式
本帖最后由 p13692166934 于 2019-3-28 19:58 编辑

这个是我网上找的代码,只有8,16,24字体,发现24还是太小,想自己写一个32的,但是看不懂代码的含义,看起来像是取字模复制过来显示的,但是不清楚显示原理,我都是直接复制粘贴然后看注释套用,自己看就坑了
/*******************************************************************************
* 函数名:OLED_showChar
* 功能描述:在指定位置显示一个字符,包括部分字符
* 参数说明:  
*   在指定位置显示一个字符,包括部分字符
*   x:0~127
*   y:0~63
*   mode:0,反白显示;1,正常显示     
*   size:选择字体 24/16/12
* 返回值说明:none
* 修改记录:
*******************************************************************************/
void OLED_showChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t Char_Size)
{      
  uint8_t c=0,i=0;
  c=chr-' ';//得到偏移后的值   
  if(x>MAX_COLUMNC-1)
  {
    x=0;
    y=y+2;  //这个要优化,根据字体的不同来换行
  }
  if(Char_Size == 24)
  {
    OLED_setPos(x,y);
    for(i=0;i<16;i++)
      OLED_writeByte(F16X24[c*48+i],OLED_DATA);
    OLED_setPos(x,y+1);
    for(i=0;i<16;i++)
      OLED_writeByte(F16X24[c*48+i+16],OLED_DATA);
  OLED_setPos(x,y+2);
    for(i=0;i<16;i++)
      OLED_writeByte(F16X24[c*48+i+16*2],OLED_DATA);
  }
  else if(Char_Size ==16)
  {
    OLED_setPos(x,y);
    for(i=0;i<8;i++)
      OLED_writeByte(F8X16[c*16+i],OLED_DATA); //一个字符用16个字节来控制
    OLED_setPos(x,y+1); //y+1 表示换行,
    for(i=0;i<8;i++)
      OLED_writeByte(F8X16[c*16+i+8],OLED_DATA);
  }

  else
  {
    OLED_setPos(x+1,y);
    for(i=0;i<6;i++)
      OLED_writeByte(F6x8[c],OLED_DATA);
  }
}


回复

使用道具 举报

该用户从未签到

12

主题

437

帖子

34

蝴蝶豆

金牌会员

最后登录
2019-4-25
发表于 2019-3-26 15:52:58 | 显示全部楼层

回帖奖励 +2 ST金币

很好写啊,一个汉字两个字节为8的2倍,所以当==16的时候设置坐标y(上部)y+1(下部)分两块,为24的时候为8的三倍分3块,当然为32的时候就是8的4倍,依次修改函数偏移量就能打出你想要大小的字体,同时要注意屏的尺寸,以免不能完全显示。望采纳

评分

参与人数 2ST金币 +5 蝴蝶豆 +2 收起 理由
STMCU + 2
p13692166934 + 5 虽然不能解决,但提供了一个思路.

查看全部评分

回复 支持 1 反对 0

使用道具 举报

该用户从未签到

54

主题

151

帖子

3

蝴蝶豆

高级会员

最后登录
2019-4-15
 楼主| 发表于 2019-3-27 08:44:48 | 显示全部楼层
一代睡神的崛起 发表于 2019-3-26 15:52
很好写啊,一个汉字两个字节为8的2倍,所以当==16的时候设置坐标y(上部)y+1(下部)分两块,为24的时候为8 ...

偏移量是什么,比如F16X24[c*48+i+16*2]代表的是什么意思

点评

这是根据你打点的阵列排成的数据取样到数组,这得根据你手册上的显示说明进行参考  发表于 2019-3-27 11:00
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2019-4-26 10:52 , Processed in 0.076918 second(s), 16 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表