首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在emwin中显示字库芯片GT23L24M0140的字模

在emwin中显示字库芯片GT23L24M0140的字模

环境:
主机:WIN8
开发环境:MDK5.13
mcu: stm32f407VGIGH6
emwin: STemWin5.22
字库芯片:GT23L24M0140



说明:
项目中需要显示生僻字,所以不能使用GB2312,选择字库芯片GT23L24M0140,支持GB18030标准。
难点在于在emwin中嵌入此字库芯片的字符,emwin本身有一套接口,所以必须满足这套接口才能显示。
解决的方法是先移植在emwin中显示sd卡/flash中字库的函数,然后将具体读取函数替换成直接读取字库芯片的函数。
字库芯片的驱动程序见此文:驱动字库芯片GT23L24M0140

显示效果:



源代码:
GUI_UC_EncodeNone.c


[cpp] view plaincopy

  • /*  
  • *********************************************************************************************************  
  • *                                                uC/GUI  
  • *                        Universal graphic software for embedded applications  
  • *  
  • *                       (c) Copyright 2002, Micrium Inc., Weston, FL  
  • *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH  
  • *  
  • *              礐/GUI is protected by international copyright laws. Knowledge of the  
  • *              source code may not be used to write a similar product. This file may  
  • *              only be used in accordance with a license and should not be redistributed  
  • *              in any way. We appreciate your understanding and fairness.  
  • *  
  • ----------------------------------------------------------------------  
  • File        : GUI_UC_EncodeNone.c  
  • Purpose     : Encoding routines for non unicode systems (default)  
  • ---------------------------END-OF-HEADER------------------------------  
  • */

  • //#include "GUI_Protected.h"
  • #include "GUI_Private.h"

  • /*********************************************************************  
  • *  
  • *       Static code  
  • *  
  • **********************************************************************  
  • */
  • /*********************************************************************  
  • *  
  • *       _GetCharCode  
  • *  
  • * Purpose:  
  • *   Return the UNICODE character code of the current character.  
  • */
  • static U16 _GetCharCode(const
    char GUI_UNI_PTR * s) {   
  •   if((*s) > 0xA0)   
  •   {   
  •     return *(const U16 GUI_UNI_PTR *)s;   
  •   }   
  •   return *(const U8 GUI_UNI_PTR *)s;   
  • }   

  • /*********************************************************************  
  • *  
  • *       _GetCharSize  
  • *  
  • * Purpose:  
  • *   Return the number of bytes of the current character.  
  • */
  • static
    int _GetCharSize(const
    char GUI_UNI_PTR * s) {   
  •   GUI_USE_PARA(s);   
  •   if((*s) > 0xA0)   
  •   {   
  •     return 2;   
  •   }   
  •   return 1;   
  • }   

  • /*********************************************************************  
  • *  
  • *       _CalcSizeOfChar  
  • *  
  • * Purpose:  
  • *   Return the number of bytes needed for the given character.  
  • */
  • static
    int _CalcSizeOfChar(U16 Char) {   
  •   GUI_USE_PARA(Char);   
  •   if(Char > 0xA0A0)   
  •   {   
  •     return 2;   
  •   }   
  •   return 1;   
  • }   

  • /*********************************************************************  
  • *  
  • *       _Encode  
  • *  
  • * Purpose:  
  • *   Encode character into 1/2/3 bytes.  
  • */
  • static
    int _Encode(char *s, U16 Char) {   
  •   if(Char > 0xA0A0)   
  •   {   
  •     *((U16 *)s) = (U16)(Char);   
  •     return 2;   
  •   }   
  •   *s = (U8)(Char);   
  •   return 1;   
  • }   

  • /*********************************************************************  
  • *  
  • *       Static data  
  • *  
  • **********************************************************************  
  • */
  • /*********************************************************************  
  • *  
  • *       _API_Table  
  • */
  • const GUI_UC_ENC_APILIST GUI__API_TableNone = {   
  •   _GetCharCode,     /*  return character code as U16 */
  •   _GetCharSize,     /*  return size of character: 1 */
  •   _CalcSizeOfChar,  /*  return size of character: 1 */
  •   _Encode           /*  Encode character */
  • };   

  • /*********************************************************************  
  • *  
  • *       Exported code  
  • *  
  • **********************************************************************  
  • */
  • /*********************************************************************  
  • *  
  • *       GUI_UC_SetEncodeNone  
  • */
  • void GUI_UC_SetEncodeNone_User(void) {   
  •   GUI_LOCK();   
  •   //GUI_Context.pUC_API = &GUI__API_TableNone;
  •   GUI_pUC_API = &GUI__API_TableNone;   
  •   GUI_UNLOCK();   
  • }   

继承事业,薪火相传
返回列表