在开发板中用的是外部字库芯片GT21L16S2W
调试步骤:
一、编写GT21L16S2W驱动,包括GT21L16S2W初始化函数和GT21L16S2W读函数,并配置好GT21L16S2W引脚,然后在调用GUI_Init()初始化UCGUI之前一定要调用GT21L16S2W初始化函数,刚开始调试的时候就是因为忘记调用,搞了半天才发现问题。
二、新建字库文件HZK16.c,建立汉字字库结构体GUI_FontHZ16,字库文件HZK16.c一定要引用头文件SSP_GT21L16S2W.h,因为该头文件中定义有各种类型字库在GT21L16S2W芯片中的首地址,如上图。建立字库时要引用ASC字符和汉字字库的首地址。
三、配置UCGUI
1、GUIConf.h
将默认字体设置成新建字库GUI_FontHZ16
2、GUI.h
在GUI.h中声明新建字库GUI_FontHZ16
3、GUICharP.c
修改Core/GUICharP.c中的void GUIPROP_DispChar(U16P c)函数,使其能够通过调用字符编码从默认字库GUI_FontHZ16中打到字符所在点阵的信息,然后计算出字符点阵在GT21L16S2W芯片的中的地址,再调用GT21L16S2W的读函数读出字符点阵信息,然后通过LCD_DrawBitmap函数将点阵画到LCD屏上。
void GUIPROP_DispChar(U16P c) {
int BytesPerLine;
U16 BytesPerFont;
U32 base, oft;
U8 MSB, LSB;
GUI_DRAWMODE DrawMode = GUI_Context.TextMode;
const GUI_FONT_PROP GUI_UNI_PTR * pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
if (pProp) {
GUI_DRAWMODE OldDrawMode;
const GUI_CHARINFO GUI_UNI_PTR * pCharInfo;
if (GUI_Context.pAFont == &GUI_FontHZ16) {
pCharInfo = pProp->paCharInfo;
base = (U32)pProp->paCharInfo->pData;
BytesPerFont = GUI_Context.pAFont->YSize * pProp->paCharInfo