1.LCD汉字显示是通过汉字取模软件将汉字转换成十六进制二维数组,控制LCD点阵的亮暗显示汉字。
2。这里所用的汉字取模软件是pctolcd2002
3.pctolcd2002的使用:
3. 1.选择模式为字符模式 3.2.选择选项配置 一般配置如图,每行点阵显示数调到最高,可使每行数组表示一个汉字。
3.3.上述配置完成后可在生成字模框中生成字模,并且可以调节字宽与字高,如图
4.代码实现
4.1,LCD驱动中的汉字显示函数(请确保LCD其他配置正确)
//在指定位置显示一个汉字 //x,y:起始坐标 //num:要显示的汉字数组的初始下标 //snum:要显示的汉字个数 //size:字体大小 12/16/24 //mode:叠加方式(1)还是非叠加方式(0) void LCD_ShowChinese2(u16 x,u16 y,u8 num,u8 snum,u8 size,u8 mode) { u8 csize; u8 temp,t1,t,t2; u16 y0=y; csize=(2*(size/8+((size%8)?1:0))*(size/2)); //得到字体一个字符对应点阵集所占的字节数 for(t2=0;t2<snum;t2++) { for(t=0;t<csize;t++) { if(size==12)temp=chinese_12[num+t2][t]; //调用1206字体 else if(size==16)temp=chinese_16[num+t2][t]; //调用1608字体 else if(size==24)temp=chinese_24[num+t2][t]; //调用2412字体 else return; //没有的字库 for(t1=0;t1<8;t1++) { if(temp&0x80)LCD_Fast_DrawPoint(x,y,TextColor); else if(mode==0)LCD_Fast_DrawPoint(x,y,BackColor); temp<<=1; y++; if(y>=TFT_Height)return; //超区域了 if((y-y0)==size) { y=y0; x++; if(x>=TFT_Width)return; //超区域了 break; } } } } }
这里只配置12/16/24字体(即字模的宽高设置请保持一置)
新建字库.h文件把生成的字模数组保存在其中,数组名命名为chinese_24[][80],chinese_16[][80],chinese_12[][80],与驱动中调用字体数组名相同。
数组内容即保存的字模数组。(如图)
5.main()函数调用
只需在while(1)中调用汉字显示函数
6.下载实现
7.程序中并未使用最初的<LCD汉字显示>数组,而是直接使用原先写的<LCD显示>数组,原理相同,学习之后可在字模软件中生成不同汉字,在LCD显示。