STM32LCD显示汉字
不能字符串显示,毕竟不是存了字库,只能显示单个汉字,这种需要我们自己去取模,然后存放到数组,基于正点原子的例程改的,要注意的是一个汉字在数组中全部数据是全存在一起的,如下,size=24,一个汉字字节长度为72,size=16,一个汉字字节长度为32,由u8 csize=(size/8+((size%8)?1:0))(size)这个式子给出
const unsigned char hz32[30][72]={
{
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x07,0x04,0x00,0x19,0x08,0x00,0x71,
0x18,0x00,0x11,0x30,0x00,0x13,0xE7,0xFC,0x1F,0x44,0x88,0x11,0x44,0x88,0x11,0x24,
0x88,0x11,0x3C,0x88,0x01,0x14,0x88,0x01,0x04,0x88,0x1F,0xFC,0x88,0x10,0x24,0x88,
0x10,0x24,0x88,0x10,0x27,0xFE,0x10,0x24,0x0C,0x10,0x20,0x00,0x1F,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/“智”,0,size = 24*/
},
{
0x00,0x02,0x00,0x0C,0x3F,0xF1,0x24,0x01,0x24,0x21,0x24,0x32,0x3F,0xAA,0xA4,0xA4,
0x64,0xA4,0x24,0xA4,0x3F,0xAA,0x24,0x32,0x24,0x01,0x24,0x01,0x20,0x01,0x00,0x00
/*“度”,2,size =16 */
}
};
//显示一个指定大小的汉字
//x,y :汉字的坐标
//index:汉字在数组中的位置
//size:字体大小
//pointcolor:画笔颜色
//backcolor:背景颜色
//mode:0,正常显示,1,叠加显示
void Show_Chinese32(u16 x,u16 y,u16 index,u8 size,u16 pointcolor,u16 backcolor,u8 mode)
{
u8 temp,t,t1;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size); //一个汉字数据字节数,直接存就可比如size=24一个汉字是{72数据},16是32
for(t=0;t<csize;t++)
{
temp=hz32[index][t]; //得到点阵数据
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,pointcolor);
else if(mode==0)
LCD_Fast_DrawPoint(x,y,backcolor);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
取模软件是PCtoLCD2002
设置,这里数据记得自己加{}分开每个汉字
源文件:https://pan.baidu.com/s/1Q_L8yMrBxH12AeQTlCbVdA
提取码:z1ia