oled显示怎么设置32大小字体,OLED_showChar函数里的16,24怎么看
本帖最后由 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,OLED_DATA);
OLED_setPos(x,y+1);
for(i=0;i<16;i++)
OLED_writeByte(F16X24,OLED_DATA);
OLED_setPos(x,y+2);
for(i=0;i<16;i++)
OLED_writeByte(F16X24,OLED_DATA);
}
else if(Char_Size ==16)
{
OLED_setPos(x,y);
for(i=0;i<8;i++)
OLED_writeByte(F8X16,OLED_DATA); //一个字符用16个字节来控制
OLED_setPos(x,y+1); //y+1 表示换行,
for(i=0;i<8;i++)
OLED_writeByte(F8X16,OLED_DATA);
}
else
{
OLED_setPos(x+1,y);
for(i=0;i<6;i++)
OLED_writeByte(F6x8,OLED_DATA);
}
}
很好写啊,一个汉字两个字节为8的2倍,所以当==16的时候设置坐标y(上部)y+1(下部)分两块,为24的时候为8的三倍分3块,当然为32的时候就是8的4倍,依次修改函数偏移量就能打出你想要大小的字体,同时要注意屏的尺寸,以免不能完全显示。望采纳 一代睡神的崛起 发表于 2019-3-26 15:52
很好写啊,一个汉字两个字节为8的2倍,所以当==16的时候设置坐标y(上部)y+1(下部)分两块,为24的时候为8 ...
偏移量是什么,比如F16X24代表的是什么意思
页:
[1]