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

发布者:SerendipityRose最新更新时间:2016-12-18 来源: eefocus关键字:emwin  显示字库芯片  GT23L24M0140  字模 手机看文章 扫描二维码
随时随地手机看文章

环境:

主机:WIN8

开发环境:MDK5.13

mcu: stm32f407VGIGH6

emwin: STemWin5.22

字库芯片:GT23L24M0140


说明:

项目中需要显示生僻字,所以不能使用GB2312,选择字库芯片GT23L24M0140,支持GB18030标准。

难点在于在emwin中嵌入此字库芯片的字符,emwin本身有一套接口,所以必须满足这套接口才能显示。

解决的方法是先移植在emwin中显示sd卡/flash中字库的函数,然后将具体读取函数替换成直接读取字库芯片的函数。

字库芯片的驱动程序见此文:驱动字库芯片GT23L24M0140


显示效果:


源代码:

GUI_UC_EncodeNone.c



  1. /*  

  2. *********************************************************************************************************  

  3. *                                                uC/GUI  

  4. *                        Universal graphic software for embedded applications  

  5. *  

  6. *                       (c) Copyright 2002, Micrium Inc., Weston, FL  

  7. *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH  

  8. *  

  9. *              礐/GUI is protected by international copyright laws. Knowledge of the  

  10. *              source code may not be used to write a similar product. This file may  

  11. *              only be used in accordance with a license and should not be redistributed  

  12. *              in any way. We appreciate your understanding and fairness.  

  13. *  

  14. ----------------------------------------------------------------------  

  15. File        : GUI_UC_EncodeNone.c  

  16. Purpose     : Encoding routines for non unicode systems (default)  

  17. ---------------------------END-OF-HEADER------------------------------  

  18. */   

  19.   

  20. //#include "GUI_Protected.h"   

  21. #include "GUI_Private.h"  

  22.   

  23. /*********************************************************************  

  24. *  

  25. *       Static code  

  26. *  

  27. **********************************************************************  

  28. */   

  29. /*********************************************************************  

  30. *  

  31. *       _GetCharCode  

  32. *  

  33. * Purpose:  

  34. *   Return the UNICODE character code of the current character.  

  35. */   

  36. static U16 _GetCharCode(const char GUI_UNI_PTR * s) {   

  37.   if((*s) > 0xA0)   

  38.   {   

  39.     return *(const U16 GUI_UNI_PTR *)s;    

  40.   }   

  41.   return *(const U8 GUI_UNI_PTR *)s;   

  42. }   

  43.   

  44. /*********************************************************************  

  45. *  

  46. *       _GetCharSize  

  47. *  

  48. * Purpose:  

  49. *   Return the number of bytes of the current character.  

  50. */   

  51. static int _GetCharSize(const char GUI_UNI_PTR * s) {   

  52.   GUI_USE_PARA(s);    

  53.   if((*s) > 0xA0)   

  54.   {   

  55.     return 2;    

  56.   }   

  57.   return 1;   

  58. }   

  59.   

  60. /*********************************************************************  

  61. *  

  62. *       _CalcSizeOfChar  

  63. *  

  64. * Purpose:  

  65. *   Return the number of bytes needed for the given character.  

  66. */   

  67. static int _CalcSizeOfChar(U16 Char) {   

  68.   GUI_USE_PARA(Char);   

  69.   if(Char > 0xA0A0)   

  70.   {   

  71.     return 2;   

  72.   }   

  73.   return 1;   

  74. }   

  75.   

  76. /*********************************************************************  

  77. *  

  78. *       _Encode  

  79. *  

  80. * Purpose:  

  81. *   Encode character into 1/2/3 bytes.  

  82. */   

  83. static int _Encode(char *s, U16 Char) {   

  84.   if(Char > 0xA0A0)   

  85.   {   

  86.     *((U16 *)s) = (U16)(Char);   

  87.     return 2;   

  88.   }   

  89.   *s = (U8)(Char);   

  90.   return 1;   

  91. }   

  92.   

  93. /*********************************************************************  

  94. *  

  95. *       Static data  

  96. *  

  97. **********************************************************************  

  98. */   

  99. /*********************************************************************  

  100. *  

  101. *       _API_Table  

  102. */   

  103. const GUI_UC_ENC_APILIST GUI__API_TableNone = {   

  104.   _GetCharCode,     /*  return character code as U16 */   

  105.   _GetCharSize,     /*  return size of character: 1 */   

  106.   _CalcSizeOfChar,  /*  return size of character: 1 */   

  107.   _Encode           /*  Encode character */   

  108. };   

  109.   

  110. /*********************************************************************  

  111. *  

  112. *       Exported code  

  113. *  

  114. **********************************************************************  

  115. */   

  116. /*********************************************************************  

  117. *  

  118. *       GUI_UC_SetEncodeNone  

  119. */   

  120. void GUI_UC_SetEncodeNone_User(void) {   

  121.   GUI_LOCK();   

  122.   //GUI_Context.pUC_API = &GUI__API_TableNone;   

  123.   GUI_pUC_API = &GUI__API_TableNone;   

  124.   GUI_UNLOCK();   

  125. }   

  126.   

  127. /*************************** End of file ****************************/   



