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

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

[复制链接]
STMCU小助手 发布时间:2022-4-23 16:31
  1. show_chinese(30,80,32,"华达川",BLACK,WHITE);
复制代码
4 S' ]. i3 @* a' ]) X8 O
一、取模软件设置,参考下图, d6 }) v8 E1 F, \. R

9 P/ o8 ]: f8 a7 L. O0 A
$ N) k5 c% G6 a5 o% u! G
}XOKCL{4`~MR]7RTJ0``G0G.png
5 `' T3 |5 F3 s  [* ?4 R( I# A% p/ E# J  V' j; [! j- Q

# e$ R: t4 G/ Y" `! C二、软件参考,正点原子开发板
  1. //放头文件3 D& S$ r1 F8 {& h2 f9 i: t5 l' t
  2. struct typFNT_GB16 // 汉字字模数据结构体
    ) ]0 V6 B8 q+ i" |# Q  b3 ]- ]+ ]1 A% z
  3. {( C# t" J+ `) {8 b9 t
  4. u8 Index[2];// 汉字内码索引,汉字在内存中占两个字节! d7 @# _9 H4 y; `" N: S. _
  5. char Msk[128]; // 点阵码数据: M% {0 Y4 o2 F) e; g" C
  6. };
    ) F5 ]* E3 [4 C. Y$ u% @
  7. , w! K3 F8 T" b8 L- G
  8. //放C文件/ {2 H! J# e4 a5 `9 |) _) U' B! U
  9. //定义汉字点阵结构体,数据由正点原子赠送的取模软件获得1 ~4 `/ q4 Z( g" }5 u, y/ j9 F# x
  10. struct typFNT_GB16 code_GB_16[] = // 数据表
    7 o& ?6 l6 z3 B+ k4 z4 ?" e
  11. {; ^4 [" s8 |  u0 P, c% k
  12.         {"华",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,! G" x& L8 ^+ w3 Z$ _+ C$ J
  13. 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,. \( q4 F( T$ b7 Y) ]
  14. 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,
    # t% B% N8 L  k8 _& d( h
  15. 0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00},$ a5 `  y! O: Y* W& K$ h0 m- |' x
  16. ( y( p' H& s, G
  17.         {"达",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,; ]4 `  e5 D3 H/ \* \! E7 v- ^
  18. 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,* ]: `9 D) U1 p" ]7 w. v4 O4 m
  19. 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,0 s; h2 x; |/ }& V1 D
  20. 0x1C,0x7C,0x00,0x00,0x78,0x3F,0xFF,0xFC,0x10,0x0F,0xFF,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00},
    ! b& H3 G: W5 |' o
  21. . D- }- t( [/ K% V, b
  22.         {"川",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,, z) Z6 }; ]# ^$ a
  23. 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,6 o; _' @; [$ z6 A" ?: p2 G
  24. 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,3 s  L! ]8 e# N" x& a/ Q
  25. 0x1C,0x00,0xC0,0x70,0x3C,0x00,0xC0,0x70,0x18,0x00,0x00,0x70,0x08,0x00,0x00,0x70,0x00,0x00,0x00,0x00},3 I- Y  W% b& J; e- m$ h9 a
  26. };
    $ w+ r* s- G; \& w4 {. s' ~

  27. 1 A8 v0 u; a0 K8 r$ k& S

  28. - V$ s. R# m' q; F: b- p4 C! g
  29. : e# d  n% g) s/ D; h/ Y
  30. void show_chinese(u16 x,u16 y,u8 size,u8 *p,u16 Word_Color,u16 Back_Color)8 f" G# g! L( Y% c- ^
  31. {
    / E( C* `" z/ C: i# ^3 t$ \7 p8 }
  32.         u8 k=0,wordByte,color;0 y5 g; S  p& ?- t
  33.         u8 wordNum;//字库字数
    ' q) A" w5 v8 X; D2 U
  34.         while(*p!='\0')//直到字符串写完7 F* @; r5 |, r0 e. d
  35.         {
    , Y# M5 I# `" x: N9 e) x
  36.                 LCD_Set_Window(x,y,size,size);
    2 X; r& H4 J2 ^3 j  F
  37.                 LCD_SetCursor(x,y);
    4 C# e3 W7 z6 d  ~( W9 t2 B: |9 r# k
  38.                 LCD_WriteRAM_Prepare();
    6 H' e* g. j. l0 t
  39.                 for(wordNum=0;wordNum<3;wordNum++)
    % d/ Z8 G: K; z* P
  40.                 {) Y8 D/ W7 c% F; t$ P  K" O
  41.                         if((*p==code_GB_16[wordNum].Index[0])&&(*(p+1)==code_GB_16[wordNum].Index[1]))//匹配汉字内码,汉字在内存中占两个字节
    ( |  j( H* t8 |) b/ u6 X1 v
  42.                         {
    ! X$ a0 Z/ a9 @& ]+ h- Z
  43.                                 for(wordByte=0;wordByte<128;wordByte++)
    ' q* Z' e6 }, ^& X- n; L
  44.                                 {
    & v7 z; ]5 F4 `5 N2 Q3 D
  45.                                         color=code_GB_16[wordNum].Msk[wordByte];
    ( X) S/ v5 q, S% U" r$ c/ A
  46.                                         for(k=0;k<8;k++)7 m" S; [2 t7 m7 C3 F
  47.                                         {/ u' h9 D, v' i: o* g0 Z
  48.                                                 if((color&0x80)==0x80)//1
    , A' D, ^. X! U
  49.                                                 {4 Z; s) A3 @7 U/ Q  v
  50.                                                         LCD->LCD_RAM=Word_Color;
    " m5 H+ u: m# ?7 T& X6 p+ y
  51.                                                 }, T$ Y( d, T9 k4 w
  52.                                                 else) f% u+ v5 u$ p7 ]
  53.                                                 {- A8 k" F$ c+ A; M! j5 x
  54.                                                         LCD->LCD_RAM=Back_Color;
    0 M: |4 Z7 E" m% T! v8 l$ _" S
  55.                                                 }2 A3 T" H7 Y: K; Q
  56.                                                 color=color<<1;
    # Q% x' K6 h# @: G, l. i; j
  57.                                         }
    * F+ ~& \3 x  ]- i5 s/ i6 N* d
  58.                                 }
    ( b7 C( l! Y2 `! T- m
  59.                                 p+=2;
    : Z; `# f; q( e* M  W  A3 z8 Z
  60.                                 x+=size;//下一个字
    $ l3 z' E$ C' k( S1 }  z: S
  61.                                 if(x>225) //下一行
    - S* j. p& i. Y* {% [/ u* q
  62.                                 {
    ) J7 V! J* O- v
  63.                                         x=0;4 f9 l1 Q" |3 L) n
  64.                                         y+=size;
    ' }8 x. ^) l2 ~
  65.                                 }: W6 E/ S" _- N% V% `
  66.                                 break;//匹配到了
    9 K8 ^- w* k3 W$ k1 Q6 x
  67.                         }6 S4 o' @6 c4 F! y1 L( d: I. G" V
  68.                 }3 r" L+ y8 x4 z
  69.         }! a" U) C8 d& T
  70. }
    $ |! N* B5 N, {6 W- r3 i! E/ }2 Z
复制代码

0 o9 \7 m( }# n# t" Q0 @: d
' M* J& o. H& u! f8 c' U/ R) ]1 M7 g三、函数调用
/ W1 T1 T4 _+ n$ t. {. d# I9 X  N0 g/ U1 Y2 o
  1. show_chinese(30,80,32,"华达川",BLACK,WHITE); : ~( ~; w! J+ A# m2 N5 _/ I+ C
复制代码
; y. _) {: O; t( t- {+ O

1 `7 d. z0 i$ Y3 p$ t" A% F/ |+ V' P1 q# v! z( I( z8 J

1 }5 o1 F( Y. x4 E! p+ ~
赞 收藏 评论0 发布时间:2022-4-23 16:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版