UCGUI使用外部字库芯片显示汉字

本文介绍了在开发板中采用GT21L16S2W外部字库芯片显示汉字的调试过程。首先,编写并初始化驱动,接着新建字库文件HZK16.c,配置UCGUI的默认字体为GUI_FontHZ16。最后,修改GUICharP.c文件以支持从GT21L16S2W芯片读取并显示字符。

在开发板中用的是外部字库芯片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->BytesPerLine;
        if (BytesPerFon
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值