GUI_CharPEx.c


  1. #include            /* needed for definition of NULL */   

  2. #include "GUI_Private.h"   

  3. //#include "ff.h"   

  4.   

  5. #include "string.h"  

  6.   

  7. #include "inf_font.h"  

  8.   

  9. #include "font_type.h"  

  10.   

  11. //字模数据的暂存数组,以单个字模的最大字节数为设定值   

  12. #define BYTES_PER_FONT      1024  

  13. static U8 GUI_FontDataBuf[BYTES_PER_FONT];   

  14.   

  15. ///*---------------------------------------------------------------------------*/   

  16. ///*字库外部函数部分-----------------------------------------------------------*/   

  17. //void GUI_X_GetFontData(char* font, U32 oft, U8 *ptr, U8 bytes)   

  18. //{   

  19. ////    FIL fsrc;        // 定义文件操作类    

  20. ////    FRESULT res;  // 定义操作结果变量    

  21. ////    UINT br;         // 定义读写数量变量   

  22. ////    res = f_open(&fsrc, font, FA_OPEN_EXISTING | FA_READ);   //打开字库文件     

  23. ////    if(res != FR_OK)     

  24. ////    {     

  25. ////         

  26. ////    }     

  27. ////    res = f_lseek(&fsrc,oft); //找到首地址    

  28. ////    res = f_read(&fsrc, ptr, bytes, &br); //读取32个字库点阵数据   

  29. ////    res = f_close(&fsrc); //关闭字体     

  30. //  //memcpy(ptr,acFontHZ12_b9da1,24);  

  31. //  //memcpy(ptr,read_buf,24);  

  32. //    

  33. //    

  34. //  bytes = inf_font_read(ASCII_7X8,'j',ptr);  

  35. //}   

  36.    

  37. static void GUI_GetDataFromMemory(const GUI_FONT_PROP GUI_UNI_PTR *pProp, U16P c)   

  38. {   

  39.     U16 BytesPerFont;   

  40.     U32 oft;   

  41.     char *font = (char *)pProp->paCharInfo->pData;   

  42.       

  43.     //汉字正序  

  44.     uint8_t c1 = c >> 8;  

  45.     uint8_t c2 = c;  

  46.     uint16_t c3 = (c2 << 8) + c1;  

  47.       

  48.     BytesPerFont = GUI_pContext->pAFont->YSize * pProp->paCharInfo->BytesPerLine; //每个字模的数据字节数   

  49.     if (BytesPerFont > BYTES_PER_FONT)  

  50.     {BytesPerFont = BYTES_PER_FONT;}   

  51.     if (c < 0x80)                                                               //英文字符地址偏移算法   

  52.     {   

  53.         oft = (c-0x20) * BytesPerFont;   

  54.         BytesPerFont = inf_font_read(Font_Now,c,GUI_FontDataBuf);  

  55.     }   

  56.     else                                                                             

  57.     {   

  58.         oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xb0) * 94)* BytesPerFont; //中文字符地址偏移算法包括符号   

  59.         BytesPerFont = inf_font_read(Font_Now,c3,GUI_FontDataBuf);  

  60. //      if (strncmp(FontEx_HZ,font,sizeof(FontEx_HZ)) == 0)  

  61. //      {  

  62. //            

  63. //      }  

  64.     }   

  65.     //GUI_X_GetFontData(font, oft, GUI_FontDataBuf, BytesPerFont);   

  66.       

  67.       

  68. //  BytesPerFont = inf_font_read(Font_Now,c,GUI_FontDataBuf);  

  69. }   

  70.    

  71. void GUIPROP_X_DispChar(U16P c)    

  72. {   

  73.     int BytesPerLine;   

  74.     GUI_DRAWMODE DrawMode = GUI_pContext->TextMode;   

  75.     const GUI_FONT_PROP GUI_UNI_PTR *pProp = GUI_pContext->pAFont->p.pProp;   

  76.       

  77.     //搜索定位字库数据信息    

  78.     for (; pProp; pProp = pProp->pNext)                                            

  79.     {   

  80.         if ((c >= pProp->First) && (c <= pProp->Last))break;   

  81.     }   

  82.     if (pProp)   

  83.     {   

  84.         GUI_DRAWMODE OldDrawMode;   

  85.         const GUI_CHARINFO GUI_UNI_PTR * pCharInfo = pProp->paCharInfo;   

  86.         GUI_GetDataFromMemory(pProp, c);//取出字模数据   

  87.         BytesPerLine = pCharInfo->BytesPerLine;   

  88.         OldDrawMode  = LCD_SetDrawMode(DrawMode);   

  89.         LCD_DrawBitmap(GUI_pContext->DispPosX, GUI_pContext->DispPosY,   

  90.                        pCharInfo->XSize, GUI_pContext->pAFont->YSize,   

  91.                        GUI_pContext->pAFont->XMag, GUI_pContext->pAFont->YMag,   

  92.                        1,     /* Bits per Pixel */   

  93.                        BytesPerLine,   

  94.                        &GUI_FontDataBuf[0],   

  95.                        &LCD_BKCOLORINDEX   

  96.                        );   

  97.         /* Fill empty pixel lines */   

  98.         if (GUI_pContext->pAFont->YDist > GUI_pContext->pAFont->YSize)    

  99.         {   

  100.             int YMag = GUI_pContext->pAFont->YMag;   

  101.             int YDist = GUI_pContext->pAFont->YDist * YMag;   

  102.             int YSize = GUI_pContext->pAFont->YSize * YMag;   

  103.             if (DrawMode != LCD_DRAWMODE_TRANS)    

  104.             {   

  105.                 LCD_COLOR OldColor = GUI_GetColor();   

  106.                 GUI_SetColor(GUI_GetBkColor());   

  107.                 LCD_FillRect(GUI_pContext->DispPosX, GUI_pContext->DispPosY + YSize,    

  108.                              GUI_pContext->DispPosX + pCharInfo->XSize,    

  109.                              GUI_pContext->DispPosY + YDist);   

  110.                 GUI_SetColor(OldColor);   

  111.             }   

  112.         }   

  113.         LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */   

  114.         GUI_pContext->DispPosX += pCharInfo->XDist * GUI_pContext->pAFont->XMag;   

  115.     }   

  116. }   

  117. /*********************************************************************  

  118. *  

  119. *       GUIPROP_GetCharDistX  

  120. */   

  121. int GUIPROP_X_GetCharDistX(U16P c)    

  122. {   

  123.     const GUI_FONT_PROP GUI_UNI_PTR * pProp = GUI_pContext->pAFont->p.pProp;     

  124.     for (; pProp; pProp = pProp->pNext)                                            

  125.     {   

  126.         if ((c >= pProp->First) && (c <= pProp->Last))break;   

  127.     }   

  128.     return (pProp) ? (pProp->paCharInfo)->XSize * GUI_pContext->pAFont->XMag : 0;   

  129. }  

  130.     



