本文章通过正点原子的视频改动LCD_ShowChar函数,通过PCtoLCD2002取模,实现显示任意大小字符。
下面以‘人’为例,通过PCtoLCD2002取模:
按照正点原子下的LCD例程设设置PCtoLCD2002
以16*16的‘人’进行取模
取的数组为(2字节*16==32字节)
uint8_t ren[32] = {0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0xC0,0x03,0x00,0xFC,0x00,0x03,0x00,0x00,0xC0,0x00,0x30,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00};
改装LCD_ShowChar(可以对比原来函数观察差异)
void LCD_ShowChinese(u16 x,u16 y,u8 *num,u8 size,u8 mode)
{
u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size); //得到字体一个字符对应点阵集所占的字节数
for(t=0;t<csize;t++)
{
temp=num[t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
y++;
if(y>=lcddev.height)return; //超区域了
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)return; //超区域了
break;
}
}
}
}
使用LCD_ShowChinese函数(记得把数组放在同一.c下)
LCD_ShowChinese(30,150,ren,16,0);
实验现象: