• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32怎么实现读取字库解码

jiming 2020-03-25 浏览量:1105
STM32怎么实现读取字库解码
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • STM32要实现读取字库解码,首先要获取当前字符的编码,然后再根据字符编码去对应的字库里面找到对应的字库数据,获取偏移地址,实现对字库的数据读取,再把读取的数据进行输出
    • 发布于 2020-04-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 首先要将一个字库下载到它的flash里面,然后每次需要进行字库对应码的读取时,只需要读取相对那块flash开头地址一个偏移量的数据即可
    • 发布于2020-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  •    typedef struct _tFont
    {   
      const uint16_t *table;
      uint16_t Width;
      uint16_t Height;
     
    } sFONT;


    extern sFONT Font8x8;
    extern sFONT Font8x12_bold;
    extern sFONT Font8x12;
    extern sFONT Font12x12;
    extern sFONT Font16x24;


    #define GL_Font8x8         Font8x8
    #define GL_Font8x12_bold   Font8x12_bold
    #define GL_Font8x12        Font8x12
    #define GL_Font12x12       Font12x12
    #define GL_Font16x24       Font16x24


    在fonts.c中


    const uint16_t ASCII16x24_Table []={………………};  //字模


    sFONT Font16x24 = {
      ASCII16x24_Table
      16
      24
    };


    sFONT Font12x12 = {
      ASCII12x12_Table
      12
      12
    };


    sFONT Font8x12 = {
      ASCII8x12_Table
      8
      12
    };


    sFONT Font8x12_bold ={
       ASCII8x12_bold_Table
        8
        12
      };




    sFONT Font8x8 = {
      ASCII8x8_Table
      8
      8
    };


    在main.c中调用:


    #include "user_config.h"


      uint8_t test1[]="你见,或者不见我,我就在那里,不悲不喜;";
      uint8_t test2[]="你念,或者不念我,我就在那里,不来不去;";
      uint8_t test3[]="你爱,或者不爱我,爱就在那里,不增不减;";
      uint8_t test4[]="你跟,或者不跟我,我的手就在你手里,";
      uint8_t test5[]="不舍 不弃.";
     uint8_t test6[]="默然 相爱";
     uint8_t test7[]="寂静 喜欢";
     
    int main(void)
    {
      u8 ijk;
      NVIC_Config();
      SysTick_Init();
      STM_EVAL_LEDInit(LED1);
      STM_EVAL_LEDInit(LED2);
      STM_EVAL_LEDInit(LED3);
      STM_EVAL_LEDInit(LED4);
      USART_Config( COM1115200);
      STM3210E_LCD_Init();


      LCD_Clear(LCD_COLOR_MAGENTA);
      LCD_SetColors(LCD_COLOR_REDLCD_COLOR_CYAN);


      LCD_DisplayStringLine(LCD_LINE_0 (uint8_t *)MESSAGE1);
      LCD_DisplayStringLine(LCD_LINE_1 (uint8_t *)MESSAGE2);
      LCD_DisplayStringLine(LCD_LINE_2 (uint8_t *)MESSAGE3);
      LCD_DisplayStringLine(LCD_LINE_3 (uint8_t *)MESSAGE4);
     
      printf("nr %s" MESSAGE1);
      printf(" %s" MESSAGE2);
      printf(" %snr" MESSAGE3);
     
      LCD_Clear(LCD_COLOR_BLUE);


     GL_Clear(GL_Grey);
     GL_SetTextColor(GL_Blue);
     GL_SetBackColor(GL_Yellow);
     GL_SetFont(GL_FONT_GB2312);
     LCD_ClearLine(LINE(0));  // disp yellow line
     LCD_ClearLine(LINE(9));
     GL_DisplayAdjStringLine(0220(uint8_t*)"Loading..."GL_FALSE);
     GL_DisplayAdjStringLine(LINE(2)310test1GL_TRUE); //如果横屏,Y轴递减
     GL_DisplayAdjStringLine(LINE(3)310test2GL_TRUE);
     GL_DisplayAdjStringLine(LINE(4)310test3GL_TRUE);
     GL_DisplayAdjStringLine(LINE(5)310test4GL_TRUE);
     GL_DisplayAdjStringLine(LINE(6)310test5GL_TRUE);
     GL_DisplayAdjStringLine(LINE(7)310test6GL_TRUE);
     GL_DisplayAdjStringLine(LINE(8)310test7GL_TRUE);
     GL_DisplayAdjStringLine(LINE(9)130"蔡志威"GL_TRUE); 
     GL_SetFont(GL_FONT_SMALL);
     //SetFont(GL_Font8x12_bold); 
     GL_DisplayAdjStringLine(22080" 2013-10-08"GL_TRUE); 
      while (1)
     {    
      }
    }


     


    map文件:


    ==============================================================================




         Code (inc. data)   RO Data    RW Data    ZI Data     Debug  


         9944       738    293276       360      1080         0   Grand Totals
         9944       738    293276       224      1080         0   ELF Image Totals (compressed)
         9944       738    293276       224         0         0   ROM Totals


    ==============================================================================


        Total RO  Size (Code + RO Data)              303220 ( 296.11kB)
        Total RW  Size (RW Data + ZI Data)             1440 (   1.41kB)
        Total ROM Size (Code + RO Data + RW Data)    303444 ( 296.33kB)


    ==============================================================================

    • 发布于2020-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先主要是有字库,可以放flash也可以放SD卡每个汉字都有一个内码,占两个字节,通过汉字内码的高低字节,通过公式32*((High8bit-0xa0-1)*94+(Low8bit-0xa0-1))来找到该汉字在字库中的偏移位置,然后读取32个字节,也就是该汉字的点阵数据。字体是16*16=256。256/8=32字节。
    • 发布于2020-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 字库可以先生成放在flash 里面。然后后面直接索引就可以了。
    • 发布于2020-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 字库就是结构化的数据,通过某个字的字符(其实就是一个编码),根据这个字符编码就去查字库中对应数据,大致就是

    数据的头地址为=基地址+字符编码*每字偏移量

    取值长度=每字偏移量

    • 发布于2020-03-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32怎么实现读取字库解码