font_type.h



  1. /********************************************************************* 

  2. *                            字体类型定义头文件 

  3. *                          (c)copyright 2015,jdh 

  4. *                           All Right Reserved 

  5. *修改日期:2015/2/2 by jdh 

  6. **********************************************************************/  

  7.   

  8. #ifndef _FONT_TYPE_H_  

  9. #define _FONT_TYPE_H_  

  10.   

  11. /********************************************************************* 

  12. *                           头文件 

  13. **********************************************************************/  

  14.   

  15. #include "GUI.h"  

  16. #include "inf_font.h"  

  17.   

  18. /********************************************************************* 

  19. *                           全局变量 

  20. **********************************************************************/  

  21.   

  22. /********************************************************************* 

  23. *                           当前字体 

  24. **********************************************************************/  

  25.   

  26. extern uint8_t Font_Now;  

  27.   

  28. /********************************************************************* 

  29. *                           GUI结构:7*8点阵ASCII标准字符 

  30. **********************************************************************/  

  31.   

  32. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_7X8;  

  33.   

  34. /********************************************************************* 

  35. *                           GUI结构:7*8点阵ASCII粗体字符 

  36. **********************************************************************/  

  37.   

  38. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_7X8;  

  39.   

  40. /********************************************************************* 

  41. *                           GUI结构:6*12点阵ASCII标准字符 

  42. **********************************************************************/  

  43.   

  44. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_6X12;  

  45.   

  46. /********************************************************************* 

  47. *                           GUI结构:8*16点阵ASCII标准字符 

  48. **********************************************************************/  

  49.   

  50. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_8X16;  

  51.   

  52. /********************************************************************* 

  53. *                           GUI结构:8*16点阵ASCII粗体字符 

  54. **********************************************************************/  

  55.   

  56. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_8X16;  

  57.   

  58. /********************************************************************* 

  59. *                           GUI结构:12*24点阵ASCII标准字符 

  60. **********************************************************************/  

  61.   

  62. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_12X24;  

  63.   

  64. /********************************************************************* 

  65. *                           GUI结构:16*32点阵ASCII标准字符 

  66. **********************************************************************/  

  67.   

  68. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_16X32;  

  69.   

  70. /********************************************************************* 

  71. *                           GUI结构:16*32点阵ASCII粗体字符 

  72. **********************************************************************/  

  73.   

  74. extern GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_16X32;  

  75.   

  76. /********************************************************************* 

  77. *                           GUI结构:12*12点阵GB18030汉字 

  78. **********************************************************************/  

  79.   

  80. extern GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_12X12;  

  81.   

  82. /********************************************************************* 

  83. *                           GUI结构:16*16点阵GB18030汉字 

  84. **********************************************************************/  

  85.   

  86. extern GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_16X16;  

  87.       

  88. /********************************************************************* 

  89. *                           GUI结构:24*24点阵GB18030汉字 

  90. **********************************************************************/  

  91.   

  92. extern GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_24X24;  

  93.   

  94. /********************************************************************* 

  95. *                           函数 

  96. **********************************************************************/  

  97.   

  98. /********************************************************************* 

  99. *                           设置字体 

  100. *说明:在使用字体前,必须先调用此函数 

  101. *参数:font:字体 

  102. **********************************************************************/  

  103.   

  104. void set_font(uint8_t font);  

  105.   

  106. #endif  

  107.   

  108.   


  109.  


