笔者用的开发环境是正点原子的stm32 mini 版本,其中需要用到lcd显示中文,正点原子的例程上的字体显示得太小了,于是自己根据例程来写一个可以显示大点字体的函数。
1、首先打开取模软件pctolcd2002,选好字体并做相应设置,笔者想显示32 x 32 的字体,于是设置汉字点阵宽高都为32,字宽和字高也是32,如下图
32
2、设置输出,如图
接着输入要显示的字体,并点击生成字模
3、接着对生成的字模做处理,如下图:
这是软件生成的原字模:
处理后的字模
处理其实就是将它用{}把一个字的字模单独括起来,然后将字模在工程文件中定义
因为32X32的每个字占128个字节,所以数组后面是128。
4、定义使用32×32字体的函数
//x,y屏幕的位置
//index,字所在数组的位置,在本例中“你”就是0,“好”为1
//font_color 字的颜色
//back_color 背景颜色
void LCD_ShowTitle(u16 x,u16 y,u8 index,u16 font_color,u16 back_color)
{
u8 temp,t,t1,size = 32;
u16 y0=y;
u8 csize= (size*size - 64)/8;//得到字体一个字符对应点阵集所占的字节数
for(t=0;t<csize;t++)
{
temp=a[index][t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,font_color);
else LCD_Fast_DrawPoint(x,y,back_color);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0; x++;
break;
}
}
}
}
5、调用
LCD_ShowTitle(20,20,0,0xFFFF,0x0000);
如需要显示其他字体大小的,直接修改字模然后调用此函数,修改 函数里的size的值即可。
ps:当字体设置过大时函数可能会失效,目前笔者显示48×48的字体时就失效了,如有读者发现问题敬请指正
版权声明:本文为eachanm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。