你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32显示通过取模软件取模的汉字

[复制链接]
STMCU小助手 发布时间:2022-4-23 16:31
  1. show_chinese(30,80,32,"华达川",BLACK,WHITE);
复制代码

一、取模软件设置,参考下图


}XOKCL{4`~MR]7RTJ0``G0G.png


二、软件参考,正点原子开发板
  1. //放头文件
  2. struct typFNT_GB16 // 汉字字模数据结构体
  3. {
  4. u8 Index[2];// 汉字内码索引,汉字在内存中占两个字节
  5. char Msk[128]; // 点阵码数据
  6. };

  7. //放C文件
  8. //定义汉字点阵结构体,数据由正点原子赠送的取模软件获得
  9. struct typFNT_GB16 code_GB_16[] = // 数据表
  10. {
  11.         {"华",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x70,0x00,0x00,0xF0,0x70,0x00,0x00,0xE0,0x70,0x20,0x01,0xC0,0x70,0x70,0x01,0xC0,0x70,0xF8,0x03,0xC0,0x73,0xC0,0x07,0xC0,0x7F,0x80,
  12. 0x0F,0xC0,0x7E,0x00,0x1D,0xC0,0xF8,0x00,0x3D,0xC7,0xF0,0x00,0x39,0xCF,0x70,0x00,0x11,0xC4,0x70,0x08,0x01,0xC0,0x70,0x0E,0x01,0xC0,0x70,0x1C,0x01,0xC0,0x7F,0xFC,0x01,0xC0,0x3F,0xF8,
  13. 0x01,0xC3,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,
  14. 0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00},

  15.         {"达",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x38,0x00,0x0C,0x00,0x38,0x00,0x0E,0x00,0x38,0x00,0x07,0x00,0x38,0x00,0x03,0x80,0x38,0x00,0x03,0xC0,0x38,0x00,0x01,0x80,0x38,0x00,
  16. 0x00,0x1F,0xFF,0xF8,0x00,0x1F,0xFF,0xF8,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x38,0x00,0x3F,0x00,0x38,0x00,0x3F,0x00,0x30,0x00,0x03,0x00,0x70,0x00,0x03,0x00,0x72,0x00,0x03,0x00,0x6F,0x00,
  17. 0x03,0x00,0xE7,0x80,0x03,0x01,0xC3,0xC0,0x03,0x01,0xC1,0xE0,0x03,0x03,0x80,0xF0,0x03,0x07,0x00,0x70,0x03,0x1E,0x00,0x38,0x03,0x9C,0x00,0x38,0x07,0xC8,0x00,0x10,0x0F,0xE0,0x00,0x00,
  18. 0x1C,0x7C,0x00,0x00,0x78,0x3F,0xFF,0xFC,0x10,0x0F,0xFF,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00},

  19.         {"川",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0xC0,0x00,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,
  20. 0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,0x01,0x80,0xC0,0x70,
  21. 0x03,0x80,0xC0,0x70,0x03,0x80,0xC0,0x70,0x03,0x80,0xC0,0x70,0x03,0x00,0xC0,0x70,0x03,0x00,0xC0,0x70,0x07,0x00,0xC0,0x70,0x07,0x00,0xC0,0x70,0x0E,0x00,0xC0,0x70,0x0E,0x00,0xC0,0x70,
  22. 0x1C,0x00,0xC0,0x70,0x3C,0x00,0xC0,0x70,0x18,0x00,0x00,0x70,0x08,0x00,0x00,0x70,0x00,0x00,0x00,0x00},
  23. };



  24. void show_chinese(u16 x,u16 y,u8 size,u8 *p,u16 Word_Color,u16 Back_Color)
  25. {
  26.         u8 k=0,wordByte,color;
  27.         u8 wordNum;//字库字数
  28.         while(*p!='\0')//直到字符串写完
  29.         {
  30.                 LCD_Set_Window(x,y,size,size);
  31.                 LCD_SetCursor(x,y);
  32.                 LCD_WriteRAM_Prepare();
  33.                 for(wordNum=0;wordNum<3;wordNum++)
  34.                 {
  35.                         if((*p==code_GB_16[wordNum].Index[0])&&(*(p+1)==code_GB_16[wordNum].Index[1]))//匹配汉字内码,汉字在内存中占两个字节
  36.                         {
  37.                                 for(wordByte=0;wordByte<128;wordByte++)
  38.                                 {
  39.                                         color=code_GB_16[wordNum].Msk[wordByte];
  40.                                         for(k=0;k<8;k++)
  41.                                         {
  42.                                                 if((color&0x80)==0x80)//1
  43.                                                 {
  44.                                                         LCD->LCD_RAM=Word_Color;
  45.                                                 }
  46.                                                 else
  47.                                                 {
  48.                                                         LCD->LCD_RAM=Back_Color;
  49.                                                 }
  50.                                                 color=color<<1;
  51.                                         }
  52.                                 }
  53.                                 p+=2;
  54.                                 x+=size;//下一个字
  55.                                 if(x>225) //下一行
  56.                                 {
  57.                                         x=0;
  58.                                         y+=size;
  59.                                 }
  60.                                 break;//匹配到了
  61.                         }
  62.                 }
  63.         }
  64. }
复制代码


三、函数调用

  1. show_chinese(30,80,32,"华达川",BLACK,WHITE);
复制代码




收藏 评论0 发布时间:2022-4-23 16:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版