font_type.c


  1. /********************************************************************* 

  2. *                            字体类型定义文件 

  3. *                          (c)copyright 2015,jdh 

  4. *                           All Right Reserved 

  5. *修改日期:2015/2/2 by jdh 

  6. *修改日期:2015/2/3 by jdh 

  7. *修改日期:2015/2/5 by jdh 

  8. **********************************************************************/  

  9.   

  10. #include "font_type.h"  

  11.   

  12. extern int GUIPROP_X_GetCharDistX(U16P c);  

  13. extern void GUIPROP_X_DispChar(U16P c) ;    

  14.   

  15. extern void GUI_UC_SetEncodeNone_User(void);  

  16.   

  17.   

  18. /********************************************************************* 

  19. *                           全局变量 

  20. **********************************************************************/  

  21.   

  22. /********************************************************************* 

  23. *                           当前字体 

  24. **********************************************************************/  

  25.   

  26. uint8_t Font_Now = 0;  

  27.   

  28.   

  29. GUI_CONST_STORAGE GUI_CHARINFO GUI_FontHZ12_CharInfo[2] =    

  30. {       

  31.     {  6,    6,  1, (void *)"1:/system/gui_font/ASC6x12.bin"   },      //&ASC_ROM_8X16   

  32.     {  12,  12,  2, (void *)"1:/system/gui_font/HZ12x12.bin"},         //&HZ_ROM_16X16        

  33. };   

  34. GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontHZ12_PropHZ= {   

  35. //      0xA1A1,    

  36. //      0xF7FE,    

  37.       0xA1A1,    

  38.       0xFFFF,    

  39.       &GUI_FontHZ12_CharInfo[1],   

  40.       (void *)0,    

  41. };   

  42. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_FontHZ12_PropASC= {   

  43.       0x0000,    

  44.       0x007F,    

  45.       &GUI_FontHZ12_CharInfo[0],   

  46.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropHZ,    

  47. };   

  48. //GUI_CONST_STORAGE  GUI_FONT GUI_FontHZ12 =    

  49. //{   

  50. //  GUI_FONTTYPE_PROP_USER,  

  51. //      12, //XSIZE    

  52. //      12,     //YSIZE  

  53. //      1,      //X方向放大倍数  

  54. //      1,    //Y方向放大倍数  

  55. //      (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropASC   

  56. //};   

  57. GUI_CONST_STORAGE  GUI_FONT GUI_FontHZ12 =    

  58. {   

  59.     GUI_FONTTYPE_PROP_USER,  

  60.       12,   //XSIZE    

  61.       12,   //YSIZE  

  62.       1,    //X方向放大倍数  

  63.       1,    //Y方向放大倍数  

  64.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropASC   

  65. };   

  66.   

  67. GUI_CONST_STORAGE  GUI_FONT GUI_FontHZ12x2 =    

  68. {   

  69.     GUI_FONTTYPE_PROP_USER,  

  70.       12,    

  71.       12,    

  72.       2,     

  73.       2,     

  74.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropASC   

  75. };  

  76.   

  77.   

  78. /********************************************************************* 

  79. *                           GUI结构:7*8点阵ASCII标准字符 

  80. **********************************************************************/  

  81.   

  82. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_7X8_CharInfo[1] =    

  83. {       

  84.     {  ASCII_7X8_WIDTH,    ASCII_7X8_HEIGHT,  1, (void *)0   },            

  85. };   

  86.   

  87. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_7X8_PropASC =   

  88. {   

  89.     0x0000,    

  90.     0x007F,    

  91.     &GUI_ASCII_7X8_CharInfo[0],   

  92.     (void *)0  

  93. };   

  94.   

  95. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_7X8 =    

  96. {   

  97.     GUI_FONTTYPE_PROP_USER,  

  98.     ASCII_7X8_WIDTH * 2,        //XSIZE    

  99.     ASCII_7X8_HEIGHT,           //YSIZE  

  100.     1,                          //X方向放大倍数  

  101.     1,                          //Y方向放大倍数  

  102.     (void GUI_CONST_STORAGE *)&GUI_ASCII_7X8_PropASC   

  103. };   

  104.   

  105. /********************************************************************* 

  106. *                           GUI结构:7*8点阵ASCII粗体字符 

  107. **********************************************************************/  

  108.   

  109. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_BOLD_7X8_CharInfo[1] =    

  110. {       

  111.     {  ASCII_BOLD_7X8_WIDTH,    ASCII_BOLD_7X8_HEIGHT,  1, (void *)0   },            

  112. };   

  113.   

  114. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_BOLD_7X8_PropASC =   

  115. {   

  116.     0x0000,    

  117.     0x007F,    

  118.     &GUI_ASCII_BOLD_7X8_CharInfo[0],   

  119.     (void *)0    

  120. };   

  121.   

  122. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_7X8 =    

  123. {   

  124.     GUI_FONTTYPE_PROP_USER,  

  125.     ASCII_BOLD_7X8_WIDTH * 2,   //XSIZE    

  126.     ASCII_BOLD_7X8_HEIGHT,      //YSIZE  

  127.     1,                          //X方向放大倍数  

  128.     1,                          //Y方向放大倍数  

  129.     (void GUI_CONST_STORAGE *)&GUI_ASCII_BOLD_7X8_PropASC   

  130. };   

  131.   

  132. /********************************************************************* 

  133. *                           GUI结构:6*12点阵ASCII标准字符 

  134. **********************************************************************/  

  135.   

  136. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_6X12_CharInfo[1] =    

  137. {       

  138.     {  ASCII_6X12_WIDTH,    ASCII_6X12_HEIGHT / 2,  1, (void *)0   },            

  139. };   

  140.   

  141. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_6X12_PropASC =   

  142. {   

  143.     0x0000,    

  144.     0x007F,    

  145.     &GUI_ASCII_6X12_CharInfo[0],   

  146.     (void *)0  

  147. };   

  148.   

  149. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_6X12 =    

  150. {   

  151.     GUI_FONTTYPE_PROP_USER,  

  152.     ASCII_6X12_WIDTH * 2,           //XSIZE    

  153.     ASCII_6X12_HEIGHT,          //YSIZE  

  154.     1,                          //X方向放大倍数  

  155.     1,                          //Y方向放大倍数  

  156.     (void GUI_CONST_STORAGE *)&GUI_ASCII_6X12_PropASC   

  157. };  

  158.   

  159. /********************************************************************* 

  160. *                           GUI结构:8*16点阵ASCII标准字符 

  161. **********************************************************************/  

  162.   

  163. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_8X16_CharInfo[1] =    

  164. {       

  165.     {  ASCII_8X16_WIDTH,    ASCII_8X16_HEIGHT / 2,  1, (void *)0   },            

  166. };   

  167.   

  168. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_8X16_PropASC =   

  169. {   

  170.     0x0000,    

  171.     0x007F,    

  172.     &GUI_ASCII_8X16_CharInfo[0],   

  173.     (void *)0  

  174. };   

  175.   

  176. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_8X16 =    

  177. {   

  178.     GUI_FONTTYPE_PROP_USER,  

  179.     ASCII_8X16_WIDTH * 2,       //XSIZE    

  180.     ASCII_8X16_HEIGHT,          //YSIZE  

  181.     1,                          //X方向放大倍数  

  182.     1,                          //Y方向放大倍数  

  183.     (void GUI_CONST_STORAGE *)&GUI_ASCII_8X16_PropASC   

  184. };   

  185.   

  186. /********************************************************************* 

  187. *                           GUI结构:8*16点阵ASCII粗体字符 

  188. **********************************************************************/  

  189.   

  190. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_BOLD_8X16_CharInfo[1] =    

  191. {       

  192.     {  ASCII_BOLD_8X16_WIDTH,    ASCII_BOLD_8X16_HEIGHT / 2,  1, (void *)0   },            

  193. };   

  194.   

  195. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_BOLD_8X16_PropASC =   

  196. {   

  197.     0x0000,    

  198.     0x007F,    

  199.     &GUI_ASCII_BOLD_8X16_CharInfo[0],   

  200.     (void *)0    

  201. };   

  202.   

  203. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_8X16 =    

  204. {   

  205.     GUI_FONTTYPE_PROP_USER,  

  206.     ASCII_BOLD_8X16_WIDTH * 2,      //XSIZE    

  207.     ASCII_BOLD_8X16_HEIGHT,     //YSIZE  

  208.     1,                          //X方向放大倍数  

  209.     1,                          //Y方向放大倍数  

  210.     (void GUI_CONST_STORAGE *)&GUI_ASCII_BOLD_8X16_PropASC   

  211. };  

  212.   

  213. /********************************************************************* 

  214. *                           GUI结构:12*24点阵ASCII标准字符 

  215. **********************************************************************/  

  216.   

  217. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_12X24_CharInfo[1] =    

  218. {       

  219.     {  ASCII_12X24_WIDTH,    ASCII_12X24_HEIGHT / 2,  2, (void *)0   },            

  220. };   

  221.   

  222. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_12X24_PropASC =   

  223. {   

  224.     0x0000,    

  225.     0x007F,    

  226.     &GUI_ASCII_12X24_CharInfo[0],   

  227.     (void *)0  

  228. };   

  229.   

  230. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_12X24 =    

  231. {   

  232.     GUI_FONTTYPE_PROP_USER,  

  233.     ASCII_12X24_WIDTH * 2,          //XSIZE    

  234.     ASCII_12X24_HEIGHT,             //YSIZE  

  235.     1,                          //X方向放大倍数  

  236.     1,                          //Y方向放大倍数  

  237.     (void GUI_CONST_STORAGE *)&GUI_ASCII_12X24_PropASC   

  238. };  

  239.   

  240. /********************************************************************* 

  241. *                           GUI结构:16*32点阵ASCII标准字符 

  242. **********************************************************************/  

  243.   

  244. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_16X32_CharInfo[1] =    

  245. {       

  246.     {  ASCII_16X32_WIDTH,    ASCII_16X32_HEIGHT / 2,  2, (void *)0   },            

  247. };   

  248.   

  249. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_16X32_PropASC =   

  250. {   

  251.     0x0000,    

  252.     0x007F,    

  253.     &GUI_ASCII_16X32_CharInfo[0],   

  254.     (void *)0  

  255. };   

  256.   

  257. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_16X32 =    

  258. {   

  259.     GUI_FONTTYPE_PROP_USER,  

  260.     ASCII_16X32_WIDTH * 2,          //XSIZE    

  261.     ASCII_16X32_HEIGHT,             //YSIZE  

  262.     1,                          //X方向放大倍数  

  263.     1,                          //Y方向放大倍数  

  264.     (void GUI_CONST_STORAGE *)&GUI_ASCII_16X32_PropASC   

  265. };   

  266.   

  267. /********************************************************************* 

  268. *                           GUI结构:16*32点阵ASCII粗体字符 

  269. **********************************************************************/  

  270.   

  271. GUI_CONST_STORAGE GUI_CHARINFO GUI_ASCII_BOLD_16X32_CharInfo[1] =    

  272. {       

  273.     {  ASCII_BOLD_16X32_WIDTH,    ASCII_BOLD_16X32_HEIGHT / 2,  2, (void *)0   },            

  274. };   

  275.   

  276. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_ASCII_BOLD_16X32_PropASC =   

  277. {   

  278.     0x0000,    

  279.     0x007F,    

  280.     &GUI_ASCII_BOLD_16X32_CharInfo[0],   

  281.     (void *)0    

  282. };   

  283.   

  284. GUI_CONST_STORAGE  GUI_FONT GUI_ASCII_BOLD_16X32 =    

  285. {   

  286.     GUI_FONTTYPE_PROP_USER,  

  287.     ASCII_BOLD_16X32_WIDTH * 2,     //XSIZE    

  288.     ASCII_BOLD_16X32_HEIGHT,    //YSIZE  

  289.     1,                          //X方向放大倍数  

  290.     1,                          //Y方向放大倍数  

  291.     (void GUI_CONST_STORAGE *)&GUI_ASCII_BOLD_16X32_PropASC   

  292. };   

  293.   

  294. /********************************************************************* 

  295. *                           GUI结构:12*12点阵GB18030汉字 

  296. **********************************************************************/  

  297.   

  298. GUI_CONST_STORAGE GUI_CHARINFO GUI_GB18030_12X12_CharInfo[1] =    

  299. {        

  300.     {  GB18030_12X12_WIDTH,    GB18030_12X12_HEIGHT,  2, (void *)0   },             

  301. };   

  302.   

  303. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_GB18030_12X12_PropASC =   

  304. {   

  305.     0x0,    

  306.     0xFFFF,    

  307.     &GUI_GB18030_12X12_CharInfo[0],   

  308.     (void *)0    

  309. };   

  310.   

  311. GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_12X12 =    

  312. {   

  313.     GUI_FONTTYPE_PROP_USER,  

  314.     GB18030_12X12_WIDTH,        //XSIZE    

  315.     GB18030_12X12_HEIGHT,       //YSIZE  

  316.     1,                          //X方向放大倍数  

  317.     1,                          //Y方向放大倍数  

  318.     (void GUI_CONST_STORAGE *)&GUI_GB18030_12X12_PropASC   

  319. };  

  320.   

  321. /********************************************************************* 

  322. *                           GUI结构:16*16点阵GB18030汉字 

  323. **********************************************************************/  

  324.   

  325. GUI_CONST_STORAGE GUI_CHARINFO GUI_GB18030_16X16_CharInfo[1] =    

  326. {        

  327.     {  GB18030_16X16_WIDTH,    GB18030_16X16_HEIGHT,  2, (void *)0   },             

  328. };   

  329.   

  330. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_GB18030_16X16_PropASC =   

  331. {   

  332.     0x0,    

  333.     0xFFFF,    

  334.     &GUI_GB18030_16X16_CharInfo[0],   

  335.     (void *)0    

  336. };   

  337.   

  338. GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_16X16 =    

  339. {   

  340.     GUI_FONTTYPE_PROP_USER,  

  341.     GB18030_16X16_WIDTH,        //XSIZE    

  342.     GB18030_16X16_HEIGHT,       //YSIZE  

  343.     1,                          //X方向放大倍数  

  344.     1,                          //Y方向放大倍数  

  345.     (void GUI_CONST_STORAGE *)&GUI_GB18030_16X16_PropASC   

  346. };  

  347.   

  348. /********************************************************************* 

  349. *                           GUI结构:24*24点阵GB18030汉字 

  350. **********************************************************************/  

  351.   

  352. GUI_CONST_STORAGE GUI_CHARINFO GUI_GB18030_24X24_CharInfo[1] =    

  353. {        

  354.     {  GB18030_24X24_WIDTH,    GB18030_24X24_HEIGHT,  3, (void *)0   },             

  355. };   

  356.   

  357. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_GB18030_24X24_PropASC =   

  358. {   

  359.     0x0,    

  360.     0xFFFF,    

  361.     &GUI_GB18030_24X24_CharInfo[0],   

  362.     (void *)0    

  363. };   

  364.   

  365. GUI_CONST_STORAGE  GUI_FONT GUI_GB18030_24X24 =    

  366. {   

  367.     GUI_FONTTYPE_PROP_USER,  

  368.     GB18030_24X24_WIDTH,        //XSIZE    

  369.     GB18030_24X24_HEIGHT,       //YSIZE  

  370.     1,                          //X方向放大倍数  

  371.     1,                          //Y方向放大倍数  

  372.     (void GUI_CONST_STORAGE *)&GUI_GB18030_24X24_PropASC   

  373. };  

  374.   

  375. /********************************************************************* 

  376. *                           设置字体 

  377. *说明:在使用字体前,必须先调用此函数 

  378. *参数:font:字体 

  379. **********************************************************************/  

  380.   

  381. void set_font(uint8_t font)  

  382. {  

  383.     GUI_UC_SetEncodeNone_User();  

  384.     Font_Now = font;  

  385. //  switch (font)  

  386. //  {  

  387. //      case ASCII_7X8:  

  388. //      {  

  389. //          GUI_SetFont(&GUI_ASCII_7X8);  

  390. //          break;  

  391. //      }  

  392. //      case ASCII_BOLD_7X8:  

  393. //      {  

  394. //          GUI_SetFont(&GUI_ASCII_BOLD_7X8);  

  395. //          break;  

  396. //      }  

  397. //      case ASCII_6X12:  

  398. //      {  

  399. //          GUI_SetFont(&GUI_ASCII_6X12);  

  400. //          break;  

  401. //      }  

  402. //      case ASCII_8X16:  

  403. //      {  

  404. //          GUI_SetFont(&GUI_ASCII_8X16);  

  405. //          break;  

  406. //      }  

  407. //      case ASCII_BOLD_8X16:  

  408. //      {  

  409. //          GUI_SetFont(&GUI_ASCII_BOLD_8X16);  

  410. //          break;  

  411. //      }  

  412. //      case ASCII_12X24:  

  413. //      {  

  414. //          GUI_SetFont(&GUI_ASCII_12X24);  

  415. //          break;  

  416. //      }  

  417. //      case ASCII_16X32:  

  418. //      {  

  419. //          GUI_SetFont(&GUI_ASCII_16X32);  

  420. //          break;  

  421. //      }  

  422. //      case ASCII_BOLD_16X32:  

  423. //      {  

  424. //          GUI_SetFont(&GUI_ASCII_BOLD_16X32);  

  425. //          break;  

  426. //      }  

  427. //      case GB18030_12X12:  

  428. //      {  

  429. //          GUI_SetFont(&GUI_GB18030_12X12);  

  430. //          break;  

  431. //      }  

  432. //      case GB18030_16X16:  

  433. //      {  

  434. //          GUI_SetFont(&GUI_GB18030_16X16);  

  435. //          break;  

  436. //      }  

  437. //      case GB18030_24X24:  

  438. //      {  

  439. //          GUI_SetFont(&GUI_GB18030_24X24);  

  440. //          break;  

  441. //      }  

  442. //  }  

  443. }  



测试代码:



  1. set_font(ASCII_7X8);  

  2.     GUI_SetFont(&GUI_ASCII_7X8);  

  3.     GUI_DispStringAtCEOL("ASCII_7X8:I am jdh!", 0, 0);  

  4.       

  5.     set_font(ASCII_BOLD_7X8);  

  6.     GUI_SetFont(&GUI_ASCII_BOLD_7X8);  

  7.     GUI_DispStringAtCEOL("ASCII_7X8_BOLD:I am jdh!", 0, 20);  

  8.       

  9.     set_font(ASCII_6X12);  

  10.     GUI_SetFont(&GUI_ASCII_6X12);  

  11.     GUI_DispStringAtCEOL("ASCII_6X12:I am jdh!", 0, 40);  

  12.       

  13.     set_font(ASCII_8X16);  

  14.     GUI_SetFont(&GUI_ASCII_8X16);  

  15.     GUI_DispStringAtCEOL("ASCII_8X16:I am jdh!", 0, 60);  

  16.       

  17.     set_font(ASCII_BOLD_8X16);  

  18.     GUI_SetFont(&GUI_ASCII_BOLD_8X16);  

  19.     GUI_DispStringAtCEOL("ASCII_8X16_BOLD:I am jdh!", 0, 80);  

  20.       

  21.     set_font(ASCII_12X24);  

  22.     GUI_SetFont(&GUI_ASCII_12X24);  

  23.     GUI_DispStringAtCEOL("ASCII_12X24:I am jdh!", 0, 100);  

  24.       

  25.     set_font(ASCII_16X32);  

  26.     GUI_SetFont(&GUI_ASCII_16X32);  

  27.     GUI_DispStringAtCEOL("ASCII_16X32:I am jdh!", 0, 130);  

  28.       

  29.     set_font(ASCII_BOLD_16X32);  

  30.     GUI_SetFont(&GUI_ASCII_BOLD_16X32);  

  31.     GUI_DispStringAtCEOL("ASCII_16X32_BOLD:I am jdh!", 0, 170);  

  32.       

  33.     set_font(GB18030_12X12);  

  34.     GUI_SetFont(&GUI_GB18030_12X12);  

  35.     inf_font_asc2gb18030(str,"12X12:我是jdh!");  

  36.     GUI_DispStringAtCEOL(str, 0, 200);  

  37.       

  38.     set_font(GB18030_16X16);  

  39.     GUI_SetFont(&GUI_GB18030_16X16);  

  40.     inf_font_asc2gb18030(str,"16X16:我是jdh!");  

  41.     GUI_DispStringAtCEOL(str, 0, 230);  

  42.       

  43.     set_font(GB18030_24X24);  

  44.     GUI_SetFont(&GUI_GB18030_24X24);  

  45.     inf_font_asc2gb18030(str,"24X24:我是jdh!");  

  46.     GUI_DispStringAtCEOL(str, 0, 260);

      


关键字:emwin  显示字库芯片  GT23L24M0140  字模 引用地址:在emwin中显示字库芯片GT23L24M0140的字模

上一篇:stm32f4中通过dma采集adc
下一篇:驱动字库芯片GT23L24M0140

推荐阅读最新更新时间:2024-03-16 15:26

字模拟转换器控制的函数发生器电路图
数字模拟转换器控制的函数发生器电路图
[模拟电子]
数<font color='red'>字模</font>拟转换器控制的函数发生器电路图
基于SC95F8616单片机的汉字模拟输入
前面介绍了以区位码显示汉字的方法,在此基础上可以通过按键来选取字库的内容进行模拟输入。 在使用中文字库的情况下,使用区位码可以实现汉字的模拟输入,其输入界面如图 1 所示。 图 1 汉字模拟输入界面 实现模拟输入的主程序为: void main(void) { unsigned char t,q,w,u; GPIO_Init(GPIO0, GPIO_PIN_4,GPIO_MODE_OUT_PP); GPIO_WriteLow(GPIO0, GPIO_PIN_4); GPIO_Init(GPIO0, GPIO_PIN_5, GPIO_MODE_IN_PU); GPIO_Init(
[单片机]
基于SC95F8616单片机的汉<font color='red'>字模</font>拟输入
欧胜带有D类扬声器放大器的高保真音频数字模拟转换器
英国爱丁堡, 2006 年 9 月 18 日-欧胜微电子有限公司(伦敦证券交易所: WLF.L )针对“袖珍多媒体设备”目标市场,日前推出一款高效率的立体声数字模拟转换器( DAC ),该数字模拟转换器带有集成了 1W 输出的 D 类立体声扬声器驱动器以及可提供完美音频品质的无电容耳机输出。 新的 WM8956 是欧胜最新推出的、集成了 D 类技术的产品,该产品定位于手机、固态多媒体播放器、便携式 DVD 、游戏机,以及其它一些类似的以电池供电、对音质有特殊要求且低功耗的设备。 WM8956 最主要特点是其 D 类扬声器放大器的效率,它在全功率工作时可达到 87%
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved