金牌会员
 
- 积分
- 1073
- 金钱
- 1073
- 注册时间
- 2017-6-10
- 在线时间
- 279 小时
|
本帖最后由 rjx007 于 2018-1-5 10:41 编辑
我们可能需要显示不同大小的字符,用以下介绍的方法就可以很容易实现:
一、显示子函数,以显示48x48的汉字和24x48的英文字符和数字为例:
//显示48*48的汉字
void OLED_ShowCHinese48(u8 x,u8 y,u8 no)
{
u8 t, i;
for (i = 0; i < 6; i++) //6是什么意思?48是字符高度为48个点,OLED屏分为8页(就是8行),每页8个点,所以48/8=6
{
OLED_Set_Pos(x, y + i);
for(t = 0; t < 48; t++) //48是什么?字符的宽度为48个点。
{
OLED_WR_Byte(Hzk48[no][48 * i + t],OLED_DATA);
}
}
}
//显示24*48的英文字符和数字
void OLED_ShowAsc48(u8 x,u8 y,u8 no)
{
u8 t, i;
for (i = 0; i < 6; i++) //6是什么意思?48是字符高度为48个点,屏分为8页(就是8行),每页8个点,48/8=6
{
OLED_Set_Pos(x, y + i);
for(t = 0; t < 24; t++) //24是什么?是英文字符和数字字符的宽度
{
OLED_WR_Byte(asc48[no][24 * i + t],OLED_DATA);
}
}
}
要显示不同大小的字符,只要修改上面代码中的循环参数就可以了,外循环是字符的高度,内循环是字符的宽度!
二、字符的取模方法:
各种显示函数对应的字符取模方式可能不一样,这点要注意,不然移植别人的代码可能不能正常显示。
以上代码取模使用的PCtoLCD2002完美版,取模方式见下面的图:
三、取模后建立数组时用二维数组,数组内每个字符的所有十六进制码用一个花括号括起来。
如:24X48的字符数组:
const unsigned char asc48[][144]={
{。。。。。。。36个},
{。。。。。。。36个},
{。。。。。。。36个},
{。。。。。。。36个} /*“A”,0*/{。。。。。。。36个},
{。。。。。。。36个},
{。。。。。。。36个},
{。。。。。。。36个},
{。。。。。。。36个} /*B”,1*/
};
|
-
-
|