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

【经验分享】分享关于STM32 SPI驱动ST7789 LCD ISP TFT液晶屏幕

[复制链接]
STMCU小助手 发布时间:2022-3-16 10:48
偶然的一次机会得到了一块1.3寸的彩色液晶,控制器为ST7789V,支持SPI。对应的其他大小的有2.0的和2.4的,spi用起来还是比较简单的,硬件接口线少方便,刷屏速度还是可以的。这里因为只有1.3的屏(240*240分辨率),所以只测试了1.3的,其他的因为控制器是一样的,所以基本都差不多,无非分辨率不一样。: t- i( X9 Y6 c8 k

  j, }' P6 K7 Z) l3 G5 n* b+ ATFT.C文件
6 [" Z6 E/ b4 [' z! j' q; {) i& E
  1. #include "fy_tft.h"
    ' Q) N$ J7 s1 x( O; K, z! O

  2. 0 H* H+ J- g" A3 R4 O( X
  3. #define TFT_CMD         0
    " R% H# R( P2 x9 Z% B& Z% t# l7 Q
  4. #define TFT_DATA        1
    4 [% E$ y( I/ M
  5. , D2 C* X- ]) U1 s& [
  6. u16 BACK_COLOR=TFT_COLOR_BLACK;
    , t) ]5 f6 w' Y
  7. u16 POINT_COLOR=TFT_COLOR_WHITE;
    % L: h1 B& z. z9 K: B8 h) [
  8. 7 T# s0 _1 X3 D
  9. #ifdef USE_SW_SPI
    ' I$ W6 k1 n2 M
  10. void TFT_ReadWriteByte(u8 dat)
    # F1 r: M' K2 `
  11. {
    , {/ q8 A) m- P; S4 r
  12.     u8 i;
    ! ?' E( S+ T  K: g
  13.     for(i=0; i<8; i++)
    : y) W3 R8 D  ]# r. F
  14.     {
    # F2 u+ ]  e3 j
  15.         TFT_SCLK_Clr();/ ?: F8 k) X# K, [1 b( W1 `' @
  16.         if(dat&0x80), r1 ^( r9 H/ i; h
  17.             TFT_SDIN_Set();' ^0 Y4 m8 g) W0 X3 C" Z5 e  p
  18.         else
    1 R; |& G) R" H0 Q
  19.             TFT_SDIN_Clr();/ L$ q. @3 `1 l+ ^# G0 }0 m- N
  20.         TFT_SCLK_Set();* ]" D  V$ F! }$ L; W# P
  21.         dat<<=1;' N8 ^( x  N2 P6 j
  22.     }        
    ) @, r3 D0 \) N( v$ j
  23. }. c. k+ t# U# O2 O1 S
  24. #endif7 ?1 b/ |0 \# G' w! `2 ~/ h
  25. * h# {- x* j6 P3 L# n- C
  26. static void TFT_Gpio_Configuration(void) {! X7 T- L6 d6 M- {& Z( I9 d

  27. * Q5 e3 g" z' U) }) e; S5 W2 X
  28.         //RST引脚和单片机的RST共用,单片机硬件复位TFT同时复位# A+ c1 B& H7 m0 t) z  E
  29.     GPIO_InitTypeDef  GPIO_InitStructure;9 s  x& `6 L! U  G/ |
  30. 2 a2 S7 ^' R0 B& }2 j
  31. #ifdef USE_SW_SPI
      P3 s2 y, A" f# ^* S( w, S
  32.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
      y0 G4 L" t. b5 w$ f& d
  33.         
    * x) \- P2 y' ^! e4 w
  34.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
    & N, v+ [! E: _) A, U6 y
  35.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    1 \# J0 d" d. k8 l2 S! @* V
  36.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    : ~& u5 X( C* \4 D- N8 |
  37.     GPIO_Init(GPIOA, &GPIO_InitStructure);        
    . i: S! B; X; H' m5 B
  38.         GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
    ' B: g- N  b8 I# W( P1 M/ l) M1 H
  39. * J8 a2 H8 X+ ]& s! ~9 ], U: B
  40.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;6 b5 u) T- V+ k8 B
  41.     GPIO_Init(GPIOB, &GPIO_InitStructure);6 h, m9 }1 p1 J6 r0 v/ q8 w% t
  42.         GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);//f-cs: U7 M( a) \$ d" b
  43. #else
      }* y3 n9 E' U8 i7 e2 P
  44.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
    ( e0 x0 q. B( A8 v" ^% o
  45.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    / E2 q' F  `  F  u1 j$ _
  46.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    ; m: k. R+ r# j0 D4 ?
  47.     GPIO_Init(GPIOB, &GPIO_InitStructure);        
    ; b& z. Q' l4 m
  48.         GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);2 q+ R8 k2 {' l, H  V) ~* Z% U; P0 f
  49.         
    $ [6 V2 p8 ~/ I
  50. #endif
    $ T+ w4 O5 {& T3 q1 D
  51. }
    * a: z6 }$ ]% C2 I

  52. # A0 \: P  a( s# {; b1 [
  53. //TFT写一个字节数据# i7 l' L0 ~+ @/ h+ G. U
  54. //dat:写入的字节
    ) P4 b/ C0 q8 @7 H% C9 z
  55. //cmd:( _" c5 C6 a* S9 ~, j
  56. //        0:命令0 v; z" z# }' Q% p' L9 h9 J( `
  57. //        1:数据        6 ?$ w; m) \6 g; t8 k# n% j
  58. static void TFT_WriteByte(u8 dat,u8 cmd)4 Y' s+ ]; b* R" Z- g7 ?6 u; R
  59. {' U- T2 L8 G) F/ {- y- j" V" |
  60.         if(cmd == TFT_CMD)        TFT_DC_L();   //命令# o: Z- @$ C7 Z/ c" _. A% g# W
  61.     else TFT_DC_H();//数据   
    - q0 O2 p4 j/ \; {# S! g7 a
  62.     TFT_ReadWriteByte(dat);
    ' m& P7 P7 f' y. h# C
  63. }
    9 x2 K2 Y, M! g5 I! d; c

  64. ) h, r6 |  z0 {8 u/ |
  65. $ T  t& w6 C1 q, _6 h
  66. //函数说明:设置起始和结束地址
    7 G# n6 O( ]  S. [0 y, ^
  67. //入口数据:x1,x2 设置列的起始和结束地址
    & U& \$ N) U1 V4 \! p
  68. //                y1,y2 设置行的起始和结束地址4 Q' l, T8 {# y) A1 w% l
  69. //返回值:  无5 P" j3 R4 J0 E5 ]7 I
  70. void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
    0 u% S9 @3 B" g  f
  71. {' n5 Q* Y' A2 y4 ?9 c, T
  72.         x2 = x2>LCD_WIDTH ? LCD_WIDTH:x2;4 b' `1 o( d$ W- P
  73.         y2 = y2>LCD_WIDTH ? LCD_HEIGHT:y2;- Y8 M- a8 i9 p
  74.         
    # O# e2 X! @  m) J. r- Q- \
  75.     if(USE_HORIZONTAL==0)
    9 O* e1 U2 o/ O! u/ M1 _+ K/ u" o
  76.     {
    0 N9 G" N6 f& @& u% a+ v" n6 ]0 L, s
  77.         TFT_WriteByte(0x2a,TFT_CMD);//列地址设置2 v- K. E( F* I1 S) G/ D
  78.         TFT_WriteByte(x1>>8,TFT_DATA);, a  N& j- T- d  o  T- j3 j! t
  79.         TFT_WriteByte(x1,TFT_DATA);
    9 M* T; t" e- O  j
  80.         TFT_WriteByte(x2>>8,TFT_DATA);# Q2 H; _4 x  ?- d3 ^
  81.         TFT_WriteByte(x2,TFT_DATA);6 ]- x6 f' E4 e9 K5 Q
  82.         TFT_WriteByte(0x2b,TFT_CMD);//行地址设置
    , f: y$ g1 ]  C' ~
  83.         TFT_WriteByte(y1>>8,TFT_DATA);
    8 m% X: K/ o6 R# b: w0 H6 ^$ H, k
  84.         TFT_WriteByte(y1,TFT_DATA);- O. e$ @$ [+ x+ r1 Q/ y) t* U: S" y
  85.         TFT_WriteByte(y2>>8,TFT_DATA);
    % V/ T2 F* W3 G. c1 C7 k2 D
  86.         TFT_WriteByte(y2,TFT_DATA);7 O3 j+ }$ p! d* B
  87.         TFT_WriteByte(0x2c,TFT_CMD);//储存器写
    $ z' ?2 q" c0 V# }! u* G  {$ J
  88.     }  s6 \9 ~. A" j- }# X3 I
  89.     else if(USE_HORIZONTAL==1)
    ' k9 t' T, B/ h: z, r! q
  90.     {
    % K- y( }" R1 k; \' u
  91.         TFT_WriteByte(0x2a,TFT_CMD);//列地址设置1 ?) u8 h% q6 b3 N9 i3 S
  92.         TFT_WriteByte(x1>>8,TFT_DATA);5 j9 \" N2 {4 N9 C+ i
  93.         TFT_WriteByte(x1,TFT_DATA);. c8 K! ~$ q: H3 t/ e' G
  94.         TFT_WriteByte(x2>>8,TFT_DATA);
    ' M' b) I: }+ O. ]. ?  n5 @& I  Y
  95.         TFT_WriteByte(x2,TFT_DATA);5 R0 ?9 c  k3 a1 b2 @
  96.         TFT_WriteByte(0x2b,TFT_CMD);//行地址设置
    0 g% W. a1 @0 L6 S
  97.         TFT_WriteByte((y1+80)>>8,TFT_DATA);
    3 d% w! Q% ~, {( W( f+ M
  98.         TFT_WriteByte((y1+80),TFT_DATA);) ]3 e' b+ \7 a. h4 ?) Z4 B7 k/ I. q5 {
  99.         TFT_WriteByte((y2+80)>>8,TFT_DATA);
      \5 O" Z" t: Y& U+ L
  100.         TFT_WriteByte((y2+80),TFT_DATA);
    % w/ |! I% S1 E. o, H
  101.         TFT_WriteByte(0x2c,TFT_CMD);//储存器写6 [7 K7 o8 ?5 h" i% [; o
  102.     }: _, }* B7 K0 C3 n
  103.     else if(USE_HORIZONTAL==2)
    2 \6 Z9 p- x; q4 D; N( C! t8 ?
  104.     {  {  U5 ~" D, u0 [2 m8 y
  105.         TFT_WriteByte(0x2a,TFT_CMD);//列地址设置
    ( c9 t8 j3 s9 Q+ @
  106.         TFT_WriteByte(x1>>8,TFT_DATA);* Q% ^% v" V; B7 M
  107.         TFT_WriteByte(x1,TFT_DATA);
    ' f6 D0 s7 {4 A
  108.         TFT_WriteByte(x2>>8,TFT_DATA);+ o  P9 B/ J6 G: K) V3 i: X
  109.         TFT_WriteByte(x2,TFT_DATA);
    / W* \9 j& G- i7 p5 ?; m! A
  110.         TFT_WriteByte(0x2b,TFT_CMD);//行地址设置5 n1 Y( b! b' G0 [7 {1 _% W
  111.         TFT_WriteByte(y1>>8,TFT_DATA);3 u4 |9 A" h2 z  d6 S* }( q
  112.         TFT_WriteByte(y1,TFT_DATA);
    9 B  D" w5 C! r1 h, O& Q
  113.         TFT_WriteByte(y2>>8,TFT_DATA);
    6 i& H. B2 ?" L1 @. c/ ?
  114.         TFT_WriteByte(y2,TFT_DATA);
    1 e7 }+ K9 I4 s7 J, N
  115.         TFT_WriteByte(0x2c,TFT_CMD);//储存器写1 y) P" c3 o+ L+ c) B- a
  116.     }" w6 m# c7 a$ z7 ]6 k
  117.     else; h% g# h# v: g- n( X
  118.     {1 B& w7 q% |0 D) q" ^) f
  119.         TFT_WriteByte(0x2a,TFT_CMD);//列地址设置3 F2 S4 G& |" Z% X$ J
  120.         TFT_WriteByte((x1+80)>>8,TFT_DATA);4 v' |, E7 N1 x4 s& i  [9 v0 Q
  121.         TFT_WriteByte((x1+80),TFT_DATA);' Y, ]9 u9 q8 \1 X* e
  122.         TFT_WriteByte((x2+80)>>8,TFT_DATA);% i% G0 c1 B; ^( T6 {
  123.         TFT_WriteByte((x2+80),TFT_DATA);
    ' M) \$ x! \4 f
  124.         TFT_WriteByte(0x2b,TFT_CMD);//行地址设置
    / y' C: Q0 l$ A! T8 K. u
  125.         TFT_WriteByte(y1>>8,TFT_DATA);0 ~1 L& g9 s; Y" n- [& C
  126.         TFT_WriteByte(y1,TFT_DATA);: b" H. P  Z& i3 E8 V# T
  127.         TFT_WriteByte(y2>>8,TFT_DATA);
    + \, J" ]$ i' T. g+ \9 A
  128.         TFT_WriteByte(y2,TFT_DATA);
    ; R5 |% Q1 r1 \% ?2 H, Z3 l
  129.         TFT_WriteByte(0x2c,TFT_CMD);//储存器写
    * K5 a8 c* Y2 M0 X" V& C. r% Y
  130.     }  K7 A4 h1 V; Z
  131. }) W0 c5 v/ a  M5 W: o% n
  132. void TFT_DisplayOn(void){
    " v8 @, v% Q/ y( x5 j/ f: l
  133.         TFT_WriteByte(0x29,TFT_CMD);
    1 `3 C- ]2 g! j4 o  G0 ]0 q0 e
  134. }
    # v& m) `* E/ A" f; w
  135.   e9 C* K. @+ V1 @6 W# r) C( k
  136. void TFT_DisplayOff(void){
    + d- Y- n) J' a  {! N
  137.         TFT_WriteByte(0x28,TFT_CMD);/ F7 w$ v, m( d) }) W3 l
  138. }
    , t; W4 V0 X! R7 o; W
  139. //画点
    * s, E  E' v+ k0 i1 A9 n8 l
  140. //x,y:起始坐标1 ]) ]0 d$ Y( L; l& I$ L, P4 f
  141. //color:颜色
    ! F. B9 C9 h+ L6 e
  142. void TFT_DrawPoint(u16 x,u16 y,u16 color)9 M  \# D& c& b2 Z6 r. B2 L
  143. {. H7 k( f7 F6 [( p
  144.     LCD_Address_Set(x,y,x,y);//设置光标位置
    , t; ^- y  p$ S$ c0 b
  145.     TFT_WriteByte(color>>8,TFT_DATA);
    , B- o- x0 {8 v
  146.     TFT_WriteByte(color,TFT_DATA);2 u! [' a/ |; Y& f7 k
  147. }9 ?: W& E1 c5 I8 j
  148. //填充区域- Q5 ?' B8 q+ o& C5 `" L
  149. //x1,y1:起始坐标2 O6 G# q6 p, Y3 t
  150. //x2,y2:结束坐标
    $ s' o) f- ]" H; r" k( O* c
  151. //color:颜色
    ( k# d8 F& y# ?. F5 L7 p
  152. void TFT_Fill(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
    4 `  J0 Y: Q) n& i' N# E
  153. {& L' y, f% j' P7 ]4 |  j
  154.     u16 x,y;9 M/ y+ V+ o& Q& D" Z0 H9 h5 l
  155.         
    ; ]. @3 ]2 W. E) {  Q
  156.         
    8 e# n( ^2 X3 z1 H" r3 X& y
  157.     LCD_Address_Set(x1,y1,x2,y2);      //设置光标位置4 z1 p* e5 X) t0 O
  158.         
    / {" C# S7 K* t8 Z1 b
  159.     for(x=x1; x<x2; x++){+ H# E+ A$ P* ]1 a
  160.         for(y=y1; y<y2; y++){& ~6 I. ]; D1 }0 U: B7 C2 V* X
  161.                         TFT_WriteByte(color>>8,TFT_DATA); //设置光标位置/ J. N4 v" C4 i* ~1 F
  162.                         TFT_WriteByte(color,TFT_DATA); //设置光标位置
    * [9 ?) @. u. D3 |# z
  163.                 }! d) H" a2 F0 D3 A
  164.     }
    5 b$ }; I7 O0 ]7 q. x
  165. }
    ) P, n7 g8 h& Q% p% C6 \5 p
  166. //清屏! y! n2 U, d/ a5 r
  167. void TFT_Clear(u16 color)
    " p0 f9 v2 g# p
  168. {
    2 [. H4 V4 H5 z" q( X
  169.     u16 x,y;
    / ?8 I5 a/ b+ j4 p  Z1 a' S
  170.         TFT_DisplayOff();//关闭显示
    7 `) O: ?, C2 R7 W9 f4 n* w7 {
  171.     LCD_Address_Set(0,0,LCD_WIDTH-1,LCD_HEIGHT-1);
      V+ [. M5 @' e2 V$ w; b
  172.     for(x=0; x<LCD_WIDTH; x++){
    1 d) c: Y. T5 T6 T
  173.         for(y=0; y<LCD_HEIGHT; y++){        
    ' d5 y; l5 S' ^
  174.                         TFT_WriteByte(color>>8,TFT_DATA); //设置光标位置" Y, D- P& E! @) z: f; g( t
  175.                         TFT_WriteByte(color,TFT_DATA); //设置光标位置& A' G* Z1 y. U3 \
  176.         }- x# t4 }7 j2 y) _0 W" ^
  177.     }2 h( x  `( b, r
  178.         TFT_DisplayOn();//打开显示; B9 [8 `  u) G: f% [! A9 X
  179. }. q/ e0 T* X% U9 E2 N

  180. ! O7 t: k4 e# v0 {
  181. //在指定位置显示一个字符,包括部分字符
    2 |6 G/ y1 \; L" m0 I+ q8 N
  182. //函数说明:显示字符
    7 B! ~3 j- D% t. C8 e) q% ^& G9 v
  183. //入口数据:x,y    起点坐标
    * S  E* P4 g2 R! J7 L, M- R
  184. //                chr    要显示的字符# [8 m1 |' f- M, c1 p
  185. //                mode   1叠加方式  0非叠加方式
      g. q& v* Q( C: O
  186. void TFT_ShowChar(u16 x,u16 y,u8 chr,u8 fw,u8 fh,u8 mode)/ W1 k3 x# A. |5 H1 ~* w. Z* d  M
  187. {
    / T2 V/ z. X/ @. e: A
  188.     u8 temp, t, tbit;
    - Z2 X  E( N+ o* ~: \/ G
  189.     u8 y0=y;
    % g3 j  _! a2 k* v! T0 i6 T
  190.     u8 *p;        
    - x: I6 Q! W* i% ^" w  c
  191.         % ~: m" f% {( g5 o9 w( A6 W- M
  192.         u16 csize = csize=(fh/8+((fh%8)?1:0))*fw;// 得到字体一个字符对应点阵集所占的字节数        
    : g* \5 m# `  C6 i1 c
  193. % C4 i8 z9 ?8 J' w3 r0 e
  194.     chr=chr-' ';//得到偏移后的值& R1 J. q; E0 g5 ?

  195. 0 g3 Q$ c; s0 ]% z
  196.     if(fw==6&&fh==8)        p = (u8 *)asc2_0608[chr];        //调用0608ascii字体
    ' q1 @3 V9 ]! e( _
  197.     else if(fw==6&&fh==12)  p = (u8 *)asc2_0612[chr];        //调用0612ascii字体
    . Y* d& w: u3 ~
  198.     else if(fw==8&&fh==16)  p = (u8 *)asc2_0816[chr];        //调用0612ascii字体
      [* e) y% F  ]. S
  199.     else if(fw==12&&fh==24) p = (u8 *)asc2_1224[chr];   //调用1224ascii字体
    3 g0 I$ O; j) Y" h. w& k) i! j
  200.     else return;        //没有的字库/ {% e) N+ R5 B, a0 S3 g
  201.         for(t = 0; t < csize; t++)        /*遍历打印所有像素点到LCD */
    % c! m- e; x/ g" w8 {2 b
  202.         {   " T/ n. k8 e! j* f
  203.                 temp = p[t];
    ) Q. ?( n" |+ i3 ~
  204.                 for(tbit = 0; tbit < 8; tbit++)        /* 打印一个像素点到液晶 */0 t" Z7 `4 Q7 `2 x% |: R) F$ s
  205.                 {        4 r. {/ m9 R5 G
  206.                         u16 color;/ e! u$ o) ]: }5 _
  207.                         . |' M5 H/ g5 w7 V9 r6 {
  208.                         if(temp & 0x80)        color = POINT_COLOR;
    . g- j  c. r* A: x+ K1 {
  209.                         else if(0 == mode)        color = BACK_COLOR;0 W$ T0 A; d- N6 A: w& [
  210.                         else color = ~POINT_COLOR;; T, R8 T; P7 L* k* k
  211.                         TFT_DrawPoint(x, y,color );( W& c0 g" A5 f
  212.                         
    ) y& O* ~. `8 v- S" A
  213.                         temp <<= 1;                        ; W7 Q1 `; Y5 a
  214.                         y++;6 y+ s( h4 G/ p* x
  215.                         
    , ~/ m8 E( t, W
  216.                         if(y >= LCD_HEIGHT) return;                /* 超区域了 */
    " d9 u% l3 Y, p. ~

  217. # A' Q8 c. d( u0 b
  218.                         if((y - y0) == fh){. `# l  B4 G1 s6 e; `0 Y
  219.                                 y = y0;
    7 O# Q6 O3 S) D+ D1 r
  220.                                 x++;2 Z( z0 J, J, m; s% |" Z/ @% ]
  221.                                 if(x >= LCD_WIDTH)        return;        /* 超区域了 */4 G2 E; ?. {5 s  p' G, m2 r
  222.                                 break;
    1 x, _/ n$ Y  J; z% _- Q% A' k! b
  223.                         }
    " n% {( T+ J0 E; I
  224.                 }           
    + E+ r, C1 w+ I& C; u! z
  225.         }            
    8 Q( Y! s2 ^0 O6 G6 _# P7 S
  226. }
    0 Y) @1 |. ]" b6 O2 k! W* ?: p
  227. //m^n函数" R5 n& u: C5 i) p1 L
  228. u32 mypow(u8 m,u8 n)8 j" i$ \. K  k
  229. {, [& ]1 t, {0 A. j* A9 j, q1 {, V% K
  230.     u32 result=1;1 w; H4 `' G) |3 }' D2 j$ u
  231.     while(n--)result*=m;
    8 j! c8 c3 P" k9 h
  232.     return result;" R- u; _+ K% p# g) m- g9 T4 A
  233. }* l6 y; K- y. W4 P+ b
  234. //显示数字3 `) i& U9 Q; E
  235. //x,y :起点坐标+ g8 q& f; A* y( [" k( U% W
  236. //len :数字的位数
    2 q1 J2 b1 i% V8 g5 u5 a- M
  237. //fw:字宽. ~, S2 _6 `" P. c, t6 X. ?2 k. [3 P
  238. //fh:字高2 k) \# k2 z, |' W$ S$ T# F
  239. //num:数值(0~4294967295);" I' k6 `5 v- O& J- N. A* r* U
  240. void TFT_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 fw,u8 fh)  C4 v% q9 e( t3 g3 O" [2 D9 q. ]
  241. {
    : C5 }2 \. g- ^' s9 }
  242.     u8 t,temp;: B$ X! p, a4 h
  243.     u8 enshow=0;- i  B; V! T" K
  244.     for(t=0; t<len; t++)
    9 i% e+ ?9 g+ I+ W/ |# c0 ?1 ~
  245.     {: w! _8 p" T5 |( ^0 `  m2 @
  246.         temp=(num/mypow(10,len-t-1))%10;4 M% J( S" G% h
  247.         if(enshow==0&&t<(len-1))
    ; s; `0 [) i; x& h, g
  248.         {, H1 u' j) }0 @9 X1 b% ~
  249.             if(temp==0): H8 [& V4 u: I! S0 p- I2 @
  250.             {. S" F' |2 |3 o. q/ X
  251.                 TFT_ShowChar(x+(fw)*t,y,' ',fw,fh,0);
    ; Z- i7 K- R, R* p
  252.                 continue;( {2 o1 T, Z7 w. O1 Q
  253.             }
    $ u! V7 U+ ?, [  P  U) y0 P; [. ]* p
  254.             else
    8 K  J% O; o. A
  255.                 enshow=1;
    ) Z4 G# S, P1 V9 r2 D! }
  256.         }0 L. c5 I' q' c# |8 K, d) B
  257.         TFT_ShowChar(x+(fw)*t,y,temp+'0',fw,fh,0);
    6 h* B0 p' ~4 U& B8 z
  258.     }& e# O% {% r+ A! P2 ~
  259. }% X# Y. D2 w" r$ G
  260. //在指定位置开始显示一个字符串
    " N+ z% H- q4 k: W. l
  261. //支持自动换行7 n8 [) s( v, ]5 N4 P; f  o4 M) u8 J4 D
  262. //(x,y):起始坐标; {' z5 O4 B) J$ x
  263. //width,height:区域
    " ?. Y( f8 `  l# t
  264. //str  :字符串
    ; O+ T; |# h& Y; g
  265. //fw:字宽
    " S0 ?" U3 I  B& S. u
  266. //fh:字高" l0 P$ k$ S0 H: P
  267. //mode:0,非叠加方式;1,叠加方式
    / S8 }7 e+ e# L, N: y7 h. @
  268. void TFT_ShowString(u16 x,u16 y,char *str,u8 fw,u8 fh,u8 mode)
    8 B1 c8 C" L2 w% |
  269. {
      M" M! z1 F  Q* {* A' w9 v
  270.     while((*str<='~')&&(*str>=' '))//判断是不是非法字符!
    - r5 F5 r1 n- u* G9 P6 q
  271.     {
    / t# M- e. t8 P. C9 z' c
  272.         if(x>(LCD_WIDTH-(fw))) {
    2 `" H5 h, K% }( \! S, B% u2 r
  273.             x=0;
    9 K# t) T' b) ?( a  u" e' D8 ^  P
  274.             y+=fh;/ T+ ~4 z9 }* @* O) f5 p  `$ p% {
  275.         }
    , {  U. S! a; v2 E& E2 p
  276.         if(y>(LCD_HEIGHT-fh)) {0 q1 K8 f& S; P1 w7 }. ]
  277.             y=x=0;   //TFT_Clear();/ u9 G0 v% G/ O3 t8 n: d( M
  278.         }
    . w% p) k' `3 {  _
  279.         TFT_ShowChar(x,y,*str,fw,fh,mode);* J: c3 H1 o. u
  280.         x+=fw;; {6 c8 r& w9 d0 }
  281.         str++;' q: _0 o3 O! D4 u3 Y% T$ T# n
  282.     }
    & H" p# |9 A0 `, ~4 C: N
  283. }) [8 b' I$ E) B7 Q5 n
  284. //显示一个指定大小的汉字
    . i, @/ a3 i7 c9 }' n/ i, l! X5 ~
  285. //x,y :汉字的坐标
    " j2 o, G; J& Y2 i9 j, x
  286. //font:汉字GBK码
    , p: I' z( s# l. {6 `9 q2 o
  287. //fw:字宽8 t3 N' d9 |& B+ L
  288. //fh:字高
    9 v8 V3 `* S( _: q
  289. //mode:0,正常显示,1,叠加显示
    - S7 F0 i+ }2 s* R' U( U8 k
  290. void TFT_ShowFont(u8 x,u8 y,char *font,u8 fw,u8 fh,u8 mode)
    9 _: i3 `/ m' w3 K! o: E$ u, J1 S& {
  291. {
    ; [# Y, ?% T: U& V$ v7 R
  292.     const char* font_table;! w* t* {0 Z* Z9 d; K: Q" L
  293.     uint16_t fontSeq;; Z; ]9 L1 I) H$ g4 i' \4 O$ X0 r
  294.     uint8_t temp,t,t1;( o, b, C+ [, K* N6 A
  295.     uint16_t y0=y;
    6 h+ b; z4 L, d' _$ M) E* y3 u
  296.     uint8_t csize=(fh/8+((fh%8)?1:0))*fw;//得到自由分辨字符所占的字节数
    ) D$ Y8 D9 }% Y- }( @' b8 ^
  297. + `# w" O# o) h9 V+ n
  298.     if(fw==12 && fh==12)
    5 r  F4 c6 R3 Q, w; m3 n
  299.         font_table = font1212_table;
    ! y5 d0 ~2 ~! u: ]2 {  A
  300.     else if(fw==24 && fh==24)  c$ `- V! y+ F# K
  301.         font_table = font2424_table;
    - `' N' K4 F+ N- P* a; Y
  302.     else return;/*没有的字库*/2 M2 v3 ?6 r7 u$ W
  303.     for(fontSeq=0; fontSeq<strlen(font_table)/2; fontSeq++)/*计算font_table对应字库的数组下标*/) ]" c  Z' ?0 S& S8 K
  304.     {6 J5 r3 T1 T/ g. Q, K: q: Y! G7 G# q
  305.         if(font_table[2*fontSeq]==font[0] && font_table[2*fontSeq+1]==font[1])7 Y, @! p2 |, S
  306.             break;
    4 M4 }7 U0 ]' D
  307.     }) @% |% S: V$ l  ?/ _- Z4 s7 G2 C
  308.     if(fontSeq >= strlen(font_table)/2) return;/*font_table中没有font该字*/
    $ Y  _  v6 K+ j. c. O+ h

  309. ) e9 ]$ k' E' Y3 S8 S6 P3 Y
  310.     for(t=0; t<csize; t++)
    # p3 R- O: A7 L* X9 F9 C5 L
  311.     {
    5 ?2 i* |' o9 G4 A% }
  312.         if(fw==12 && fh==12)/ U& a8 ~) u; }2 z: `$ ~$ ?
  313.             temp = font_1212[fontSeq][t];/*调用font_1212字库*/
    : e6 Z  k7 T- I  ^) B
  314.         else if(fw==24 && fh==24)
    4 G0 Z3 h) S8 q8 {0 x; b% G+ B
  315.             temp = font_2424[fontSeq][t];/*调用font_2424字库*/
    . o) b; i/ B6 U; I/ ?) r
  316.         for(t1=0; t1<8; t1++)
    # j7 s$ A' \* j8 ?  a6 L, @  K
  317.         {
    1 t" W5 G) w0 L
  318.                         u16 color;
    , p' g1 {) o/ b3 O: i
  319.                         / ^1 J) h6 a" p0 w3 _; L/ t  O# a4 N
  320.                         if(temp & 0x80)        color = POINT_COLOR;9 f% s# z0 S! u  L: j+ \+ y) c5 K
  321.                         else if(0 == mode)        color = BACK_COLOR;
    ) x( {7 j6 S* h) R: F$ ^5 Z
  322.                         else color = ~POINT_COLOR;
    8 W6 T- N: k* p5 l& m
  323.                         TFT_DrawPoint(x, y,color );& u5 B$ [0 s# ?3 z$ b5 Y
  324.                         # x$ d0 p8 x: i* L4 h
  325.             temp<<=1;" V0 W9 H0 E- }6 g% _) ^  ~* N
  326.             y++;4 V# T' d* i( j& S. r( |$ b
  327.             if((y-y0)==fh)
    - K# P0 V1 n, s. K
  328.             {
    2 M2 x! N' f) V! P
  329.                 y=y0;
    + E" z* }* @* Z: q% Q0 p1 D; \3 Z
  330.                 x++;+ L  Z0 D' q) ?. Y% l
  331.                 break;
    . C& o0 W0 Y# O8 h8 K- J  l! ^
  332.             }
    + v1 x: h5 T$ I8 D) f9 a$ Q
  333.         }+ `( |# }) {2 S: \0 L
  334.     }: y% ?$ y9 C6 Z' u4 @6 s- |
  335. }
    ; z/ ~% S" ~6 r; b  Y  D* E

  336. ; I3 A1 K% }6 C; \9 T7 R/ ]
  337. void TFT_ShowText(u16 x,u16 y,char *str,u8 fw,u8 fh,u8 mode); j8 A2 @6 n5 ]
  338. {
    ' s/ J) |4 M* I" @9 v
  339.     while(*str!=0)
    2 x, F* u, t, l, d% n
  340.     {
    " X: o! D( T" v& R# U% }) d- [) \+ M
  341.         TFT_ShowFont(x,y,str,fw,fh,mode); //显示这个汉字,空心显示
    # t6 V  E/ |$ e% T  ~
  342.         str+=2;
    1 T% n6 n* t3 w9 `+ {/ ?
  343.         x+=fh;//下一个汉字偏移
    # c; _5 @" {$ ^- A- K" L
  344.     }
    - \! x: W  ?: X8 n8 @, `
  345. }! {, m% h/ E0 I* S

  346. : N' z8 }3 M/ a8 {7 e" Y& H3 e: O
  347. //显示图片
    ; Q$ G4 j9 q9 n, u7 l" k" P( y# S  h0 }
  348. //x,y:起点坐标* k) R& }. ^* p  B0 n
  349. //pw:图片宽(单位像素)2 m; v8 H5 |/ C8 d0 \4 H& G
  350. //ph:图片高(单位像素)
    4 \5 R, ~) }: |5 O# o
  351. //p:图片起始地址; I9 ^7 p9 |  E
  352. void TFT_ShowPicture(u16 x,u16 y,const u8 *p,u8 pw,u8 ph)
    ) ]  e3 x0 N/ ^4 g( M2 u" p
  353. {
    6 E0 E. ~9 E2 j& d* j+ L4 f
  354.     u8 temp,i,col,row;
    8 O. q* }# o% w, o% n  ^
  355.     u8 y0=y;1 B% Z  O9 D6 t
  356.     u8 width=pw;
      N3 `1 i! f: [" o6 M/ r
  357.     if(x+pw>LCD_WIDTH)width=LCD_WIDTH-pw;//实际显示宽度
    % E, f! B6 y# ~# m, \( A! C$ [5 q
  358.     u8 high=ph;
    6 ?* m5 h& m( {! Y; }& i. L( Y- B2 b
  359.     if(y+ph>LCD_HEIGHT)high=LCD_HEIGHT-ph;//实际显示高度
    1 _7 P8 o5 ~: T6 z7 r
  360.     u8 exp_col_bytes=(ph/8+((ph%8)?1:0));//显示一行的字节数" w* ]) Z$ j/ ~  F7 B$ c7 v
  361.     u8 act_col_bytes=(high/8+((high%8)?1:0));//实际显示一列的字节数
    7 V. Q- g6 I8 v, E" R! m
  362. 4 {! y, s& B/ [( I: ^" _
  363.     for(row=0; row<width; row++) //列++9 Q' }# G6 a/ ]8 M; G5 n7 ~3 F
  364.     {
    : l3 Y: M$ i% A' l/ X
  365.         for(col=0; col<act_col_bytes; col++) //显示一列
    , t/ P6 v" |  y: I# F* _; ~2 r
  366.         {
    " b3 @* x9 Q$ X) h0 J. L" H' V
  367.             temp = p[col+row*exp_col_bytes];' T9 C: Z; [2 Y( J4 `
  368.             for(i=0; i<8; i++)& s- f2 m1 ?- }3 c
  369.             {% U' B) C0 f3 @" i
  370.                                 u16 color;
    . p7 b9 K' `5 m! x8 a5 ^
  371.                                 8 `/ s1 h( r& u6 E- g% O8 N% {" J
  372.                                 if(temp & 0x80)        color = POINT_COLOR;
    0 t4 e+ r$ T( u7 L0 P- B3 a2 J
  373.                                 else color = BACK_COLOR;
    $ X$ O2 D% n! L: v/ d* P# H3 l3 P

  374. - p# V/ ^" Y* G9 ~* q( v' q
  375.                                 TFT_DrawPoint(x, y,color );
    8 u. W( `* \0 G/ z& h6 ^- l
  376.                                 
    & e2 e6 r! A! i7 y! P
  377.                 temp<<=1;
    / z8 ~! l% K9 ~( S6 J( Q
  378.                 y++;
    / }! Q. j4 D$ a4 Y* W+ i! A' J' X4 \
  379.                 if((y-y0)==high)
      M' P9 H4 o1 y
  380.                 {2 k1 k# s0 Z( e1 G3 [
  381.                     y=y0;
    0 @0 c0 ?( D2 G3 A$ s3 d# `
  382.                     x++;/ d1 M# G  A# ]9 p- K6 x
  383.                     break;0 z6 |% o8 T" Y; Z& O
  384.                 }* |) E& x0 ]$ s: a
  385.             }
    / e8 r) O5 _$ X$ t4 J
  386.         }& Z2 V* c  }/ [' S" Z- W
  387.     }# ]5 o, [( O- K7 o7 H' ^
  388. }6 w) z. [$ w: Y" r+ S5 [$ C  u" o

  389. 3 O' b2 }- B0 z: b
  390. # `3 _# g2 m9 X% p9 r3 t# Y; b
  391. //初始化ST7789VW2 A5 G5 y% C8 A, p% a
  392. void TFT_Configuration(void)
    % v  Q" K, W4 e- O4 I4 D$ R0 h
  393. {
    ; m3 y9 S1 G& K0 |2 T+ J/ M
  394. #ifndef USE_SW_SPI
    $ u2 f) ^2 ~8 T  o, r' U
  395.     SPI1_ChangeMode(SPI_MODE_TFT);
    1 \8 X  Q# e! Q4 Z6 b) D  @: E) M
  396. #endif
    ! n: h6 h  h' J% W3 n
  397.     TFT_Gpio_Configuration();
    3 S; l8 r4 K+ T/ d: a" ]5 o8 f
  398.     Delay_ms(100);
    * Q: j/ G1 |/ ~- G0 K2 L
  399.   |, q; f$ w2 S
  400.         /* Sleep Out */) \: v& J: |  L+ v& a% t
  401.     TFT_WriteByte(0x11,TFT_CMD);
    / V0 L5 y' w' v  k6 _* J6 X' S+ N
  402.     /* wait for power stability */( T6 {# K4 L: y) z) W
  403.     Delay_ms(120);, }' S( Y7 }7 T6 `3 X. _9 a. f

  404. & B. \3 L2 F1 V8 s/ V; z
  405.     /* Memory Data Access Control */
    4 |, u+ j6 g# X/ H
  406.     TFT_WriteByte(0x36,TFT_CMD);
    6 F3 d  }' E. n3 U1 m' s3 p8 r. }
  407.     if(USE_HORIZONTAL==0)TFT_WriteByte(0x00,TFT_DATA);- H% B0 Z9 G/ l6 w6 o1 e  L
  408.     else if(USE_HORIZONTAL==1)TFT_WriteByte(0xC0,TFT_DATA);" S7 I& t6 U( L2 I* _  W
  409.     else if(USE_HORIZONTAL==2)TFT_WriteByte(0x70,TFT_DATA);
    & b! U  h7 d/ I2 F
  410.     else TFT_WriteByte(0xA0,TFT_DATA);5 P$ J# K8 w3 b% c/ c' A1 r
  411. * L* }* U# v6 K# i
  412.     /* RGB 5-6-5-bit  */( G0 c! k2 l6 W* D: Q4 Z
  413.     TFT_WriteByte(0x3A,TFT_CMD);
    " j2 `+ P4 \4 o' Y" \9 O7 ~
  414.     TFT_WriteByte(0x65,TFT_DATA);. A& D5 ]* a( F
  415. 8 O; @3 {4 H& y
  416.     /* Porch Setting */5 r8 f* Y) Q; y( |- e7 I% ]
  417.     TFT_WriteByte(0xB2,TFT_CMD);
    0 k8 F, t# t# H+ G7 I; z$ f! J
  418.     TFT_WriteByte(0x0C,TFT_DATA);1 C3 P) l2 Z: e0 X/ m' q3 \2 Y& d) {
  419.     TFT_WriteByte(0x0C,TFT_DATA);
    ) G* [1 c0 {( [8 }  R1 w, ~9 p
  420.     TFT_WriteByte(0x00,TFT_DATA);" P# u6 }. [! c1 c1 \0 x- s
  421.     TFT_WriteByte(0x33,TFT_DATA);+ h* F' |5 J, v5 i, A, @
  422.     TFT_WriteByte(0x33,TFT_DATA);
    4 v& M  Y8 @% ~* N8 p
  423. 9 j* B4 Z7 l, f0 r
  424.     /*  Gate Control */
    % {  a3 v$ h$ B6 h! n  Z
  425.     TFT_WriteByte(0xB7,TFT_CMD);$ `% n# }3 m3 X& Y, R, M# N6 A
  426.     TFT_WriteByte(0x72,TFT_DATA);
    ( K6 B  M' L6 Y! ]9 R* R
  427. + m! }; z, p/ q% n! \+ M+ T
  428.     /* VCOM Setting */, I$ X2 y0 i. r4 \& A
  429.     TFT_WriteByte(0xBB,TFT_CMD);
    ) b3 l5 L/ r! F( E
  430.     TFT_WriteByte(0x3D,TFT_DATA);   //Vcom=1.625V7 }6 Y3 G2 W# Z6 W- g5 r

  431. & e$ r( h9 j  d  E
  432.     /* LCM Control */
    0 M& S3 I2 f7 p' k0 r
  433.     TFT_WriteByte(0xC0,TFT_CMD);; h5 b0 l6 P+ T
  434.     TFT_WriteByte(0x2C,TFT_DATA);
    : G3 M+ G! g3 C! y" B+ I& }
  435. 9 x) k, I. |3 B' q2 Q% }
  436.     /* VDV and VRH Command Enable */
    ; e  ?$ ?* o$ e3 l& D# H2 C. ^0 {
  437.     TFT_WriteByte(0xC2,TFT_CMD);, E: k9 o* k7 q+ n% e
  438.     TFT_WriteByte(0x01,TFT_DATA);! n, s, \# e9 E$ A$ X) D" O

  439. 9 G0 B8 @. X3 E5 A/ W  c/ q
  440.     /* VRH Set */
    7 m1 V3 {/ L8 @% k2 v
  441.     TFT_WriteByte(0xC3,TFT_CMD);
    ! x: c( w% }' d% f! O
  442.     TFT_WriteByte(0x19,TFT_DATA);
    4 m9 T: @- D) i9 l
  443. . Q8 [% t/ `( i+ W3 s" n
  444.     /* VDV Set */! x- d4 A+ k% Q% Q! Q" n$ }% N$ T
  445.     TFT_WriteByte(0xC4,TFT_CMD);
    9 _3 P+ z- l# J% t+ {  s
  446.     TFT_WriteByte(0x20,TFT_DATA);- C% T- w' m* Y- T1 N+ y6 N

  447. ; l( I4 A9 V+ x5 z0 Q
  448.     /* Frame Rate Control in Normal Mode */8 ]( R; I# l: e& y3 T2 N  \" p! v
  449.     TFT_WriteByte(0xC6,TFT_CMD);
    , w; I7 m, G8 m, M! N
  450.     TFT_WriteByte(0x0F,TFT_DATA);        //60MHZ3 A6 f8 J2 k' r9 L  c8 a

  451. * i" T; \8 v! c' |$ S
  452.     /* Power Control 1 */
    9 h  Y8 L! x* r  |8 Z
  453.     TFT_WriteByte(0xD0,TFT_CMD);2 L( l" {! w- Y. R( T4 \
  454.     TFT_WriteByte(0xA4,TFT_DATA);
    8 d! ^, J- K4 ?, b2 z
  455.     TFT_WriteByte(0xA1,TFT_DATA);
    / t  Q; U$ a* x( S

  456. 6 @% J% X) }' F" Y
  457.     /* Positive Voltage Gamma Control */
    & K# ?( B0 q2 v" k: o" k7 \; a: m
  458.     TFT_WriteByte(0xE0,TFT_CMD);
    9 w8 `- o" A- N# J2 d
  459.     TFT_WriteByte(0xD0,TFT_DATA);
    0 ^* U% n1 k; Q$ c* b( l) B/ ?1 z
  460.     TFT_WriteByte(0x04,TFT_DATA);+ h# M' X0 B7 Z7 W& {2 b
  461.     TFT_WriteByte(0x0D,TFT_DATA);. D% C7 M+ C7 M
  462.     TFT_WriteByte(0x11,TFT_DATA);
    " k1 i0 P1 ~- u; }) k
  463.     TFT_WriteByte(0x13,TFT_DATA);6 m0 O3 f: c% x# g2 [; a: G6 s/ i
  464.     TFT_WriteByte(0x2B,TFT_DATA);" J- Y8 y. k" S
  465.     TFT_WriteByte(0x3F,TFT_DATA);7 u. B& s  s" l" S, j
  466.     TFT_WriteByte(0x54,TFT_DATA);7 x2 p0 U+ Y2 P. Y
  467.     TFT_WriteByte(0x4C,TFT_DATA);
    8 k% ~0 L6 W9 j
  468.     TFT_WriteByte(0x18,TFT_DATA);
    4 R" S! Y  E! K2 v: ~
  469.     TFT_WriteByte(0x0D,TFT_DATA);, L  M5 k, j# R3 g  k
  470.     TFT_WriteByte(0x0B,TFT_DATA);  ?! N8 f. [7 i% ]
  471.     TFT_WriteByte(0x1F,TFT_DATA);1 Y8 W6 \) ]0 l. Q
  472.     TFT_WriteByte(0x23,TFT_DATA);
    ) h4 w. r) b6 f
  473. & H5 Q$ Z3 y; b
  474.     /* Negative Voltage Gamma Control */
    2 j/ n, v- v9 l
  475.     TFT_WriteByte(0xE1,TFT_CMD);
    0 d3 s, [2 \2 Y( p2 a
  476.     TFT_WriteByte(0xD0,TFT_DATA);
    ; Y6 H3 H! M) q6 [, g
  477.     TFT_WriteByte(0x04,TFT_DATA);
    ) D8 c5 `: q7 M6 E* |- J4 o+ e( P: W
  478.     TFT_WriteByte(0x0C,TFT_DATA);- H2 ?' a" E/ [) z4 w
  479.     TFT_WriteByte(0x11,TFT_DATA);. ]9 I$ m7 k3 M2 g+ ]( P+ u7 W: u
  480.     TFT_WriteByte(0x13,TFT_DATA);
    . W7 k+ b  @9 `' q2 n; B( r
  481.     TFT_WriteByte(0x2C,TFT_DATA);
    : q. ^2 Z* e3 M
  482.     TFT_WriteByte(0x3F,TFT_DATA);
    5 U$ ], t5 O5 L* K5 a
  483.     TFT_WriteByte(0x44,TFT_DATA);% b% i- @* m2 P7 @* X/ w6 I
  484.     TFT_WriteByte(0x51,TFT_DATA);
    1 B+ m# O6 _6 x( f* D4 ?# i0 f; K
  485.     TFT_WriteByte(0x2F,TFT_DATA);
    0 ~6 t/ T8 `, s2 r1 g" e$ x, D+ w1 q* i
  486.     TFT_WriteByte(0x1F,TFT_DATA);& U4 ~6 B+ `4 ~$ S: |2 Y
  487.     TFT_WriteByte(0x1F,TFT_DATA);
    ( |  G5 X- j& [" `
  488.     TFT_WriteByte(0x20,TFT_DATA);; Q/ U4 e% l0 T$ W
  489.     TFT_WriteByte(0x23,TFT_DATA);4 o$ g2 F& [3 Y& b$ _& p# n9 V

  490. 9 x7 `" \8 ~" Q8 Q8 J
  491.     /* Display Inversion On */; V9 [( }' s" x- b' t' g
  492.     TFT_WriteByte(0x21,TFT_CMD);
    . @2 h% C" j* c
  493.     TFT_WriteByte(0x29,TFT_CMD);
    * T5 X+ G# Q" v: [; \

  494. ; c; K- A6 j! Q7 w6 b. w6 V
  495.         TFT_Clear(BACK_COLOR);. g5 j1 p7 h- _1 u* N  D

  496. * n" }- t0 H' d6 ^( f( `
  497. }
    ) w1 f* D' A/ T) l6 N
  498. 2 {& J; z- s8 w" P
  499. 9 o3 e$ _! g  x0 o6 J
  500. /*********************************************END OF FILE**********************************************/
复制代码
0 T% `9 K) j" v8 f9 v( B$ s8 O. P
7 z, Z$ S  M' ?; c$ F1 P
TFT.h文件:
# v. l/ o3 r8 P' c( }5 R5 s9 F) m; a. U- V# s! r
  1. #ifndef __FY_TFT_H
      z0 b0 T# v" b- y
  2. #define __FY_TFT_H
    " S& ^/ Q0 i" l' f/ x
  3. 4 e3 N/ X2 o5 x( E
  4. #include "fy_includes.h"" Z6 H# r5 ]/ S  q3 d
  5. , Q% V4 W2 E; \' y) S/ ?. s

  6. " t4 q- e1 p. h& x& L
  7. //#define USE_SW_SPI
    ! t" n* q% r" z' W! v7 ^( r/ i

  8. ) {" E9 G9 f! t: s7 |% _
  9. #ifndef USE_SW_SPI
    9 f2 ]) u7 T+ W  Y! e
  10.         #define TFT_ReadWriteByte SPI1_ReadWriteByte
    " C3 z$ _( m) N* [
  11. #endif
    1 R! X, I1 H) Y
  12. #define USE_HORIZONTAL 0  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏. Q& O3 m' m& l/ q( R' v( Y! w
  13. ! g, h8 U- K" b; @/ r6 r! ]
  14. #if USE_HORIZONTAL==0||USE_HORIZONTAL==16 ~2 ]& q# J& l& o$ @& j
  15.         #define LCD_WIDTH 240
    ' M3 A: A7 W. l# G7 o
  16.         #define LCD_HEIGHT 240, F- G" H0 P9 A% @
  17. #else
    $ {* e) H, @- c- }( d4 b7 E9 k& v
  18.         #define LCD_WIDTH 240
    3 t: J  S9 i  S* _
  19.         #define LCD_HEIGHT 240+ Y/ L% q$ [- U8 K0 T
  20. #endif
    " c; J6 e1 Z; g
  21. , w; P% s  m- p. `/ j" c7 ]6 n
  22. #define TFT_SCLK_RCC    RCC_APB2Periph_GPIOA8 D5 C- j( S5 Z
  23. #define TFT_SCLK_PORT   GPIOA
    6 |& D& a2 Q2 n$ I7 Q
  24. #define TFT_SCLK_PIN    GPIO_Pin_5+ ?/ z1 z- i- @, A, b1 F
  25. #define TFT_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_5)
    ' Z0 x! g& ^8 e1 U
  26. #define TFT_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_Pin_5)
    ; d3 D# S/ A. r* `- j1 m7 L0 W' p" \

  27. * c/ p5 @) U6 X2 \( r
  28. #define TFT_SDIN_RCC    RCC_APB2Periph_GPIOA( P+ D- o0 q3 }# y
  29. #define TFT_SDIN_PORT   GPIOA4 \( H+ o/ z; q0 @3 p5 f
  30. #define TFT_SDIN_PIN    GPIO_Pin_7- N& X7 i2 l6 S4 y# I
  31. #define TFT_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_7)//DIN
    7 t, F  w8 m/ l4 h1 e, n
  32. #define TFT_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_Pin_7)
    ; G' D/ t4 D+ L

  33. , @, Y% f% |9 s  h- ?
  34. ( U$ e0 p+ w7 A( w0 x; L, J
  35. #define TFT_DC_RCC    RCC_APB2Periph_GPIOB
    8 N, Y5 V/ A. B9 n4 z
  36. #define TFT_DC_PORT   GPIOB+ Q6 Q7 h" o! y& ]( t8 V0 K9 N
  37. #define TFT_DC_PIN    GPIO_Pin_7, \6 b) O9 X! K3 [, W5 E* ]+ ?
  38. #define TFT_DC_H() GPIO_SetBits(GPIOB,GPIO_Pin_7)
    7 x5 @( Q" S; v' R' k
  39. #define TFT_DC_L() GPIO_ResetBits(GPIOB,GPIO_Pin_7)6 _' F+ V) A* Z7 l" S# h$ T. Q

  40.   F* Y! u3 z" k  J. e! O- W
  41. #define TFT_BLK_RCC    RCC_APB2Periph_GPIOB
    0 Q+ S/ i2 A; v- u# K6 O
  42. #define TFT_BLK_PORT   GPIOB& M% |" g  o; u% |! G( [
  43. #define TFT_BLK_PIN    GPIO_Pin_8
    % K& I9 y; i4 F) X/ P* a
  44. #define TFT_BLK_H() GPIO_SetBits(GPIOB,GPIO_Pin_8)
    ; t" ~  t- W$ h1 j
  45. #define TFT_BLK_L() GPIO_ResetBits(GPIOB,GPIO_Pin_8)
    " B0 F' `) A. g4 w, R
  46. * @) B$ ~$ z! h
  47.   r- A% ~' p1 C
  48. extern u16 BACK_COLOR;' E6 W( B4 _. ~, c6 |
  49. extern u16 POINT_COLOR;0 m% c6 i  n% W2 q
  50. 4 \- w. t, {# O1 e# P: b
  51. #define TFT_COLOR_RED                0xF8009 l9 s* {; N' k& X2 \) [6 R* ]
  52. #define TFT_COLOR_GREEN                0x07E0% Q2 C3 S8 c' N, t' H& Y( Q! }
  53. #define TFT_COLOR_BLUE                0x001F
    + h1 a& `' z9 U. |* o( q
  54. #define TFT_COLOR_BLACK                0x0000+ C7 @) _' v% ^6 m7 f
  55. #define TFT_COLOR_WHITE                0xFFFF$ J: n. X# ]3 C1 K" x- N% u, |
  56. #define TFT_COLOR_YELLOW    0xFFE0/ h' g, C+ l/ i' e4 a

  57. 8 F5 m& k" l$ F( ~$ {

  58. 1 `* L3 ]$ }0 G" W6 }6 I2 I9 I
  59. void TFT_Configuration(void);9 k. K; `9 t+ X! W( V8 Y! v
  60. void TFT_DisplayOn(void);% p: p. V" _0 Y
  61. void TFT_DisplayOff(void);/ z4 M% a. W8 L( a
  62. void TFT_Clear(u16 color);4 ^- T( p" ?# z- b3 b6 N
  63. void TFT_DrawPoint(u16 x,u16 y,u16 color);
    - c3 f+ s# [% _# v( f
  64. void TFT_Fill(u16 x1,u16 y1,u16 x2,u16 y2,u16 color);% G( t5 e$ x- M) D4 G. D5 B
  65. void TFT_ShowChar(u16 x,u16 y,u8 chr,u8 fw,u8 fh,u8 mode);2 O8 @. c& ?& U6 F
  66. void TFT_ShowString(u16 x,u16 y,char *str,u8 fw,u8 fh,u8 mode);
      E/ N$ H8 J* d" R$ O
  67. void TFT_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 fw,u8 fh);  [! C; [2 v. i
  68. void TFT_ShowText(u16 x,u16 y,char *str,u8 fw,u8 fh,u8 mode);. F' h% ^2 Q3 x$ h) \" l  a( |
  69. void TFT_ShowPicture(u16 x,u16 y,const u8 *p,u8 pw,u8 ph);
    / A2 Z: O" F! g  @$ Z
  70. 4 M8 o- s3 C  a! @( c/ X' K- f6 b
  71. 9 A1 ~/ \( D' A+ ]) _1 X, p( K
  72. 7 e* a" Z' S  |& e( k
  73. #endif
    : X: \; P4 U# q5 ]

  74. ! f& A* ~) g! L- o
  75. /*********************************************END OF FILE**********************************************/- s& L+ v' y5 @% M
复制代码

" Y5 J( R# B; v, y4 V- C关于SPI,源码支持硬件SPI及软件模拟SPI,默认是硬件SPI,需要软件模拟在TFT.H里面打开宏定义就好了,
- a0 {2 G! d  N: o! T- l2 G$ q/ q# z
SPI.C
: |: T! E% T3 c' D  Z5 \
, }# l, G: u; U5 q
  1. #include "fy_spi.h"
    4 h/ X; A- s; F- _) g1 n% h7 P
  2. 4 b% V$ f! ^. B0 ^! p  M
  3. SPI_InitTypeDef  SPI_InitStructure;
    4 s% S7 V& p! k7 ~; U
  4. ( Z% M4 m# H/ z  ?0 `% O
  5. void SPI1_Configuration(void)" }; V* G6 d; ~0 h( ^
  6. {
    , T. d' a% M& B
  7.     GPIO_InitTypeDef  GPIO_InitStructure;
    ( U7 U$ A. ^7 y

  8. & k1 Q: S6 F0 `- x
  9.         //SPI1的时钟来源是APB2 72MHz1 _, i, ], ^( ~# c4 p& W/ h8 [
  10.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE);        //使能GPIOA、SPI1时钟5 K5 K1 d3 Y& }; c3 g' P

  11. & o+ `! s0 R/ x1 S
  12.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//PA5~7复用功能输出
    & a# l/ z7 U( X2 S; w
  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    ! s+ w& F# Q9 u: p
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    5 b5 ]) ?3 u4 F! m+ F
  15.     GPIO_Init(GPIOA, &GPIO_InitStructure);                                //初始化1 B: ]9 w3 P' c, d3 u8 z
  16.         GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
    8 l! H6 [$ U, M1 D" d2 R3 a
  17. 1 k# ?. h! I0 Q  `6 I. |4 b
  18.     //这里只针对SPI口初始化2 y7 i5 a+ ]1 q; k
  19.     SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
    9 e* }( a5 W) w4 R& y
  20.     SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //设置SPI工作模式:设置为主SPI
    4 O  t( R  Q( P2 {/ F1 v# X
  21.     SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //设置SPI的数据大小:SPI发送接收8位帧结构8 ]6 B& G) h! N% ?9 O' _3 J# i
  22.     SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;                //串行同步时钟的空闲状态为低电平
    5 I6 a; v0 V3 d
  23.     SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;        //串行同步时钟的第一个跳变沿(上升或下降)数据被采样
    0 c' ?% I' }8 Q& I( Y* [
  24.     SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制7 V( Q1 ]0 Y9 X
  25.     SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;                //定义波特率预分频的值:波特率预分频值为
    8 H- \5 h2 K0 z
  26.     SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;        //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
    ) _! u) h9 K. q6 V% U1 K
  27.     SPI_InitStructure.SPI_CRCPolynomial = 7;        //CRC值计算的多项式1 t# I1 Y5 E3 R( X' {' R
  28.     SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器! y7 D" }2 @$ R$ f

  29. 6 L+ v$ M) m& Q- W+ D" A
  30.     SPI_Cmd(SPI1, ENABLE); //使能SPI外设. T2 R3 q7 l# m5 \
  31.         SPI1_ReadWriteByte(0xff);//启动传输          j6 ?, _* D  |# s3 B) X
  32. }0 E- h0 M7 {( N1 b; [
  33. ; W6 G! V$ p, a; w# H
  34. //SPI1速度设置函数1 X5 {& q( f2 e+ v. I
  35. //SPI速度=fAPB2/分频系数
    . g$ B/ x" Z9 j2 }+ H( f  d
  36. //@ref SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256
    % q% Q$ P- G9 a1 O
  37. //fAPB2时钟一般为84Mhz:
    $ `! O# B4 X- g$ P! p1 j& R) u4 A/ y5 k
  38. void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler)
    % U- l4 n2 G* V# S, _4 a
  39. {
    ( T; B! p2 P. g
  40.     assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//判断有效性
    # g, d; E" U8 o' X, z
  41.     SPI1->CR1&=0XFFC7;//位3-5清零,用来设置波特率
    : ]4 d1 A% S: o  l0 t
  42.     SPI1->CR1|=SPI_BaudRatePrescaler;        //设置SPI1速度$ P5 P# z$ a9 v% r' A$ t: u9 A5 J# X
  43.     SPI_Cmd(SPI1,ENABLE); //使能SPI1
    , b( p5 G, \* c
  44. }4 ]2 I: a. P( C' P& Y  P

  45. * }3 B! P) F8 `
  46. //SPIx 读写一个字节
    ' V0 u* _* X- O/ [8 j3 ?  r
  47. //TxData:要写入的字节
    # M" i" U. I' Q- j/ h  T
  48. //返回值:读取到的字节# \* s( i! m6 C7 H
  49. u8 SPI1_ReadWriteByte(u8 TxData)' L$ Z. A& P8 z1 d
  50. {
    8 S0 r3 P$ }! Y  N+ \" F
  51.     u8 retry=0;
    ; Y) l; ]+ k) T, p' m
  52.     while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
    ) F3 W) M; J' i/ C
  53.     {# X# P7 }1 ~) H. U% O8 M! n
  54.         retry++;
      Z# ]5 W" A, N/ p5 H
  55.         if(retry>200)return 0;
    ( W) x9 H/ M( z& T
  56.     }
    ! Y6 J& L8 l3 }% m6 Y4 _' ~
  57.     SPI_I2S_SendData(SPI1, TxData); //通过外设SPIx发送一个数据3 |- L1 L/ C1 k8 \
  58.     retry=0;
    ( |" K- y8 L4 ^

  59. 8 d, p# `( H0 F9 r5 p, M
  60.     while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)//检查指定的SPI标志位设置与否:接受缓存非空标志位
    ' u' j8 L# p$ L, |8 C. V! B6 K
  61.     {
    8 d3 K/ P( x- c/ L3 _- j
  62.         retry++;: H- |( v4 Q) v
  63.         if(retry>200)return 0;. B- B2 {7 J/ G; c% U6 |
  64.     }
    % M, p# u0 y- b
  65.     return SPI_I2S_ReceiveData(SPI1); //返回通过SPIx最近接收的数据
    ' o+ f! f6 x0 N+ l
  66. }6 I3 Z1 Q& n) ?" l# K
  67. 9 J! z- e1 l. O( E& E( r* L
  68. void SPI1_ChangeMode(_typdef_spi_mode mode)
    4 z# T" t: t% Q/ m
  69. {6 s" H* b# R; n& [$ p  h. Z
  70.     static _typdef_spi_mode last_mode=SPI_MODE_NRF24L01;
    ; m0 C, H! C7 b  H5 s+ _6 r

  71. ! U+ Y2 d2 L$ \4 s
  72.     if(mode == last_mode)        return;
    8 h+ @4 ~0 y+ u1 d: `! L6 S) r8 f$ I
  73.         last_mode = mode;
    / v; Q9 C5 }, J
  74.         & Q: A* ?% w* j8 E
  75.     if(mode == SPI_MODE_NRF24L01)
    1 Y  b: I; m1 y* F
  76.     {) C* H+ P; i$ O; _
  77.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;$ a6 B+ s+ A4 M& W8 _/ Y
  78.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
    $ ^" ?- f# T$ j; b+ {. w* o
  79.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;        //9M
    , F5 p! q- J/ W. `
  80.     }- ]( D& ~; E/ w0 ]9 c- }
  81.     else if(mode == SPI_MODE_LT8920)
    4 g: |3 R$ h. k
  82.     {
    4 W# A8 r9 T. m$ [1 M. Z: l
  83.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
    4 i* s. b/ \- m4 m. X4 @5 H# n: J
  84.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;& q: Z) B% Q- d3 f
  85.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;        //9M( M3 z1 c! _  z9 x! ^% A- Z
  86.     }; J! [$ A# m( k2 r0 M) M
  87.     else if(mode == SPI_MODE_FLASH)
    . `0 [* a- n1 A
  88.     {
    . M* I& r: Z0 k' I
  89.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;) V0 N, F8 V& T- G' J/ g4 ]( K$ T
  90.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
    * N: d9 A8 }. B- c/ N
  91.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;        //36M
    , f% p! h7 s3 w2 {
  92.     }
    ' _# [$ D1 x. j0 o% R
  93.         else if(mode == SPI_MODE_OLED)6 O# s4 Q+ g; a1 C0 ?% X$ Z
  94.     {/ y" G4 I( A9 g- Y5 ^* m
  95.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;! V# Y" v! r( G, A2 |2 J& b% G0 b
  96.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;5 X! U; G3 G3 w' C  y7 J
  97.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;        //36M
    8 ^0 v" K4 Q: [' V( O8 K
  98.     }9 e  h' Y! U2 G7 V2 t! p/ t5 ]
  99.         else if(mode == SPI_MODE_TFT)
    # ]2 m0 K$ u5 t- C6 z
  100.     {5 B7 ?" l1 h2 R4 @# K  @
  101.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
    9 S4 K% p; W2 N/ V) b3 i; d3 n4 W
  102.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
    3 N  \" R, X7 Z& f, p: {
  103.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;        //36M
    * G: X! H! x( J& d
  104.     }
    $ F1 {0 Y  k; U% f7 Q
  105.     else
    2 l# i9 X' j1 M( ~# q  I$ k
  106.         return;" z8 b% M& ]6 t  f
  107.     SPI_Cmd(SPI1, DISABLE);) [  h7 V* `9 o, N8 `3 y2 C
  108.     SPI_Init(SPI1, &SPI_InitStructure);) D) a4 q6 D2 Z* E* g6 e2 e
  109.     SPI_Cmd(SPI1, ENABLE);( e8 J0 Z/ r& r2 o+ Z/ e% A
  110. }% ^$ R# [* R0 N7 |$ _; ?
  111. /*********************************************END OF FILE********************************************/
      e% G' b* J0 X/ K  M8 u
复制代码

1 \+ _& G6 w) w* K2 T( X* S5 o' j) Q
SPI.H
( @! Q: U) M; W1 y7 |) V0 ^0 L# {+ G+ i( `* y" F
  1. #ifndef __FY_SPI_H5 S# i7 [  b# N4 i' Q5 N* I7 A( ~
  2. #define __FY_SPI_H' I( F% v* y! c( \# t) t6 H$ q9 c

  3. 8 ?- b0 s' y4 z" b8 R* ~
  4. #include "fy_includes.h" 4 W1 ~* Z% h( F5 Q! e2 N8 W
  5. . n; `: {9 `: L1 n9 g8 Z8 s

  6. - _7 \/ H; t- X8 Z
  7. typedef enum
    - I( X; c' C/ \: y9 }2 m
  8. {! d2 t" L4 L; j" w
  9.     SPI_MODE_NRF24L01=0,
    ) s: ?8 x- v! H+ [( ^0 O
  10.     SPI_MODE_FLASH,5 i$ `  e) l7 _, I* r  i
  11.     SPI_MODE_OLED,
    ! x5 _  H9 U! \" j; E1 P
  12.     SPI_MODE_TFT,. ?# H; `' V% O/ d4 L
  13.         SPI_MODE_LT8920,1 Z  _- j! Y* `4 j  k, a
  14.     _SPI_MODE_MAX
    * z4 r1 H- w/ ^
  15. }_typdef_spi_mode;
    4 z% q. _3 o( H/ ]( O3 O
  16. - O% J( u! C0 B. `$ z3 ^  g
  17. void SPI1_Configuration(void);         //初始化SPI口2 V! r+ R$ p; F7 T
  18. void SPI1_SetSpeed(u8 SpeedSet); //设置SPI速度   
    # E* s, \+ U0 D9 z% [
  19. u8 SPI1_ReadWriteByte(u8 TxData);//SPI总线读写一个字节
    & v8 c5 k7 r  m; x. l2 i2 ^
  20. void SPI1_ChangeMode(_typdef_spi_mode mode);
    2 ]; e) Q" w( b% I" \; v

  21. 4 w# S) P  a& u5 P
  22. #endif
    / ^4 t3 F: U' [; x) a  d( Z* c
  23. - |7 {8 t7 _! `) I. N$ I0 n/ _
  24. 还有就是字库文件、图片等,这里为了方便就没有存外部的flash,直接用单片机内部的flash,7 H4 \4 x& n* j/ @8 _2 ]$ E8 ~
  25. + k0 w* j) I( O! W( ~: s. u
  26. FONT.C文件8 P5 C3 j+ D4 r& Z( K

  27. & f* Y  X( p0 ]
  28. #include "fy_oledfont.h": z$ K! R* P& T$ r; v5 B- G- \- A
  29. 7 V2 B9 a+ C+ `1 y& {0 ~
  30. //PC2LCD2002取模方式设置:阴码+逐列式+顺向+C51格式+ Z9 L6 A9 h  l+ w, v, {9 x

  31. * {2 q. m- B% D' T* K! {
  32. //06*08==宽*高 ASCII字符集点阵 (Terminal Greek8字体)
    & m8 l- G  c3 A$ L
  33. const unsigned char asc2_0608[95][6]= {( q! N! e  v8 p
  34.     {0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/4 m: K0 }0 [0 J
  35.     {0x00,0x00,0x60,0xFA,0x60,0x00},/*"!",1*/
    1 \2 `/ {2 f0 N8 G
  36.     {0x00,0xE0,0xC0,0x00,0xE0,0xC0},/*""",2*// ^* F# I! z. j) E7 U8 i% p+ i
  37.     {0x00,0x24,0x7E,0x24,0x7E,0x24},/*"#",3*/4 b& j: e; [6 \! m/ V
  38.     {0x00,0x24,0xD4,0x56,0x48,0x00},/*"$",4*/2 E) s2 R* Q8 N: N: ^& g
  39.     {0x00,0xC6,0xC8,0x10,0x26,0xC6},/*"%",5*/# I/ F6 d2 \! I
  40.     {0x00,0x6C,0x92,0x6A,0x04,0x0A},/*"&",6*/
    ' E' \, {4 z# C+ B1 J6 j, L5 B& M
  41.     {0x00,0x00,0xE0,0xC0,0x00,0x00},/*"'",7*/
    . A  ?' M9 A/ H# h& s
  42.     {0x00,0x00,0x7C,0x82,0x00,0x00},/*"(",8*/. ]4 p+ M; D3 }3 G* e
  43.     {0x00,0x00,0x82,0x7C,0x00,0x00},/*")",9*/
    ( W: ~1 J) a" d! E( f
  44.     {0x00,0x10,0x7C,0x38,0x7C,0x10},/*"*",10*/' L/ Q/ u3 E. ?, n, N) f
  45.     {0x00,0x10,0x10,0x7C,0x10,0x10},/*"+",11*/
      G; A% U* a8 D5 o7 x
  46.     {0x00,0x00,0x07,0x06,0x00,0x00},/*",",12*/
    * y9 w6 L' i# U3 D8 q. {' s
  47.     {0x00,0x10,0x10,0x10,0x10,0x10},/*"-",13*/
    ; n1 z, O% }6 S
  48.     {0x00,0x00,0x06,0x06,0x00,0x00},/*".",14*/
    ; y( K" G/ y! l+ R2 g# _  r9 J( x- ]7 [
  49.     {0x00,0x04,0x08,0x10,0x20,0x40},/*"/",15*/( Q: u  ^: |) i3 }
  50.     {0x00,0x7C,0x8A,0x92,0xA2,0x7C},/*"0",16*/
    # b3 w7 N7 K* x3 s7 w/ ?/ X
  51.     {0x00,0x00,0x42,0xFE,0x02,0x00},/*"1",17*/4 U! C$ J* N2 v" b- S2 Q$ ^& ^4 a4 k
  52.     {0x00,0x46,0x8A,0x92,0x92,0x62},/*"2",18*/
    * g5 Z7 ^" s6 H3 \7 h3 h0 h$ O+ i
  53.     {0x00,0x44,0x92,0x92,0x92,0x6C},/*"3",19*/
    / r. J+ b3 z8 E- t) c  X0 @# Y9 i
  54.     {0x00,0x18,0x28,0x48,0xFE,0x08},/*"4",20*/* a& X, n/ o: P3 _* [
  55.     {0x00,0xF4,0x92,0x92,0x92,0x8C},/*"5",21*/+ G* p7 m9 r/ h! d: v7 w: e4 J6 `
  56.     {0x00,0x3C,0x52,0x92,0x92,0x0C},/*"6",22*/
    2 C0 P' g2 Q, v6 v8 o8 U
  57.     {0x00,0x80,0x8E,0x90,0xA0,0xC0},/*"7",23*/. w6 Z1 H! p8 O# j% |. l
  58.     {0x00,0x6C,0x92,0x92,0x92,0x6C},/*"8",24*/
    ) P4 Z$ r& B9 M3 W# W' N7 ^4 c
  59.     {0x00,0x60,0x92,0x92,0x94,0x78},/*"9",25*/0 I! e! |1 _7 ], `0 r' e0 P
  60.     {0x00,0x00,0x36,0x36,0x00,0x00},/*":",26*/
      x/ t  Z5 R$ L- R5 z$ @
  61.     {0x00,0x00,0x37,0x36,0x00,0x00},/*";",27*/
    1 |. d3 W+ |- v6 ^+ f& k4 n4 ^8 D
  62.     {0x00,0x10,0x28,0x44,0x82,0x00},/*"<",28*// E' X# C& y3 F; @; S7 O
  63.     {0x00,0x24,0x24,0x24,0x24,0x24},/*"=",29*/: Z; {1 {8 ~/ {- e2 u
  64.     {0x00,0x00,0x82,0x44,0x28,0x10},/*">",30*/
    + J3 K# F3 h* e3 J! ^/ x
  65.     {0x00,0x40,0x80,0x9A,0x90,0x60},/*"?",31*/
    % [- B( _! Z: i% z& a
  66.     {0x00,0x7C,0x82,0xBA,0xAA,0x78},/*"@",32*/
      e1 M  c& H" Z
  67.     {0x00,0x7E,0x88,0x88,0x88,0x7E},/*"A",33*/
    9 ?6 ]( d6 @+ o5 E
  68.     {0x00,0xFE,0x92,0x92,0x92,0x6C},/*"B",34*/4 L6 C' S; t; m7 t( h  t$ f
  69.     {0x00,0x7C,0x82,0x82,0x82,0x44},/*"C",35*/8 o; J7 e' |9 o: a
  70.     {0x00,0xFE,0x82,0x82,0x82,0x7C},/*"D",36*/
    8 u7 E! W. Z! f% M
  71.     {0x00,0xFE,0x92,0x92,0x92,0x82},/*"E",37*/
    " h; U1 S2 q  |0 v0 J
  72.     {0x00,0xFE,0x90,0x90,0x90,0x80},/*"F",38*/
      M' o( Z! F8 a, G0 u& D, G
  73.     {0x00,0x7C,0x82,0x92,0x92,0x5E},/*"G",39*/* W8 E* X! {7 |; T4 e, ?0 N
  74.     {0x00,0xFE,0x10,0x10,0x10,0xFE},/*"H",40*/4 `" e0 J5 ?% q9 j7 D
  75.     {0x00,0x00,0x82,0xFE,0x82,0x00},/*"I",41*/5 t' ?- q& s  i/ T3 j
  76.     {0x00,0x0C,0x02,0x02,0x02,0xFC},/*"J",42*/. R6 G5 f( l- d
  77.     {0x00,0xFE,0x10,0x28,0x44,0x82},/*"K",43*/
    % \, l* g) K( J0 L' `
  78.     {0x00,0xFE,0x02,0x02,0x02,0x02},/*"L",44*/( P" U- t. M: e, ]9 k4 Y# x
  79.     {0x00,0xFE,0x40,0x20,0x40,0xFE},/*"M",45*/
    + _% u3 D3 d6 I% W3 {$ Q% l8 Q% M' \
  80.     {0x00,0xFE,0x40,0x20,0x10,0xFE},/*"N",46*/
    - Q6 G% s8 m! J& H' `: a4 X) g
  81.     {0x00,0x7C,0x82,0x82,0x82,0x7C},/*"O",47*/: l  y5 ]- N' u7 t; z6 Z# R* y
  82.     {0x00,0xFE,0x90,0x90,0x90,0x60},/*"P",48*/, N9 B! [: p7 O" ~8 v  z
  83.     {0x00,0x7C,0x82,0x8A,0x84,0x7A},/*"Q",49*/
    . @/ e, |! t  N* N- ^+ e9 G
  84.     {0x00,0xFE,0x90,0x90,0x98,0x66},/*"R",50*/3 w# o, ]6 l( r: ^: B) J1 l( o0 `
  85.     {0x00,0x64,0x92,0x92,0x92,0x4C},/*"S",51*/! W( q$ t) I* r4 U9 a# n
  86.     {0x00,0x80,0x80,0xFE,0x80,0x80},/*"T",52*/
    6 {$ i7 z5 y' T+ b; a6 U. a7 B
  87.     {0x00,0xFC,0x02,0x02,0x02,0xFC},/*"U",53*// {4 k* I" J+ O* c% T5 d6 L9 a% a
  88.     {0x00,0xF8,0x04,0x02,0x04,0xF8},/*"V",54*/
    * t% x5 g- p+ _" L6 o9 [3 M
  89.     {0x00,0xFC,0x02,0x3C,0x02,0xFC},/*"W",55*/
    5 e( d: m6 M! S- f
  90.     {0x00,0xC6,0x28,0x10,0x28,0xC6},/*"X",56*/& A0 `* \4 j; s
  91.     {0x00,0xE0,0x10,0x0E,0x10,0xE0},/*"Y",57*/
    " l, o  Z; W6 J% a% F
  92.     {0x00,0x8E,0x92,0xA2,0xC2,0x00},/*"Z",58*/
    ' J' x* |, A/ T5 N. Y; s- B* m
  93.     {0x00,0x00,0xFE,0x82,0x82,0x00},/*"[",59*/+ n; d1 `% X. A
  94.     {0x00,0x40,0x20,0x10,0x08,0x04},/*"",60*/
    1 W. M( l; U7 D- G- M. p7 _
  95.     {0x00,0x00,0x82,0x82,0xFE,0x00},/*"]",61*/
    " w  _6 _4 W$ U. ^- V7 h  t0 s
  96.     {0x00,0x20,0x40,0x80,0x40,0x20},/*"^",62*/
    1 g+ E; m9 i  P  n" U; ^6 p
  97.     {0x01,0x01,0x01,0x01,0x01,0x01},/*"_",63*/
    7 ~2 \6 o' x* I
  98.     {0x00,0x00,0xC0,0xE0,0x00,0x00},/*"`",64*/, e6 g4 B8 |1 A* M. Z3 U, d1 Q" t% j
  99.     {0x00,0x04,0x2A,0x2A,0x2A,0x1E},/*"a",65*/
    & N0 \: n" [- d8 F% h2 Z
  100.     {0x00,0xFE,0x22,0x22,0x22,0x1C},/*"b",66*/
    " @0 v% _& x# u
  101.     {0x00,0x1C,0x22,0x22,0x22,0x14},/*"c",67*/
    / g# L/ y/ P; \8 i, u; y
  102.     {0x00,0x1C,0x22,0x22,0x22,0xFE},/*"d",68*/
    3 D+ X5 @9 E4 U, c, t; p8 Q1 f4 E+ I
  103.     {0x00,0x1C,0x2A,0x2A,0x2A,0x10},/*"e",69*/
    ; i, N5 V! |8 S% i& S! _, a
  104.     {0x00,0x10,0x7E,0x90,0x90,0x00},/*"f",70*/: o# S. w' c2 [) O* M: t
  105.     {0x00,0x18,0x25,0x25,0x25,0x3E},/*"g",71*/3 w. b- g1 g9 x* J
  106.     {0x00,0xFE,0x20,0x20,0x1E,0x00},/*"h",72*/( D# t& J3 w3 D: ]# L
  107.     {0x00,0x00,0x00,0xBE,0x02,0x00},/*"i",73*/; x: O& F- h+ @% Y, E' ~' f: h
  108.     {0x00,0x02,0x01,0x21,0xBE,0x00},/*"j",74*/. z, r) d+ G6 l$ w
  109.     {0x00,0xFE,0x08,0x14,0x22,0x00},/*"k",75*/8 ^/ K  u" r" F9 @
  110.     {0x00,0x00,0x00,0xFE,0x02,0x00},/*"l",76*/' v4 z( U' f# B, P0 P' \
  111.     {0x00,0x3E,0x20,0x18,0x20,0x1E},/*"m",77*/
    ; u1 U9 ^. e6 R! a
  112.     {0x00,0x3E,0x20,0x20,0x1E,0x00},/*"n",78*/
    % d* ~5 @+ S. M3 t& ~! k
  113.     {0x00,0x1C,0x22,0x22,0x22,0x1C},/*"o",79*/
    $ D- Z/ M* _) t$ V/ P' V+ P
  114.     {0x00,0x3F,0x22,0x22,0x22,0x1C},/*"p",80*/1 j: H+ l# o9 n( p5 J2 y
  115.     {0x00,0x1C,0x22,0x22,0x22,0x3F},/*"q",81*/
    : {6 o) u+ f8 K4 U* U4 X. a( x, m- G
  116.     {0x00,0x22,0x1E,0x22,0x20,0x10},/*"r",82*/
    1 |+ z; X6 C& b. A, K
  117.     {0x00,0x10,0x2A,0x2A,0x2A,0x04},/*"s",83*/. o! M7 V8 D( g
  118.     {0x00,0x20,0x7C,0x22,0x24,0x00},/*"t",84*/
    ; o8 o$ c! L* s9 ?% [- ~
  119.     {0x00,0x3C,0x02,0x04,0x3E,0x00},/*"u",85*/  A: C  V9 Q0 {. L
  120.     {0x00,0x38,0x04,0x02,0x04,0x38},/*"v",86*/" m6 z/ k1 k% Q9 ^
  121.     {0x00,0x3C,0x06,0x0C,0x06,0x3C},/*"w",87*/
    , g7 G2 L2 u! M; B% N/ m
  122.     {0x00,0x36,0x08,0x08,0x36,0x00},/*"x",88*/
    + A7 M9 T! d1 L
  123.     {0x00,0x39,0x05,0x06,0x3C,0x00},/*"y",89*/) A3 `  q: B) @, o+ g$ A  N
  124.     {0x00,0x26,0x2A,0x2A,0x32,0x00},/*"z",90*/( S5 N$ l3 b1 G* h* F2 Z; P
  125.     {0x00,0x10,0x7C,0x82,0x82,0x00},/*"{",91*/
    . m! v' s5 ]3 j* q& _0 k2 i' d
  126.     {0x00,0x00,0x00,0xEE,0x00,0x00},/*"|",92*/0 K9 o$ N' d/ p
  127.     {0x00,0x00,0x82,0x82,0x7C,0x10},/*"}",93*/( @7 {2 x9 Q. I5 j* y& ^
  128.     {0x00,0x40,0x80,0x40,0x80,0x00},/*"~",94*/% @+ P# ~5 a& o% M/ U; D  n6 `8 a
  129. };" Z9 e4 i5 Y. _# Q4 K6 A0 z

  130. $ ?  P. z3 i+ Z* T; ?0 K8 Q2 o5 T
  131. //06*12==宽*高 ASCII字符集点阵 (宋体)
    : `# f% i$ k1 b: D+ J
  132. const unsigned char asc2_0612[95][12]= {8 O% ~. `$ G  C1 ?4 d
  133.     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
    * W$ j  a  @# D7 a2 Y
  134.     {0x00,0x00,0x00,0x00,0x3F,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
    + C$ G1 M& f3 a7 c* u9 Y
  135.     {0x00,0x00,0x30,0x00,0x40,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/
    6 Y) w: Y7 m4 n# ]6 T
  136.     {0x09,0x00,0x0B,0xC0,0x3D,0x00,0x0B,0xC0,0x3D,0x00,0x09,0x00},/*"#",3*/! b0 H4 }. ]) W% @7 o
  137.     {0x18,0xC0,0x24,0x40,0x7F,0xE0,0x22,0x40,0x31,0x80,0x00,0x00},/*"$",4*/1 ~# B9 b' Y0 ~0 l( r! N
  138.     {0x18,0x00,0x24,0xC0,0x1B,0x00,0x0D,0x80,0x32,0x40,0x01,0x80},/*"%",5*/: K2 f3 X) K$ `3 A/ e- A
  139.     {0x03,0x80,0x1C,0x40,0x27,0x40,0x1C,0x80,0x07,0x40,0x00,0x40},/*"&",6*/
    * S) Q: |: b" W; Y' Q5 g$ V5 R
  140.     {0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
    / p4 z. h4 V* _( w: [7 t
  141.     {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x40,0x20},/*"(",8*/
    & f2 ?% L2 x2 n/ l1 [6 Y
  142.     {0x00,0x00,0x40,0x20,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00},/*")",9*/! ^: j. }$ q/ [6 A) x
  143.     {0x09,0x00,0x06,0x00,0x1F,0x80,0x06,0x00,0x09,0x00,0x00,0x00},/*"*",10*/- L5 X4 r) I" c7 u
  144.     {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x00,0x00},/*"+",11*/- t) I8 w' _7 h! A
  145.     {0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/
    7 W: D1 r/ Q9 q* i/ B; K: w2 R
  146.     {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00},/*"-",13*/, \+ _3 B1 A! Y, X9 T
  147.     {0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/
    $ U6 h9 A8 ?% E3 N, ?- H1 x# V
  148.     {0x00,0x20,0x01,0xC0,0x06,0x00,0x38,0x00,0x40,0x00,0x00,0x00},/*"/",15*/
    7 m2 ~% i5 N  @! F( d7 G' D
  149.     {0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"0",16*/
    . U% J3 o1 g2 N; o& `; g0 X1 N
  150.     {0x00,0x00,0x10,0x40,0x3F,0xC0,0x00,0x40,0x00,0x00,0x00,0x00},/*"1",17*/
    5 F  D) x7 b# g* T! i) E. b# J  I
  151.     {0x18,0xC0,0x21,0x40,0x22,0x40,0x24,0x40,0x18,0x40,0x00,0x00},/*"2",18*/
    3 g9 p% c8 |" A4 J1 L8 R
  152.     {0x10,0x80,0x20,0x40,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"3",19*/
    0 P" Y( G2 M# l1 N
  153.     {0x02,0x00,0x0D,0x00,0x11,0x00,0x3F,0xC0,0x01,0x40,0x00,0x00},/*"4",20*/  ^3 l" Z& v1 Y2 N( B# a5 y) m
  154.     {0x3C,0x80,0x24,0x40,0x24,0x40,0x24,0x40,0x23,0x80,0x00,0x00},/*"5",21*/, f1 `% m- x8 k# V
  155.     {0x1F,0x80,0x24,0x40,0x24,0x40,0x34,0x40,0x03,0x80,0x00,0x00},/*"6",22*/
    $ G% J) V; s' g- n
  156.     {0x30,0x00,0x20,0x00,0x27,0xC0,0x38,0x00,0x20,0x00,0x00,0x00},/*"7",23*/4 `" E4 Q1 J- [
  157.     {0x1B,0x80,0x24,0x40,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"8",24*/
    ; F. F' A6 r% M6 r$ T
  158.     {0x1C,0x00,0x22,0xC0,0x22,0x40,0x22,0x40,0x1F,0x80,0x00,0x00},/*"9",25*/- k: K( o2 x8 e+ R! Z
  159.     {0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/
    $ A# E6 p: l* k4 V( `8 J1 [/ l$ r
  160.     {0x00,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/% A- m2 K$ T& {8 w/ q6 _" J9 J, Y
  161.     {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40},/*"<",28*/
    5 e5 U7 x/ J; \
  162.     {0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x00,0x00},/*"=",29*/1 |/ G( b; o0 I. @- Y( x. s! q
  163.     {0x00,0x00,0x40,0x40,0x20,0x80,0x11,0x00,0x0A,0x00,0x04,0x00},/*">",30*/  _  N# Y. {1 E" g3 s- r
  164.     {0x18,0x00,0x20,0x00,0x23,0x40,0x24,0x00,0x18,0x00,0x00,0x00},/*"?",31*/* e' N9 H" O3 e2 [- j7 e! F
  165.     {0x1F,0x80,0x20,0x40,0x27,0x40,0x29,0x40,0x1F,0x40,0x00,0x00},/*"@",32*/( Z+ Z& U* C" M5 k+ _
  166.     {0x00,0x40,0x07,0xC0,0x39,0x00,0x0F,0x00,0x01,0xC0,0x00,0x40},/*"A",33*/
    / r7 E: d/ h2 T* }" V8 W$ |
  167.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"B",34*/" N; w7 Q# G# w- K6 X+ y/ r* [
  168.     {0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x30,0x80,0x00,0x00},/*"C",35*/
    . B2 P: ?0 `6 x
  169.     {0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"D",36*/
    7 B3 P4 q5 d5 ]2 u7 L
  170.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x2E,0x40,0x30,0xC0,0x00,0x00},/*"E",37*/
    . [, Q! d. Q% k
  171.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x2E,0x00,0x30,0x00,0x00,0x00},/*"F",38*/) ?  i( x, G5 _$ M* I
  172.     {0x0F,0x00,0x10,0x80,0x20,0x40,0x22,0x40,0x33,0x80,0x02,0x00},/*"G",39*/
    7 g3 o( ~# f3 R8 m* @% f$ T
  173.     {0x20,0x40,0x3F,0xC0,0x04,0x00,0x04,0x00,0x3F,0xC0,0x20,0x40},/*"H",40*/
    ; a, U! r6 L& I& ~
  174.     {0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x00,0x00},/*"I",41*/( I% x# S' O1 g( e4 V3 l8 n$ e  n
  175.     {0x00,0x60,0x20,0x20,0x20,0x20,0x3F,0xC0,0x20,0x00,0x20,0x00},/*"J",42*/) R- F3 l4 K! U
  176.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x0B,0x00,0x30,0xC0,0x20,0x40},/*"K",43*/' d  n4 d; ]- E2 [0 J! D" R3 U
  177.     {0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x40,0x00,0x40,0x00,0xC0},/*"L",44*/
    + c; \4 x4 B2 g
  178.     {0x3F,0xC0,0x3C,0x00,0x03,0xC0,0x3C,0x00,0x3F,0xC0,0x00,0x00},/*"M",45*/) T% J0 u. N# X* X' t7 l
  179.     {0x20,0x40,0x3F,0xC0,0x0C,0x40,0x23,0x00,0x3F,0xC0,0x20,0x00},/*"N",46*/
    2 U% b; x- g; ]# W) x! u
  180.     {0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"O",47*/
    ( U, V& P+ d! P1 ^7 N# |9 j
  181.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x24,0x00,0x18,0x00,0x00,0x00},/*"P",48*/9 ^+ [2 |' v$ ?7 f# R1 C" z7 z2 l/ b5 j
  182.     {0x1F,0x80,0x21,0x40,0x21,0x40,0x20,0xE0,0x1F,0xA0,0x00,0x00},/*"Q",49*/3 N' ]3 {' |- D% P: T& Y
  183.     {0x20,0x40,0x3F,0xC0,0x24,0x40,0x26,0x00,0x19,0xC0,0x00,0x40},/*"R",50*/: A( e0 [. E0 G2 ?3 h, t; j
  184.     {0x18,0xC0,0x24,0x40,0x24,0x40,0x22,0x40,0x31,0x80,0x00,0x00},/*"S",51*/9 v# h$ y% u; R) D, }
  185.     {0x30,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x30,0x00,0x00,0x00},/*"T",52*/! d! \% r* i" k6 N
  186.     {0x20,0x00,0x3F,0x80,0x00,0x40,0x00,0x40,0x3F,0x80,0x20,0x00},/*"U",53*/
    ; }  e5 G* r; a" H# b
  187.     {0x20,0x00,0x3E,0x00,0x01,0xC0,0x07,0x00,0x38,0x00,0x20,0x00},/*"V",54*/. Z) ?/ X# Y+ l, \' `6 V' w6 [
  188.     {0x38,0x00,0x07,0xC0,0x3C,0x00,0x07,0xC0,0x38,0x00,0x00,0x00},/*"W",55*/
    ( Z* v" p+ u4 @$ E1 b5 X$ L6 u
  189.     {0x20,0x40,0x39,0xC0,0x06,0x00,0x39,0xC0,0x20,0x40,0x00,0x00},/*"X",56*/) C* S' ^( i# s! f. U0 K
  190.     {0x20,0x00,0x38,0x40,0x07,0xC0,0x38,0x40,0x20,0x00,0x00,0x00},/*"Y",57*/9 g2 e; L/ r: J6 P! K
  191.     {0x30,0x40,0x21,0xC0,0x26,0x40,0x38,0x40,0x20,0xC0,0x00,0x00},/*"Z",58*/& L3 O8 q4 r6 g# ]
  192.     {0x00,0x00,0x00,0x00,0x7F,0xE0,0x40,0x20,0x40,0x20,0x00,0x00},/*"[",59*/( m5 U2 G$ U( ]/ J  [
  193.     {0x00,0x00,0x70,0x00,0x0C,0x00,0x03,0x80,0x00,0x40,0x00,0x00},/*"",60*/
    5 y- \1 K* A' y: i8 _
  194.     {0x00,0x00,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,0x00,0x00},/*"]",61*/+ l3 K$ q4 o& U6 t; L
  195.     {0x00,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00},/*"^",62*/+ N& O* N/ m6 O
  196.     {0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10},/*"_",63*/& A. s! C8 b$ I" H
  197.     {0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/, d) z+ f, b6 P7 ^' `
  198.     {0x00,0x00,0x02,0x80,0x05,0x40,0x05,0x40,0x03,0xC0,0x00,0x40},/*"a",65*/
    - e- A: d9 D* s- R
  199.     {0x20,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x03,0x80,0x00,0x00},/*"b",66*/
    2 `* \: H% I6 I0 v8 ^! Q& ^: E
  200.     {0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x40,0x06,0x40,0x00,0x00},/*"c",67*/
    4 w# \% z  x3 p
  201.     {0x00,0x00,0x03,0x80,0x04,0x40,0x24,0x40,0x3F,0xC0,0x00,0x40},/*"d",68*/
    8 ?: v' }6 g' T3 H3 B, H
  202.     {0x00,0x00,0x03,0x80,0x05,0x40,0x05,0x40,0x03,0x40,0x00,0x00},/*"e",69*/2 j0 ?# j  F8 w+ _
  203.     {0x00,0x00,0x04,0x40,0x1F,0xC0,0x24,0x40,0x24,0x40,0x20,0x00},/*"f",70*/
    / c8 p" O! H4 B7 g* _; z) F0 q
  204.     {0x00,0x00,0x02,0xE0,0x05,0x50,0x05,0x50,0x06,0x50,0x04,0x20},/*"g",71*/
    ; `: x' k- _5 `: p2 w1 R# n! f
  205.     {0x20,0x40,0x3F,0xC0,0x04,0x40,0x04,0x00,0x03,0xC0,0x00,0x40},/*"h",72*/
    * g& O& E4 g% D4 t+ F" q5 G
  206.     {0x00,0x00,0x04,0x40,0x27,0xC0,0x00,0x40,0x00,0x00,0x00,0x00},/*"i",73*/5 J3 o' V$ |0 f/ d
  207.     {0x00,0x10,0x00,0x10,0x04,0x10,0x27,0xE0,0x00,0x00,0x00,0x00},/*"j",74*/6 ]5 ~" s' C7 m: D/ ^
  208.     {0x20,0x40,0x3F,0xC0,0x01,0x40,0x07,0x00,0x04,0xC0,0x04,0x40},/*"k",75*/& X& }% R/ L! p9 |! \) a; w
  209.     {0x20,0x40,0x20,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00},/*"l",76*/3 I4 K- n1 X& _
  210.     {0x07,0xC0,0x04,0x00,0x07,0xC0,0x04,0x00,0x03,0xC0,0x00,0x00},/*"m",77*/0 i0 w9 M0 p% g+ C. R
  211.     {0x04,0x40,0x07,0xC0,0x04,0x40,0x04,0x00,0x03,0xC0,0x00,0x40},/*"n",78*/
    2 I% ]. j* s- ?7 N2 v
  212.     {0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x40,0x03,0x80,0x00,0x00},/*"o",79*/, D& @0 Q' i. D( x$ `" B  D6 N! A
  213.     {0x04,0x10,0x07,0xF0,0x04,0x50,0x04,0x40,0x03,0x80,0x00,0x00},/*"p",80*/
    5 [+ \4 Y/ T  \+ _( ~* z3 l
  214.     {0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x50,0x07,0xF0,0x00,0x10},/*"q",81*/9 L# }4 y9 x: J+ a6 t) Q
  215.     {0x04,0x40,0x07,0xC0,0x02,0x40,0x04,0x00,0x04,0x00,0x00,0x00},/*"r",82*/, ?- F# q/ T& N/ u" q
  216.     {0x00,0x00,0x06,0x40,0x05,0x40,0x05,0x40,0x04,0xC0,0x00,0x00},/*"s",83*/* u8 v6 z5 Q1 N, N0 g: \% q
  217.     {0x00,0x00,0x04,0x00,0x1F,0x80,0x04,0x40,0x00,0x40,0x00,0x00},/*"t",84*/
    : a! Y1 v3 @- x! K* d( }4 [
  218.     {0x04,0x00,0x07,0x80,0x00,0x40,0x04,0x40,0x07,0xC0,0x00,0x40},/*"u",85*/' D/ v+ ]/ k* V
  219.     {0x04,0x00,0x07,0x00,0x04,0xC0,0x01,0x80,0x06,0x00,0x04,0x00},/*"v",86*/% R% [8 ^+ J0 A$ O' d# D2 J4 G
  220.     {0x06,0x00,0x01,0xC0,0x07,0x00,0x01,0xC0,0x06,0x00,0x00,0x00},/*"w",87*/
    6 K" f  X) F6 I' l4 z5 c8 d# V$ \
  221.     {0x04,0x40,0x06,0xC0,0x01,0x00,0x06,0xC0,0x04,0x40,0x00,0x00},/*"x",88*/
    ) R: U$ c% ?: v2 h
  222.     {0x04,0x10,0x07,0x10,0x04,0xE0,0x01,0x80,0x06,0x00,0x04,0x00},/*"y",89*/7 G; \4 x' \. z; J6 u, N; t5 S
  223.     {0x00,0x00,0x04,0x40,0x05,0xC0,0x06,0x40,0x04,0x40,0x00,0x00},/*"z",90*/
    6 [5 W" H, T$ j) F; `9 P5 E: o
  224.     {0x00,0x00,0x00,0x00,0x04,0x00,0x7B,0xE0,0x40,0x20,0x00,0x00},/*"{",91*/
    6 J8 c3 p3 c) \! z+ w
  225.     {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00},/*"|",92*/6 `2 l/ O# c; Y- Z* R
  226.     {0x00,0x00,0x40,0x20,0x7B,0xE0,0x04,0x00,0x00,0x00,0x00,0x00},/*"}",93*/
    5 ~- m9 c0 K5 @  U* i8 w
  227.     {0x40,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x40,0x00},/*"~",94*/' v, h4 X4 T: F6 v# J; _
  228. };5 p8 a# u& r, w8 i; [$ K. m  h

  229. , z# L0 _6 b2 P5 z
  230. const unsigned char asc2_0816[95][16]= {- w7 y+ A. D4 V1 g( J, S
  231.     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*// R4 B7 m! A2 V# f+ P) j& C

  232. 8 ]9 N/ b6 J* O# x7 `9 g* Q' q0 Q
  233.     {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/5 |" n& Q, w4 e, h
  234. % [% s5 `; L3 p- `2 c6 d- y
  235.     {0x00,0x00,0x08,0x00,0x30,0x00,0x40,0x00,0x08,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/2 V- o7 z7 U* C: v8 q

  236. 5 O5 m8 @8 w& Y
  237.     {0x00,0x00,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x00,0x00},/*"#",3*/: Q$ J7 E6 o& I8 {! l
  238. 5 w  v* Z* q! e1 q! o/ X
  239.     {0x00,0x00,0x0E,0x18,0x11,0x04,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00},/*"$",4*/
    1 q6 g. z+ a9 J" Z

  240. / K* p6 l! W5 ?, H( c0 I& N
  241.     {0x0F,0x00,0x10,0x8C,0x0F,0x30,0x01,0xC0,0x06,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/2 Z: _+ j# ?! \. C2 h* H

  242. 0 ]  c/ ^" }5 L9 a" N1 N
  243.     {0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x34,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/; L/ w# b; v8 r

  244. 4 X8 X8 `& q1 p; \5 v7 y
  245.     {0x00,0x00,0x48,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/& U' O5 {2 t* A) r( E
  246. 5 ~5 H! x& x' o) h# l! m1 n
  247.     {0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/6 S, s( Y7 a0 f/ o! e: @" W

  248. 0 B, M9 \* M/ D# I) @6 y+ I
  249.     {0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/7 B% G2 O2 x* A3 I

  250.   h. |3 E+ E( q6 ~3 ]
  251.     {0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/
    , `+ t( L8 g$ ^
  252. 0 y/ b* G' G; Q6 l' k4 l
  253.     {0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x07,0xF0,0x00,0x80,0x00,0x80,0x00,0x80},/*"+",11*/3 P" O9 C+ e& d# p7 t2 U

  254. ; Y, c5 q; E& C/ I1 t( e: j, I
  255.     {0x00,0x00,0x00,0x09,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/; P" J0 \1 L/ a9 S9 }7 ~+ o) u
  256. 9 G, Z5 A/ J( a) M  {
  257.     {0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"-",13*/
    1 O( N1 z. u; V5 c" Q
  258. - E8 [1 @1 R' D
  259.     {0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/- I. T& Y1 V; I6 a! x9 u
  260. % C  g/ S3 |% C# g9 G8 V
  261.     {0x00,0x00,0x00,0x06,0x00,0x18,0x00,0xE0,0x03,0x00,0x1C,0x00,0x20,0x00,0x00,0x00},/*"/",15*/# t1 U% T! u' J* ~# Z: {

  262. 3 i. g* ~& q" e% M7 n1 U; k. ]
  263.     {0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/' h+ i! P( a% t- J! d! |) v
  264. 3 j' n8 L) x1 A8 L: R' `( i
  265.     {0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00},/*"1",17*/% N6 j* W! m$ A3 K3 Z" n3 A
  266. ' e2 y! D2 c: G7 ]- I5 H
  267.     {0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x10,0x84,0x0F,0x0C,0x00,0x00},/*"2",18*/
    : F/ U5 _/ ~5 y/ J1 B  h8 Q: s
  268. 5 o% E3 B  r9 `% s
  269.     {0x00,0x00,0x0C,0x18,0x10,0x04,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"3",19*/; M# }$ m1 s4 b& i9 j% A
  270. / F5 {4 F" \1 G8 d& q
  271.     {0x00,0x00,0x00,0x60,0x01,0xA0,0x02,0x24,0x0C,0x24,0x1F,0xFC,0x00,0x24,0x00,0x24},/*"4",20*/- r8 _" O. w! S
  272. ( {4 ]8 a* J! G3 V0 t7 e
  273.     {0x00,0x00,0x1F,0x98,0x11,0x04,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/4 }# n" `! Y! s, R
  274. # t/ H3 U+ `5 z- Z; Q( |; u3 u# b! |
  275.     {0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x09,0x04,0x00,0xF8,0x00,0x00},/*"6",22*/0 l. q% F3 y& g# Q7 M$ S
  276. 8 ]% O1 v' p; |: h. F$ l% x3 V
  277.     {0x00,0x00,0x18,0x00,0x10,0x00,0x10,0x7C,0x11,0x80,0x16,0x00,0x18,0x00,0x00,0x00},/*"7",23*/
    1 o" p5 E! I5 ?" M( T1 M1 Q

  278. - |7 \& _: R# |" T+ ^) o) e" W
  279.     {0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/
    3 t$ P( n# {& |: L

  280. ( S+ S4 S3 R4 c2 c4 m2 h( S
  281.     {0x00,0x00,0x0F,0x80,0x10,0x48,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/, h6 h: ~1 Y! U  G7 H: T. y

  282. + G( A5 c& ?& n6 f
  283.     {0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/
    1 C- j( e# g) m, `  h4 t  I2 `

  284. - `4 R* \  d- V, d& I
  285.     {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/
    4 T9 R2 Z3 D5 F, `

  286. , M+ r- g& C. O: @' k. D
  287.     {0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/
    / ]9 k2 y: n' b, f4 N( g  ]
  288. 8 }3 E9 P, n) ^0 A  `
  289.     {0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00},/*"=",29*/1 P5 o: N  [. Z) e+ m1 B
  290. * Z& e; i' [0 C: X0 A( y& H+ H
  291.     {0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/
    : y3 g# r7 I6 D7 P# p' w
  292. $ y. i. l0 h& ^& F! i: f3 S
  293.     {0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0xEC,0x11,0x00,0x0E,0x00,0x00,0x00},/*"?",31*/  V5 ]0 R* e- p* r) a+ N4 w* B
  294. 0 E) t7 b9 U" k, B& }% r
  295.     {0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x14,0x17,0xF4,0x08,0x14,0x07,0xE8,0x00,0x00},/*"@",32*/- ~% Q0 {1 T  b0 k
  296. 2 @. Q: L( C( V2 T" p
  297.     {0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/
    * I6 c1 B/ d5 M) a- Y$ R: j3 D# M

  298. ! m" m9 O" t3 S4 D
  299.     {0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/2 C( s4 e" S5 P7 H, v7 \! X0 G

  300. 1 x2 f" v" i& \6 I. m6 U
  301.     {0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/. R. h! U2 D8 ^; S1 y. G

  302. 7 m( p# g5 n* a) I. e* I2 \. p
  303.     {0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/
    : m5 N9 w2 ]& j& ?
  304. % }6 W: i: Q1 m. c
  305.     {0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/
    - n9 u2 O: K# w, `4 d, N4 z

  306. ! R! T* a& X7 q$ J& J9 ~
  307.     {0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/
    ! _) M  t# v: \( {& ?
  308. 7 k. O; e6 D9 e) u# ?9 R! {# `
  309.     {0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/, p. m  W/ E; B! k, }
  310. 7 |3 w/ N6 m# V* w
  311.     {0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/
    $ v7 u% G2 ~7 c
  312. 8 i" ?$ j, Q  ^' _, ^" Q4 U) k& ~; `
  313.     {0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/
    / |; j$ D4 P% l7 t# M2 P. h/ U
  314. / t- T7 p5 Y. f/ Y+ G
  315.     {0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/- \. s( ^. Y2 W1 s, l9 L
  316. 8 e, s3 g: y% G4 E
  317.     {0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/
    , u! b& p/ |8 ~  H/ \

  318.   y  P" s7 e  ~5 c# ?, a: r( R' I
  319.     {0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/
      e9 Y& l1 U) z2 f7 B

  320. + N4 f6 t: \0 f$ m
  321.     {0x10,0x04,0x1F,0xFC,0x1F,0x80,0x00,0x7C,0x1F,0x80,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/
    & E: o2 x$ ~3 [8 I8 s7 y# B

  322. 2 G. {, I3 E$ s) r2 A5 _9 [2 }
  323.     {0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/
    ) S( \& F3 q7 g8 O, M
  324. . J6 G- y! n- x& _/ b& {/ v+ F4 O
  325.     {0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/6 a' P% s' @4 O) b6 C' J, Y. A

  326.   z0 t# F" p( w; c$ o
  327.     {0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/* l8 X# _& o+ ~& S) ]
  328. " C& W# g$ `2 K' C) P
  329.     {0x07,0xF0,0x08,0x08,0x10,0x14,0x10,0x14,0x10,0x0C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/! D6 y4 t6 T/ n1 N! L. z. j
  330. 9 |6 x0 m- o7 {; L
  331.     {0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/+ z  w4 r# U% t! l- Q3 @) w5 R

  332. 3 M5 d$ `( c4 M( O' _; R6 ~8 X
  333.     {0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/! |4 B  j# ?) ]  X" \

  334.   e' i; e/ }/ N8 ~9 s3 K8 R
  335.     {0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/
    ( y" Y, m$ I% ^6 M1 W6 j

  336. 5 G' N4 ^, F; E% @7 V1 n
  337.     {0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/
    9 w+ U+ U0 s; z5 J) s3 W; B

  338. 4 G; \! b; a" v1 o! r
  339.     {0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/1 |8 H$ M5 w& p) P1 }
  340. ) O5 \$ h) b: ?7 d% F2 e
  341.     {0x10,0x00,0x1F,0xC0,0x00,0x7C,0x1F,0x80,0x00,0x7C,0x1F,0xC0,0x10,0x00,0x00,0x00},/*"W",55*/' f3 @6 V4 r* T  A" q

  342. & {6 o9 M8 i! ~6 s, Y7 q/ J& b
  343.     {0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/
    7 C) Z7 F7 s6 n+ t  L4 s

  344. 1 B! x* w4 W3 e) ~  K& w
  345.     {0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/
    # v6 d! {. x7 n0 C
  346. & p) x+ p* F, @: N* _; e  T  w' b
  347.     {0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/
    & F* g* N4 N6 ~

  348. & @$ G0 m# X* x/ T$ F9 e
  349.     {0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/
    9 `7 p& E0 R7 A5 w# ^
  350. 3 a& C& }/ v* ~; W. Z* e! L$ e
  351.     {0x00,0x00,0x20,0x00,0x1C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"",60*/
    0 a$ N1 n% G- @9 _$ j2 i. n, f
  352. * u$ R7 t, i' G5 c7 Z  t
  353.     {0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/2 b/ a$ F9 R8 o9 i+ p# w' T
  354. 5 S5 w/ n) c) V/ F
  355.     {0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00},/*"^",62*/8 U$ ]# k. D$ C4 K, {; F
  356. 8 t) b+ M7 c1 x+ M  P
  357.     {0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/. S# Z  y9 K1 e0 u" A8 B. e

  358. : \8 |2 P: \& H+ e  k; T
  359.     {0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/) O; d/ F) A: p1 h3 o
  360. ) T  V7 c! x6 G) m+ V- N/ a4 R
  361.     {0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x24,0x01,0x48,0x00,0xFC,0x00,0x04,0x00,0x00},/*"a",65*/
    : S, t2 x8 f# x! o
  362. 6 N+ n) u" q; X; N4 s6 n) |
  363.     {0x08,0x00,0x0F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/" D: P. \% `. u
  364. + d" [4 p% i$ Y* C: ]7 l6 E
  365.     {0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/
    . o( m' E% g' f! `9 u
  366. - I! A- q8 K+ T) [9 ~
  367.     {0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x09,0x08,0x0F,0xFC,0x00,0x04},/*"d",68*/
    0 @4 u/ Q+ B. P$ A

  368. ! o$ R. ~4 K+ z
  369.     {0x00,0x00,0x00,0xF8,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x00,0xE8,0x00,0x00},/*"e",69*/
    2 }) \% S. m& B; e1 c* J( n( r! P

  370. % D& `$ J/ J- G3 e; h3 I6 Q
  371.     {0x00,0x00,0x01,0x04,0x01,0x04,0x07,0xFC,0x09,0x04,0x09,0x04,0x04,0x00,0x00,0x00},/*"f",70*/
    ' x) g# B* m+ v

  372. # O/ I& J8 m! j! Y3 Z
  373.     {0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/; s* s# k- G$ x' x

  374. + l) C5 K/ n, w% _: @( Y% Q
  375.     {0x08,0x04,0x0F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/+ Y5 k. @" U  n, q

  376. 4 S5 y6 y: c& V8 _
  377.     {0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/. o) B2 }% l$ Z0 g
  378. 6 t- s) t, U, v6 h
  379.     {0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/
    : z) C0 ^0 @- X; e* R8 }

  380. 5 H: J  Q$ O( @0 L) P
  381.     {0x08,0x04,0x0F,0xFC,0x00,0x24,0x00,0x60,0x01,0x94,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/9 `% y% E2 J- K* s2 L+ A

  382. 6 @  x  X% }" V; l
  383.     {0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/
    . A; g5 i, Y) W+ g3 |8 s5 v
  384. " _2 B3 |% [- S
  385.     {0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/
    0 i0 y0 C0 v( l/ z$ [. z
  386. , W  d0 l9 r% i$ ]. ]6 \
  387.     {0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/# v' I1 P" Y/ ^' |
  388.   z$ K0 }$ x+ }- X, i
  389.     {0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/* L5 a. h7 H: ]5 Y/ G
  390. " y/ @! q& Z/ T- r
  391.     {0x01,0x01,0x01,0xFF,0x00,0x89,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/
    5 z/ ?# y% e* W# ^- h7 |% p7 D
  392. ; U! I' j* c* x/ `, Z
  393.     {0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x89,0x01,0xFF,0x00,0x01},/*"q",81*/
    1 S3 ?' `* S# |8 K1 q' K
  394. . q' y( e2 @% O
  395.     {0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/4 s0 e0 H; }1 x( O
  396. : Q) i# L, K  {4 ^
  397.     {0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/& a1 R- ?- V) P. T% f

  398. ! E: M9 N; w7 ^( o2 a
  399.     {0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x08,0x00,0x00},/*"t",84*/
    ' c6 b: O& U+ D8 E6 T" z6 r1 P

  400. " g, j* R& C3 z) H, x$ n% s
  401.     {0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/
    - N+ I. D& P  I

  402. 7 R4 p  r1 H* I/ _
  403.     {0x01,0x00,0x01,0xC0,0x01,0x30,0x00,0x0C,0x01,0x30,0x01,0xC0,0x01,0x00,0x00,0x00},/*"v",86*/
    9 {8 `, B) }# k) b

  404.   P& p8 t# Z' _8 J' z, O- i
  405.     {0x01,0x80,0x01,0x70,0x00,0x0C,0x01,0x30,0x01,0xE0,0x00,0x1C,0x01,0x60,0x01,0x80},/*"w",87*/
    % C7 {& n% f* x. J8 N

  406. & k+ R+ C$ A5 N* C
  407.     {0x00,0x00,0x01,0x04,0x01,0x8C,0x01,0x70,0x00,0x74,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/
    . ]; p2 f  ^5 K( T! u3 \& f7 `
  408. 4 n* L5 Z, l1 l7 ^
  409.     {0x01,0x00,0x01,0x81,0x01,0x61,0x00,0x1E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/' |: k5 j" H8 c$ j6 T# y7 c3 \8 h

  410. , I+ B- L. W4 F7 Q, S  O9 d( V
  411.     {0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/% {* o0 V: F/ u' c) H; k

  412. 6 k5 P0 H$ M8 I
  413.     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x7C,0x40,0x02,0x40,0x02},/*"{",91*/# v! s0 z" B6 Y
  414. & l0 e, v% b4 B* k3 [- `# H$ d+ c
  415.     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/6 @& T" \6 I5 K  @

  416. 9 R8 w9 a8 R' i
  417.     {0x40,0x02,0x40,0x02,0x3F,0x7C,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} /*"}",93*/$ [3 v; T  R, ]- s& p( g* `" x

  418. % |9 g3 d! N* u
  419. };
    7 D2 R, ]& _, m3 D
  420. //12*24==宽*高 ASCII字符集点阵 (宋体)4 J6 L  F3 g# U' m1 f+ r
  421. const unsigned char asc2_1224[95][36]= {
    ; z  e* \1 d9 m
  422.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    6 d3 t  W6 s) l4 m& W: C
  423.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
    6 Q6 ~  R9 n7 X1 E4 I
  424.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x38,
    6 }# m. v* H- C& o# U, G; `
  425.     0x0F,0xFE,0x38,0x0F,0x80,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",1*/2 Q" I: T! f8 d* x
  426.     0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,' [0 V$ q* H: z6 _8 H
  427.     0x31,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,/*""",2*/( J+ z# y9 g# N
  428.     0x00,0x00,0x00,0x00,0x61,0x80,0x00,0x67,0xF8,0x07,0xF9,0x80,0x00,0x61,0x80,0x00,0x61,0x80,
    - [* W; b3 G9 _& |& m$ Y& ]
  429.     0x00,0x61,0x80,0x00,0x61,0x80,0x00,0x67,0xF8,0x07,0xF9,0x80,0x00,0x61,0x80,0x00,0x00,0x00,/*"#",3*/0 R% w! r. ~1 p4 ]' s- _' B$ E
  430.     0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xE0,0xF0,0x06,0x30,0x08,0x04,0x18,0x08,
    # S7 h) b9 x. v4 Q6 \$ |
  431.     0x1F,0xFF,0xFE,0x04,0x0E,0x08,0x07,0x87,0xF0,0x03,0x81,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,/*"$",4*/
    9 D  F" r; \# E% \0 @% e9 ^
  432.     0x01,0xF0,0x00,0x06,0x0C,0x00,0x04,0x04,0x08,0x06,0x0C,0x70,0x01,0xF9,0xC0,0x00,0x0E,0x00,' d3 e+ S# u, Q8 C7 q5 n! u7 ]
  433.     0x00,0x3B,0xE0,0x00,0xEC,0x18,0x07,0x08,0x08,0x04,0x0C,0x18,0x00,0x03,0xE0,0x00,0x00,0x00,/*"%",5*/
    . |  B3 q# C, t7 T( m( m) o
  434.     0x00,0x01,0xE0,0x00,0x07,0xF0,0x03,0xF8,0x18,0x04,0x1C,0x08,0x04,0x17,0x08,0x07,0xE1,0xD0,
    # p  |+ e) K/ o' t1 z
  435.     0x03,0xC0,0xE0,0x00,0x23,0xB0,0x00,0x3C,0x08,0x00,0x20,0x08,0x00,0x00,0x10,0x00,0x00,0x00,/*"&",6*/4 L2 \  U9 t4 ?# R: f5 C  N3 _
  436.     0x00,0x00,0x00,0x01,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
    0 o. u9 J& E, _5 F6 Y2 \
  437.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"'",7*/* A& c! Z: |9 _! |+ b+ J
  438.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,  M1 b3 k6 k2 N2 N6 F3 R- K1 U4 Z
  439.     0x01,0xFF,0xC0,0x07,0x80,0xF0,0x0C,0x00,0x18,0x10,0x00,0x04,0x20,0x00,0x02,0x00,0x00,0x00,/*"(",8*/3 W! N7 ]1 g2 L: U: r; k. T% |
  440.     0x00,0x00,0x00,0x20,0x00,0x02,0x10,0x00,0x04,0x0C,0x00,0x18,0x07,0x80,0xF0,0x01,0xFF,0xC0,
    4 m6 G  }: P; s' ]
  441.     0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*")",9*/
    5 X+ d: [" q# x0 B: O" W1 k
  442.     0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x3C,0x00,0x00,0x18,0x00,
    2 `9 F8 e( `8 H4 t+ _
  443.     0x03,0xFF,0xC0,0x00,0x18,0x00,0x00,0x3C,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x42,0x00,/*"*",10*/, e: k7 `$ d- d1 j9 G7 c
  444.     0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,6 H  b; A: R% C1 f6 A+ J6 H8 z( v
  445.     0x01,0xFF,0xC0,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,/*"+",11*/
    $ s0 x0 W2 l, y6 J
  446.     0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0 X; k6 \+ A9 r+ J
  447.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",12*/
      g6 q8 X* C4 `& z+ ^) _- U7 e
  448.     0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,# T5 `0 ?& Z/ U/ n" i7 U8 m  S( R
  449.     0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,/*"-",13*/# A: E. D* X6 o2 z6 O: o
  450.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00," B2 W) k( D: \9 A( Y4 {
  451.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",14*/7 Z9 W; f* _- w/ o; D6 V* p
  452.     0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1C,0x00,0x00,0x70,0x00,0x01,0x80,0x00,0x0E,0x00,
    ' ]4 P# q& J7 Y. @
  453.     0x00,0x38,0x00,0x00,0xC0,0x00,0x07,0x00,0x00,0x1C,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,/*"/",15*/! m% v$ N( _) _: L& C" q  H
  454.     0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,
    ' D  Y1 r& u3 d) l2 G; C
  455.     0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00,/*"0",16*/. L; U: _6 X% J: a
  456.     0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x01,0x00,0x08,0x01,0x00,0x08,0x03,0xFF,0xF8,/ S1 m+ t. g  ^$ q/ ^
  457.     0x07,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,/*"1",17*/3 y0 l. z; c6 s4 h
  458.     0x00,0x00,0x00,0x01,0xC0,0x38,0x02,0xC0,0x58,0x04,0x00,0x98,0x04,0x01,0x18,0x04,0x02,0x18,
    * T( R- N$ P; c* u, t4 v
  459.     0x04,0x04,0x18,0x06,0x1C,0x18,0x03,0xF8,0x18,0x01,0xE0,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,/*"2",18*/
    1 `- I5 s: ?! R: U
  460.     0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xC0,0xF0,0x04,0x00,0x08,0x04,0x08,0x08,0x04,0x08,0x08,
    5 M/ h; _' r) k5 i7 j! R
  461.     0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,/*"3",19*/
    / Y% ~3 O2 W$ m7 T6 H
  462.     0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x0D,0x00,0x00,0x11,0x00,0x00,0x61,0x00,0x00,0x81,0x08,
    : w, P4 L3 t( p# @# H/ b6 `
  463.     0x03,0x01,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x08,0x00,0x01,0x08,0x00,0x00,0x00,/*"4",20*/2 O7 D5 J( g  T, a
  464.     0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xFC,0xD0,0x06,0x08,0x08,0x06,0x10,0x08,0x06,0x10,0x08,, |+ N/ F7 Y9 Q# A+ L; w' d, D
  465.     0x06,0x10,0x08,0x06,0x18,0x38,0x06,0x0F,0xF0,0x06,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,/*"5",21*/# d6 V* c% k1 ^9 Q5 M
  466.     0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x84,0x30,0x02,0x08,0x18,0x04,0x10,0x08,' M! `' L! p  p
  467.     0x04,0x10,0x08,0x04,0x10,0x08,0x07,0x18,0x10,0x03,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00,/*"6",22*/. }% ~" y, R3 ^9 w0 q: ], `
  468.     0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0xF8,' }( N7 S) U! h* N9 }
  469.     0x06,0x07,0xF8,0x06,0x18,0x00,0x06,0xE0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,/*"7",23*/  z" y( c8 t- h6 n: o+ X
  470.     0x00,0x00,0x00,0x01,0xE1,0xE0,0x03,0xF7,0xF0,0x06,0x34,0x10,0x04,0x18,0x08,0x04,0x18,0x08,
    : \1 P8 i& N- V: G
  471.     0x04,0x0C,0x08,0x04,0x0C,0x08,0x06,0x16,0x18,0x03,0xF3,0xF0,0x01,0xC1,0xE0,0x00,0x00,0x00,/*"8",24*/: k- h8 t5 @1 q0 y9 q' L5 o
  472.     0x00,0x00,0x00,0x00,0xF8,0x00,0x03,0xFC,0x30,0x03,0x06,0x38,0x04,0x02,0x08,0x04,0x02,0x08,* W& S7 v% J3 Z" }5 ~) X
  473.     0x04,0x02,0x08,0x04,0x04,0x10,0x03,0x08,0xF0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,/*"9",25*/' D4 D' E6 c1 A% q  G
  474.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x38,
    6 O$ Q. R& W  _. a- O
  475.     0x00,0x70,0x38,0x00,0x70,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*":",26*/
    2 m3 D% Q: a" G2 U1 a  ^
  476.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1A,
    . w) j. M$ L" _( Q& v0 a% ?
  477.     0x00,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*";",27*/
    & [" d" B8 A. ?3 w3 z8 @) P
  478.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x14,0x00,0x00,0x22,0x00,0x00,0x41,0x00,, C0 z: U) w: A+ r; F. T, X
  479.     0x00,0x80,0x80,0x01,0x00,0x40,0x02,0x00,0x20,0x04,0x00,0x10,0x08,0x00,0x08,0x00,0x00,0x00,/*"<",28*/+ M1 B  Z! Y, o; ~+ \
  480.     0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,
    % O: Z5 }& {, ^: L6 R
  481.     0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x00,0x00,/*"=",29*/
    3 f8 I7 [' u. O# Y4 C$ ^
  482.     0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x04,0x00,0x10,0x02,0x00,0x20,0x01,0x00,0x40,+ I) D$ e1 N. i& C2 _$ g
  483.     0x00,0x80,0x80,0x00,0x41,0x00,0x00,0x22,0x00,0x00,0x14,0x00,0x00,0x08,0x00,0x00,0x00,0x00,/*">",30*/
      a; n! B- C0 u) T! X2 Y# H- b7 {
  484.     0x00,0x00,0x00,0x03,0xC0,0x00,0x04,0xC0,0x00,0x04,0x00,0x00,0x08,0x00,0x38,0x08,0x0F,0x38,
    0 X+ }. C; H; s, S: `7 X! G
  485.     0x08,0x08,0x38,0x08,0x10,0x00,0x0C,0x30,0x00,0x07,0xE0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,/*"?",31*/
    & `9 H/ G* r1 e* ^5 z1 b
  486.     0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xE0,0x03,0x80,0x70,0x02,0x0F,0x10,0x06,0x70,0x88,
    9 z8 Z- o3 K7 R" ~
  487.     0x04,0xC0,0x88,0x04,0x83,0x08,0x04,0x7F,0x88,0x02,0xC0,0x90,0x03,0x01,0x20,0x00,0xFE,0x40,/*"@",32*/* m2 v( c1 g2 y, O% R; U+ P& j
  488.     0x00,0x00,0x08,0x00,0x00,0x18,0x00,0x01,0xF8,0x00,0x3E,0x08,0x01,0xC2,0x00,0x07,0x02,0x00,
    % j3 H" {, d% h% L/ T0 U
  489.     0x07,0xE2,0x00,0x00,0xFE,0x00,0x00,0x1F,0xC8,0x00,0x01,0xF8,0x00,0x00,0x38,0x00,0x00,0x08,/*"A",33*/
    4 i( l% Y# i$ W; L! ]2 v
  490.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08," r& {+ [9 d' b8 b8 n
  491.     0x04,0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,/*"B",34*/
    / M( C8 P( j- D
  492.     0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x02,0x00,0x18,0x04,0x00,0x08,( Q6 p: _" V' c
  493.     0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x10,0x06,0x00,0x20,0x07,0x80,0xC0,0x00,0x00,0x00,/*"C",35*/7 R# i; {. Z+ u* k; q3 h
  494.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,, S* D1 m- c5 Z
  495.     0x04,0x00,0x18,0x02,0x00,0x10,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00,/*"D",36*/8 T: g$ p5 \( x/ i) s
  496.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,& d& o( k, g: _' _
  497.     0x04,0x08,0x08,0x04,0x3E,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x01,0x00,0x60,0x00,0x00,0x00,/*"E",37*/
    7 _7 M. ?& l: u3 P4 O; L$ F% D* x
  498.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x08,0x00,! @7 N5 r0 M* U  v) a! Q
  499.     0x04,0x08,0x00,0x04,0x3E,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,/*"F",38*/
    0 R. @0 r! J) @& j* `5 O4 R& W
  500.     0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,* I; b2 e! O1 `0 \/ H
  501.     0x04,0x02,0x08,0x04,0x02,0x08,0x02,0x03,0xF0,0x07,0x83,0xF0,0x00,0x02,0x00,0x00,0x02,0x00,/*"G",39*/. X3 {8 I4 v/ }, m
  502.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x00,0x08,0x00,0x00,0x08,0x00,6 S+ [( R( a- z% _3 j
  503.     0x00,0x08,0x00,0x00,0x08,0x00,0x04,0x08,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,/*"H",40*/
    9 K6 }( x+ E! ?# C. H
  504.     0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,
    4 W  n/ w) y' ^& J4 E# O  c
  505.     0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,/*"I",41*/
    + J1 M/ K! l  p% q
  506.     0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x07,0x00,0x00,0x01,0x04,0x00,0x01,0x04,0x00,0x01,) R2 A8 g9 s3 L$ U* [  N9 n& [: T
  507.     0x04,0x00,0x03,0x07,0xFF,0xFE,0x07,0xFF,0xFC,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,/*"J",42*/
    2 e2 m- Z( v( y( }# p
  508.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x0C,0x08,0x00,0x18,0x00,0x00,0x3E,0x00,
    # R7 Q2 f3 F7 A0 }3 F- O
  509.     0x04,0xC7,0x80,0x05,0x03,0xC8,0x06,0x00,0xF8,0x04,0x00,0x38,0x04,0x00,0x18,0x00,0x00,0x08,/*"K",43*/- E& ~4 V$ N- d* ]- j+ l
  510.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,
    0 N+ k* C# Q4 ^( _, V
  511.     0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x00,/*"L",44*/) U0 [$ j; p0 s5 _, @6 n# }* t
  512.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0x80,0x08,0x07,0xFC,0x00,0x00,0x7F,0xC0,0x00,0x03,0xF8,
    & `* p) o# ]9 r5 D7 A3 y  t
  513.     0x00,0x07,0xC0,0x00,0x78,0x00,0x07,0x80,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,/*"M",45*/
      V2 g) q- x# V! Q
  514.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0x00,0x08,0x03,0xC0,0x00,0x00,0xE0,0x00,0x00,0x38,0x00,
    ; [  V2 |/ y7 c5 j$ {& \+ ~
  515.     0x00,0x1E,0x00,0x00,0x07,0x00,0x00,0x01,0xC0,0x04,0x00,0xF0,0x07,0xFF,0xF8,0x04,0x00,0x00,/*"N",46*/
    , w: x& ?( J* T' q
  516.     0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,
    1 F4 ]: w2 P) [" i' Z; B
  517.     0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x00,0x30,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00,/*"O",47*/
    5 Q; Q7 y* s7 b
  518.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x04,0x08,0x04,0x04,0x00,0x04,0x04,0x00,
    ) D* S6 z6 ^  R6 a
  519.     0x04,0x04,0x00,0x04,0x04,0x00,0x06,0x0C,0x00,0x03,0xF8,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,/*"P",48*// g* Z+ F9 ]) F, t8 Z, {
  520.     0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x88,0x04,0x00,0x88,
    $ N& {+ E$ @, B$ F$ J5 j/ V
  521.     0x04,0x00,0xC8,0x06,0x00,0x3C,0x03,0x00,0x3E,0x01,0xFF,0xE6,0x00,0x7F,0x84,0x00,0x00,0x00,/*"Q",49*/
    8 b$ Q' Q6 c  m; V: i+ D2 |1 _
  522.     0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x0C,0x00,
    : s' O' ?' g/ ]3 I+ X
  523.     0x04,0x0F,0x00,0x04,0x0B,0xC0,0x06,0x10,0xF0,0x03,0xF0,0x38,0x01,0xE0,0x08,0x00,0x00,0x08,/*"R",50*/
    / Z0 k# r6 n2 r! M$ ~. p) F
  524.     0x00,0x00,0x00,0x01,0xE0,0xF8,0x03,0xF0,0x30,0x06,0x30,0x10,0x04,0x18,0x08,0x04,0x18,0x08,, j% @: E0 t& ~
  525.     0x04,0x0C,0x08,0x04,0x0C,0x08,0x02,0x06,0x18,0x02,0x07,0xF0,0x07,0x81,0xE0,0x00,0x00,0x00,/*"S",51*/
    0 W2 R' ]* J' h( t. [
  526.     0x01,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,- ?& f+ Z2 z- i4 Q- j) ^
  527.     0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x00,0x04,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00,/*"T",52*/
    * ]$ _# j. P3 Z. Y
  528.     0x04,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xF0,0x04,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,
    5 j3 _; P1 _* t- _
  529.     0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x04,0x00,0x10,0x07,0xFF,0xE0,0x04,0x00,0x00,/*"U",53*/: ~4 [# l9 s  ?- e$ N
  530.     0x04,0x00,0x00,0x06,0x00,0x00,0x07,0xE0,0x00,0x07,0xFE,0x00,0x04,0x1F,0xE0,0x00,0x01,0xF8,' ]! l/ H* W3 }' f7 n! ~
  531.     0x00,0x00,0x38,0x00,0x01,0xE0,0x04,0x3E,0x00,0x07,0xC0,0x00,0x06,0x00,0x00,0x04,0x00,0x00,/*"V",54*/4 X8 \/ z! Z1 q$ u0 I) f' [- S: I
  532.     0x04,0x00,0x00,0x07,0xE0,0x00,0x07,0xFF,0xC0,0x04,0x1F,0xF8,0x00,0x07,0xC0,0x07,0xF8,0x00,: Y+ K. f. H+ `
  533.     0x07,0xFF,0x80,0x04,0x3F,0xF8,0x00,0x07,0xC0,0x04,0xF8,0x00,0x07,0x00,0x00,0x04,0x00,0x00,/*"W",55*/
    8 }7 Q1 c8 N& H; h/ Q! \
  534.     0x00,0x00,0x00,0x04,0x00,0x08,0x06,0x00,0x18,0x07,0xC0,0x78,0x05,0xF1,0xC8,0x00,0x3E,0x00,
    . j6 X/ g" e3 X( n
  535.     0x00,0x1F,0x80,0x04,0x63,0xE8,0x07,0x80,0xF8,0x06,0x00,0x18,0x04,0x00,0x08,0x00,0x00,0x00,/*"X",56*/
    4 c  n. ~5 N* o& g1 k. `" n
  536.     0x04,0x00,0x00,0x06,0x00,0x00,0x07,0x80,0x00,0x07,0xE0,0x08,0x04,0x7C,0x08,0x00,0x1F,0xF8,1 }1 P7 u9 w( `6 }2 ~
  537.     0x00,0x07,0xF8,0x00,0x18,0x08,0x04,0xE0,0x08,0x07,0x00,0x00,0x06,0x00,0x00,0x04,0x00,0x00,/*"Y",57*/+ [" Y" y" g& `& D8 Q
  538.     0x00,0x00,0x00,0x01,0x00,0x08,0x06,0x00,0x38,0x04,0x00,0xF8,0x04,0x03,0xE8,0x04,0x0F,0x08,
    ) C$ H" t8 @6 d7 b  A* W
  539.     0x04,0x7C,0x08,0x05,0xF0,0x08,0x07,0xC0,0x08,0x07,0x00,0x18,0x04,0x00,0x60,0x00,0x00,0x00,/*"Z",58*/
    : d7 n- o# r+ `+ _  a+ r+ D  t
  540.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,
    3 q. b5 f# a+ _  A% h
  541.     0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x00,0x00,0x00,/*"[",59*/
    . @( v. [1 d9 i& t# Z' ~
  542.     0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x07,0x00,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,$ w9 d: s/ ?5 @
  543.     0x00,0x06,0x00,0x00,0x01,0xC0,0x00,0x00,0x30,0x00,0x00,0x0E,0x00,0x00,0x01,0x00,0x00,0x00,/*"",60*/
    % P- q4 j: o! @+ C
  544.     0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,* G8 N$ I; y& J* j( @- ]; M2 o
  545.     0x20,0x00,0x02,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"]",61*/
    ( |$ V. O% p7 ?; P& y0 Z( c
  546.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x30,0x00,0x00,
    3 j. m0 n& w9 j4 j. |
  547.     0x20,0x00,0x00,0x30,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"^",62*/
    4 Q7 ~7 O, K) i1 s/ n
  548.     0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,
    ! |# }% b% d2 q! b) U4 E/ |3 _) N' n
  549.     0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,/*"_",63*/& Z0 l$ J; J! p/ H2 P& U; g
  550.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,2 Q1 D4 e! C# j, \1 \
  551.     0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"`",64*/
    ; H, q3 d# k- M' [! s; w& ]% ^8 L
  552.     0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x19,0xF8,0x00,0x1B,0x18,0x00,0x22,0x08,0x00,0x26,0x08,% R& g. B& n4 E
  553.     0x00,0x24,0x08,0x00,0x24,0x10,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x18,/*"a",65*/% F, g& Y+ Q+ C# ?- a
  554.     0x00,0x00,0x00,0x04,0x00,0x00,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x18,0x18,0x00,0x10,0x08,
    ' w! e2 @- z* x% [8 a
  555.     0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x18,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00,/*"b",66*/2 L. d' P. o1 |- ]' |
  556.     0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x18,0x30,0x00,0x20,0x08,0x00,0x20,0x08,
    ' f4 N3 e/ K0 n+ X" ]& H
  557.     0x00,0x20,0x08,0x00,0x3C,0x08,0x00,0x1C,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,/*"c",67*/4 N* V1 y7 C$ G$ x- {2 c
  558.     0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,
    . Z) c) V3 k0 l3 t: N1 I
  559.     0x00,0x20,0x08,0x04,0x10,0x10,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x00,0x10,0x00,0x00,0x00,/*"d",68*/6 h. T. X7 E1 m% @: J) M
  560.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x12,0x30,0x00,0x22,0x18,
    % N5 F$ C/ \. R
  561.     0x00,0x22,0x08,0x00,0x22,0x08,0x00,0x32,0x08,0x00,0x1E,0x10,0x00,0x0E,0x20,0x00,0x00,0x00,/*"e",69*/
    / a! I* R4 a" u) W( F2 [% ~  j5 e7 J! H
  562.     0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x01,0xFF,0xF8,0x03,0xFF,0xF8,
    ) K& U1 e3 L3 X# g9 q6 u
  563.     0x06,0x20,0x08,0x04,0x20,0x08,0x04,0x20,0x08,0x07,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00,/*"f",70*/5 O6 p8 Y5 I* k  ?
  564.     0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x6E,0x00,0x1F,0xF3,0x00,0x31,0xB1,0x00,0x20,0xB1,5 P$ {1 o( p: Y
  565.     0x00,0x20,0xB1,0x00,0x31,0x91,0x00,0x1F,0x13,0x00,0x2E,0x1E,0x00,0x20,0x0E,0x00,0x30,0x00,/*"g",71*/% H9 Y- z. d0 C; k8 C; O
  566.     0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,: i6 E& t1 G+ @3 z
  567.     0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00,/*"h",72*/
    . y  o' i4 ^" E2 b& b; D! d& U6 Z
  568.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x06,0x3F,0xF8,; E  Y: j7 ^# ]* y) A4 h
  569.     0x06,0x3F,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,/*"i",73*/, i* ?: Y8 }7 v* c5 g
  570.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x20,0x01,0x00,0x20,0x01,
    2 r3 U( [3 D& }+ M1 O
  571.     0x00,0x20,0x03,0x06,0x3F,0xFE,0x06,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"j",74*/
    5 Y3 C/ Y% Q* ~1 P- y$ G- C$ A
  572.     0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x88,0x00,0x03,0x00,
    * h( r0 P* S$ F- d
  573.     0x00,0x2F,0xC0,0x00,0x38,0xF8,0x00,0x20,0x38,0x00,0x20,0x08,0x00,0x00,0x08,0x00,0x00,0x00,/*"k",75*/
    0 D3 u6 ~; {& i1 Y& _9 z( Q
  574.     0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,  g3 E% ^) Y" X1 B" }0 R7 \6 b
  575.     0x0F,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,/*"l",76*/7 O2 T' t( p/ x, t
  576.     0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,/ U6 q: r+ `* |6 J
  577.     0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x00,0x08,/*"m",77*/& A+ ^* U9 s. R# \
  578.     0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x10,0x00,- P9 T% A" P. [/ U, O; j/ C6 |
  579.     0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00,/*"n",78*/
    4 x$ T& O0 ~% w- D1 r
  580.     0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x0F,0xF0,0x00,0x18,0x30,0x00,0x30,0x08,0x00,0x20,0x08,
    / m: M& u) K% A$ l! U* ?
  581.     0x00,0x20,0x08,0x00,0x30,0x08,0x00,0x18,0x30,0x00,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00,/*"o",79*/0 l# ~9 Z8 x6 z. Z1 m4 J' _1 h
  582.     0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x3F,0xFF,0x00,0x3F,0xFF,0x00,0x10,0x11,0x00,0x20,0x09,
    ' H( V9 \) I3 k2 r
  583.     0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x38,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00,/*"p",80*/# d  R& B; `' ?1 F* s/ p  D* z$ A
  584.     0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,# I- J$ s# d9 ~8 Y) [9 s) m
  585.     0x00,0x20,0x09,0x00,0x10,0x11,0x00,0x1F,0xFF,0x00,0x3F,0xFF,0x00,0x00,0x01,0x00,0x00,0x00,/*"q",81*/
    5 v; H% H2 z3 r, `# g8 W- U  u
  586.     0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x08,0x08,6 C8 m) e% S( o
  587.     0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x00,/*"r",82*/9 ?5 k' u% u% J8 q, E+ P; z, N! G: a* h& T
  588.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x78,0x00,0x1E,0x18,0x00,0x33,0x08,0x00,0x23,0x08,
    1 X! {7 q9 G. w$ V
  589.     0x00,0x21,0x08,0x00,0x21,0x88,0x00,0x21,0x98,0x00,0x30,0xF0,0x00,0x38,0x60,0x00,0x00,0x00,/*"s",83*/, O! R9 i3 ?9 H0 U
  590.     0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0xFF,0xF0,0x03,0xFF,0xF8,1 U  g5 r& A. X5 d2 Y
  591.     0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,/*"t",84*/5 t7 ]: @8 L& o! A3 L+ O
  592.     0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x3F,0xF0,0x00,0x7F,0xF8,0x00,0x00,0x18,0x00,0x00,0x08,
    8 I2 O9 u6 ~/ {$ `
  593.     0x00,0x00,0x08,0x00,0x20,0x10,0x00,0x3F,0xF8,0x00,0x7F,0xF0,0x00,0x00,0x10,0x00,0x00,0x00,/*"u",85*/' i, u5 I' |0 p6 i6 j1 v
  594.     0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x3C,0x00,0x00,0x3F,0x80,0x00,0x23,0xF0,$ d9 ^6 o! h" Q
  595.     0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x23,0x80,0x00,0x3C,0x00,0x00,0x30,0x00,0x00,0x20,0x00,/*"v",86*/
    & k7 G9 F8 U# l% J9 {
  596.     0x00,0x20,0x00,0x00,0x3C,0x00,0x00,0x3F,0xE0,0x00,0x23,0xF8,0x00,0x00,0xE0,0x00,0x27,0x00,2 k0 V2 z1 \. V0 E0 ^' N
  597.     0x00,0x3E,0x00,0x00,0x3F,0xE0,0x00,0x21,0xF8,0x00,0x01,0xE0,0x00,0x3E,0x00,0x00,0x20,0x00,/*"w",87*/
      X1 a4 F0 m4 ^) z! D0 ?( \
  598.     0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x38,0x38,0x00,0x3E,0x68,0x00,0x27,0x80,
    5 }; |6 n2 i  o- H% b
  599.     0x00,0x03,0xC8,0x00,0x2C,0xF8,0x00,0x38,0x38,0x00,0x20,0x18,0x00,0x20,0x08,0x00,0x00,0x00,/*"x",88*/- T4 Z9 Z: W- v: c
  600.     0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x03,0x00,0x3C,0x01,0x00,0x3F,0x83,0x00,0x23,0xEC,- Z% J! Y, r8 v; Q  T) O
  601.     0x00,0x00,0x70,0x00,0x23,0x80,0x00,0x3C,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x00,/*"y",89*// E  z. v; p' ?7 M3 I
  602.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x00,0x20,0x38,0x00,0x20,0xF8,0x00,0x23,0xE8,( W" a+ [+ S! w& b# k; f5 d
  603.     0x00,0x2F,0x88,0x00,0x3E,0x08,0x00,0x38,0x08,0x00,0x20,0x18,0x00,0x00,0x70,0x00,0x00,0x00,/*"z",90*/
    8 j( k6 ?1 G$ k8 h: K* q0 P$ X
  604.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
    $ n$ k# K) F) \
  605.     0x00,0x14,0x00,0x1F,0xF7,0xFC,0x30,0x00,0x06,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,/*"{",91*/+ S2 d5 r9 o6 E. N- _0 z9 Y
  606.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,$ f  }% {! M" z( Q. [
  607.     0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"|",92*/! j8 d$ R7 t/ w2 y' k% @# G4 I
  608.     0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x30,0x00,0x06,0x1F,0xF7,0xFC,0x00,0x14,0x00,) @  H- _; _: S0 f+ ~
  609.     0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"}",93*/
    3 D5 {9 }7 ^# @% p! _; C
  610.     0x00,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00," m4 L* b6 b/ A$ O2 f
  611.     0x10,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x0C,0x00,0x00,0x10,0x00,0x00,/*"~",94*/5 X! c+ X+ c: _/ V- v3 g
  612. };
    5 B4 }# e4 w8 b  l
  613. # ~  z: x2 x5 F. f

  614. + q2 Q4 X; m. i  m% e- d
  615. const unsigned char font_1212[][24] = {
    ' A8 v: P4 C8 Q7 m5 ~

  616. 8 }5 R7 Y$ s# R) D
  617.     {0x00,0x10,0x04,0x10,0x38,0x20,0x00,0xC0,0x03,0x00,0xFC,0x00,0x03,0x00,0x00,0xC0,0x08,0x20,0x30,0x10,0x00,0x10,0x00,0x00},/*"火",0*/7 k7 _, M, N' s! O2 _: J

  618. : F1 |) Y4 g. e0 N/ |
  619.     {0x00,0x90,0xFB,0x10,0xA9,0x50,0xA9,0x50,0xA9,0x50,0xAF,0xF0,0xA9,0x50,0xA9,0x50,0xA9,0x50,0xF9,0x10,0x00,0x10,0x00,0x00},/*"星",1*/& g  R: i+ D% w
  620. * M; [- M7 ~- ~1 B: p1 o5 D
  621.     {0x48,0x80,0x4B,0x00,0x7F,0xF0,0x8A,0x00,0x09,0x00,0x48,0x80,0x24,0x80,0x00,0x80,0xFF,0xF0,0x01,0x00,0x01,0x00,0x00,0x00},/*"科",2*/
    8 Y% i2 {$ U, v  c) J: f; t0 @1 G' o

  622.   a: i$ q" v4 ~6 g- Q$ ]7 \0 y
  623.     {0x11,0x00,0x11,0x10,0xFF,0xF0,0x12,0x00,0x24,0x10,0x27,0x10,0x24,0xA0,0xFC,0x40,0x24,0xA0,0x27,0x10,0x20,0x10,0x00,0x00},/*"技",3*/
    4 g% e& n" K$ _
  624. 0 l$ ~1 B+ E8 N; Q# f: ?2 ?* W
  625.     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",4*/3 c6 O/ j' e: y6 Q* J6 c

  626. # F$ V! Q8 A2 u7 s* R
  627. };
    + D! `% L6 k/ q# r3 T) J
  628. / s/ z2 X- r' L. Q2 P& ^
  629. const char* font1212_table = {3 Z# _% a% J: y4 S' ^- \
  630.     "火星科技 "
    3 L: w( `6 F! Z' F( ~5 [% G  d& F
  631. };
    . P$ l  \5 B3 k/ ~' B( o
  632. 5 F4 t5 e; K. L$ \
  633. const unsigned char font_2424[][72] = {
    6 C' t1 O$ d) w$ d2 l
  634.     {
    9 C$ @9 V9 m" [& v9 V4 i! v% D5 N
  635.         0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x08,0x04,0x00,0x18,0x04,0x00,0x70,0x08,0x01,0x80,0x08,0x00,0x00,0x10,/ K* C- @* R/ B; m3 i  ^8 x
  636.         0x00,0x00,0x60,0x00,0x00,0xC0,0x00,0x07,0x80,0x7F,0xFE,0x00,0x3F,0xE0,0x00,0x00,0x18,0x00,0x00,0x0E,0x00,0x00,0x11,0x80,
    * r2 r6 g$ c) r& e! s
  637.         0x00,0x20,0xC0,0x00,0x40,0x60,0x01,0x80,0x30,0x01,0x00,0x18,0x00,0x00,0x0C,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00
    0 p4 R5 {0 R7 q/ v: j/ N
  638.     },/*"火",0*/4 B  h, Y. `/ v
  639. 5 Z# n0 ~2 u7 l7 H' w
  640.     {
    ; J2 S( N: u1 J( I
  641.         0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x44,0x00,0x00,0x84,0x00,0x03,0x04,0x3F,0xCE,0x44,0x3F,0x9C,0x44,0x24,0x84,0x44,
      B9 g( a( E3 w! B
  642.         0x24,0x84,0x44,0x24,0x84,0x44,0x24,0x84,0x44,0x24,0xBF,0xFC,0x24,0x9F,0xFC,0x24,0x84,0x44,0x24,0x84,0x44,0x24,0x84,0x44,5 [' g- j5 }% P/ c2 u6 g- o  o
  643.         0x24,0x84,0x44,0x24,0x84,0xC4,0x3F,0xCC,0x44,0x00,0x04,0x04,0x00,0x00,0x0C,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00
    9 Y, l% Y. T6 Y& I7 h& \% L
  644.     },/*"星",1*// g4 k6 n* n$ O5 A( P

  645. 6 W, |/ x' |% n
  646.     {
    ) ]2 y0 {) l* @8 O- U  n
  647.         0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x80,0x40,0x10,0x81,0x80,0x10,0x86,0x00,0x10,0x9C,0x00,0x1F,0xFF,0xFF,0x1F,0xFF,0xFE,4 g# J$ y  P0 o2 @5 ]3 z: [+ f
  648.         0x20,0x88,0x00,0x20,0x8C,0x00,0x20,0x86,0x40,0x00,0x00,0x80,0x00,0x00,0x80,0x04,0x30,0x80,0x06,0x1E,0x80,0x02,0x01,0x00,
    : b0 w4 k* `. {
  649.         0x00,0x01,0x00,0x00,0x01,0x00,0x7F,0xFF,0xFF,0x20,0x01,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x001 j' {: S7 k: G0 o
  650.     },/*"科",2*/. e. @" g3 H  l& Y; _) J) Y3 E

  651. + M: x0 W2 S/ R" f' [% R
  652.     {
    1 h% |' K5 E. G% l
  653.         0x00,0x00,0x00,0x02,0x04,0x00,0x02,0x06,0x08,0x02,0x04,0x04,0x02,0x08,0x04,0x7F,0xFF,0xFE,0x3F,0xFF,0xFC,0x02,0x10,0x00,
    " @, d7 o" S" ]
  654.         0x02,0x10,0x02,0x02,0x20,0x02,0x02,0x10,0x04,0x02,0x10,0x04,0x02,0x1C,0x08,0x02,0x13,0x08,0x02,0x10,0xD0,0x7F,0xF0,0x20,
    8 R! X7 @1 X; a( y6 C1 ^
  655.         0x22,0x10,0x70,0x02,0x11,0xD8,0x02,0x17,0x0C,0x02,0x1C,0x0C,0x02,0x10,0x06,0x02,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00
    / H! Q* n5 {8 m5 i  i
  656.     },/*"技",3*/- ?) s' r; r: |5 s- D

  657. + Q% ]5 J* X* C4 ?$ T& d; W, m
  658.     {" Y  u/ {* B6 u& v; P
  659.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    2 m4 W; g# k' X& l4 J+ D
  660.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    - T9 M( A# E6 c% @
  661.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    & S  i9 L& h: J" Y8 C
  662.     },/*" ",4*/& I4 n4 b/ T) z5 Q$ x/ m
  663. 6 `2 X1 k0 e5 A% o% v
  664. & [, G- A0 w& N0 B* [
  665. };
    3 W/ s0 u7 w5 ~( C' b7 U% ]4 I
  666. const char* font2424_table = {
    5 @9 O" P6 {" _/ J/ n8 d
  667.     "火星科技 "% p& q+ g8 g4 U5 h
  668. };
    $ h, l; N0 g4 q: _" J* l# s

  669. 9 @6 v% ]& [- A9 `2 P8 ^+ B

  670. + F2 A2 H( T. Z3 A. L
  671. const unsigned char bmp_logo[]= {3 @5 u/ t/ Z( T% c; m
  672. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,; b: g8 K' H0 J( m/ C3 w( I* e
  673. 0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x7E,; J' n; T5 H9 ]" h2 j  ]1 F- _
  674. 0x00,0x00,0x00,0xFE,0x00,0x00,0x03,0xFE,; v8 V# H+ c/ l; D& x4 _* Z
  675. 0x00,0x00,0x0F,0xFE,0x00,0x00,0x1F,0xFE,  q. `# `5 W) W
  676. 0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFE,8 q/ _( d; {& z( [2 O
  677. 0x00,0x07,0xFF,0xFE,0x00,0x0F,0xFF,0xFC,
    9 b+ K5 }3 D7 x3 R& J
  678. 0x00,0x3F,0xFF,0xF8,0x00,0xFF,0xFF,0xE0,
      \- d0 n/ J. v7 G) b1 h+ G
  679. 0x01,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x00,
    % V4 D" w- u( {# \9 v$ ^5 {
  680. 0x0F,0xFF,0xFC,0x00,0x1F,0xFF,0xF0,0x00,) S% o* L" O+ I) I9 b8 B( c+ O
  681. 0x3F,0xFF,0xC0,0x00,0x3F,0xFF,0x80,0x00,0 |" K  v& l5 Q6 l7 U# A- w
  682. 0x3F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,
    1 F* W+ o' W& k: r- M4 E
  683. 0x3F,0xF0,0x00,0x00,0x3F,0xC0,0x00,0x00,
    # L! J# R& q7 j: Y: |5 {
  684. 0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,4 K; k3 D: B% r, w, t
  685. 0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,
    ! b' v$ E- h4 G; D. n1 H
  686. 0x3E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,
    ; g5 ]' r! n# x3 Q" h
  687. 0x3F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,7 G5 x: T- d) e: h6 }4 {4 ~+ M) t
  688. 0x3F,0xFC,0x00,0x00,0x3F,0xFF,0x00,0x00,
    / F& v& `" E0 P% {, ~$ H( w
  689. 0x3F,0xFF,0x80,0x00,0x3F,0xFF,0xE0,0x00,$ z' f) |/ j! @/ a5 Z
  690. 0x3F,0xFF,0xF8,0x00,0x0F,0xFF,0xFE,0x00,
    " v1 ^# u$ {" P# @0 R# D2 i
  691. 0x07,0xFF,0xFF,0x00,0x31,0xFF,0xFF,0xC0,
    ) }: E& |3 B' i" z3 `' ~2 |/ T
  692. 0x30,0x7F,0xFF,0xF0,0x3C,0x1F,0xFF,0xF8,
    3 |' A2 l" h% O) R$ M9 J
  693. 0x3F,0x0F,0xFF,0xFE,0x3F,0x83,0xFF,0xFE,
    8 _, W" Z# g+ ]4 a/ F, N
  694. 0x3F,0xE0,0xFF,0xFE,0x3F,0xF8,0x7F,0xFE,
    6 V% |9 j) z: y/ v3 k# G
  695. 0x3F,0xFE,0x1F,0xFE,0x1F,0xFF,0x07,0xFE,/ p5 v; Q! j( i; u- j. w4 J5 y
  696. 0x0F,0xFF,0xC3,0xFE,0x03,0xFF,0xF0,0xFE,/ E7 c* U$ {4 [2 o
  697. 0x30,0xFF,0xF8,0x3E,0x38,0x3F,0xFE,0x0E,$ x4 Y$ Z; d" _, |, d
  698. 0x3C,0x1F,0xFF,0x86,0x3E,0x07,0xFF,0xC0,
    , ]/ S" T3 c; @: L/ X
  699. 0x3E,0x01,0xFF,0xF0,0x3E,0x00,0xFF,0xFC,
    + I  h" o9 Q. P# \! M" ]
  700. 0x3E,0x00,0x3F,0xFE,0x3E,0x06,0x0F,0xFE,+ L7 d. l- |4 j3 q$ O* w, x, h
  701. 0x3E,0x07,0x87,0xFE,0x3E,0x07,0xC1,0xFE,
    $ ~& F- d  d/ L0 ]% s2 O! N
  702. 0x3E,0x07,0xC0,0x7E,0x3E,0x07,0xC0,0x3E,
    8 l( Z; B* s  q3 R9 u4 U4 [  V
  703. 0x3E,0x07,0xC0,0x0E,0x3E,0x07,0xC0,0x06,; Y# ~+ C" f" N8 ]: `( K: y) B. U' M8 }
  704. 0x3F,0x87,0xC0,0x00,0x3F,0xC7,0xC0,0x00,5 ]8 Y& {; Z1 O, k) k; ?7 ^' O, Y
  705. 0x3F,0xF7,0xC0,0x00,0x3F,0xFF,0xC0,0x30,; M* ^+ U. ^' j9 L+ m$ x+ C$ @
  706. 0x3F,0xFF,0xC0,0x38,0x0F,0xFF,0xC0,0x3E,0 i$ h7 s7 ?9 n7 a
  707. 0x03,0xFF,0xE0,0x3E,0x31,0xFF,0xF8,0x3E,
    8 m1 z5 o5 H: c# A8 w! A$ L
  708. 0x38,0x7F,0xFC,0x3E,0x3C,0x1F,0xFF,0x3E,( n( v: M4 I0 \
  709. 0x3E,0x0F,0xFF,0xBE,0x3E,0x03,0xFF,0xBE,: G7 x2 H7 I) [  u9 ~% m
  710. 0x3E,0x00,0xFF,0xBE,0x3E,0x00,0x7F,0xBE,' [; {3 I! M) [, M6 }6 u
  711. 0x3E,0x07,0x1F,0xBE,0x3E,0x07,0x87,0xBE,
    1 ^- N" [, Q- u  T
  712. 0x3E,0x07,0xC1,0xBE,0x3E,0x07,0xC1,0xBE,
    # x+ b( \& P2 T. U* ?& W
  713. 0x3E,0x07,0xC0,0x3E,0x3E,0x07,0xC0,0x3E,4 g& M  Z, J# U
  714. 0x3E,0x07,0xE0,0x3E,0x3F,0x87,0xF8,0x3E,) i  Y* Y  w/ Z- R2 V
  715. 0x3F,0xE7,0xFC,0x3E,0x3F,0xF7,0xFF,0x3E,
    " ]! f. j+ u# `4 X4 A
  716. 0x3F,0xFF,0xFF,0xBE,0x3F,0xFF,0xFF,0xBE,: v; L) p. w1 o" c' t0 E
  717. 0x0F,0xFF,0xFF,0xBE,0x03,0xFF,0xFF,0xBE,& e8 u5 P- c* E9 ~' L: n! _+ G( v1 r
  718. 0x31,0xFF,0xFF,0xBE,0x30,0x7F,0xDF,0xBE,7 S1 o/ R& L* ]9 @8 F7 A' A0 Y  r; b
  719. 0x3C,0x1F,0xC7,0xBE,0x3E,0x0F,0xC1,0xBE,
    6 N" R0 b" p1 h% v: w
  720. 0x3E,0x03,0xC0,0xBE,0x3E,0x00,0xC0,0x3E,
    3 q; q9 j9 t' O1 m, |0 b2 D. g
  721. 0x3E,0x00,0x00,0x3E,0x3E,0x06,0x00,0x3E,
    5 g+ U6 \' `2 i4 z/ [
  722. 0x3E,0x07,0x00,0x3E,0x3E,0x07,0xC0,0x3E,* {+ ~8 F/ w( y, P  _
  723. 0x3E,0x07,0xC0,0x3E,0x3E,0x07,0xC0,0x3E,* m6 r0 d5 z7 y1 |7 ^5 }! V2 _
  724. 0x3E,0x07,0xC0,0x3E,0x3E,0x07,0xC0,0x3E,
    4 s, X  b" K' X) H) e! L
  725. 0x3E,0x07,0xC0,0x3E,0x3E,0x07,0xC0,0x3E,
    & e- J) i/ R2 _- s2 o
  726. 0x3E,0x07,0xC0,0x3E,0x3E,0x07,0xC0,0x3E,
    3 a# Q9 G) F* `2 d( w5 D
  727. 0x1E,0x07,0xC0,0x3E,0x0E,0x07,0xC0,0x3E,
    $ w0 b" b% P# M" U; I- v* F
  728. 0x0E,0x07,0xC0,0x3E,0x00,0x07,0xF0,0x3E,
    # t% s$ U+ a( R1 W1 R
  729. 0x00,0x07,0xFC,0x3E,0x00,0x07,0xFF,0x3E,/ x) Y% W% |. y
  730. 0x00,0x07,0xFF,0xBE,0x00,0x03,0xFF,0xFE,8 q4 `1 v5 q# `$ D2 N9 H
  731. 0x00,0x01,0xFF,0xFE,0x00,0x00,0x7F,0xFE,
    + m/ f2 o0 Q' @0 b5 P% m
  732. 0x00,0x00,0x1F,0xFE,0x00,0x00,0x0F,0xFE,- I8 K& W* z' G; g; a6 W: f
  733. 0x00,0x00,0x03,0xFE,0x00,0x00,0x00,0xFE,
    % [7 N  V% n6 `, J- L
  734. 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1E,' v% n7 a0 s* j* L% ^- q( K
  735. 0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,
    * W) D" {, g- e4 Y
  736. };
    ; B3 G  Q# M8 N3 a; @2 [
  737. /*********************************************END OF FILE**********************************************/
复制代码

3 H& G8 z5 K" f" l
7 i! O8 o  w$ l9 I2 e, oFONT.H文件5 f( _+ @6 s+ b: S
5 S8 @' C* L1 g4 g! }
  1. #ifndef __FY_OLEDFONT_H+ O) |: z. N0 H2 d
  2. #define __FY_OLEDFONT_H
    + u/ g( b8 p. p& t$ v. w
  3. # r# N, @6 ^$ J& j- g# v
  4. extern const unsigned char asc2_0608[95][6];3 C. W) Y5 T1 r' _6 A& \
  5. extern const unsigned char asc2_0612[95][12];* f9 Z7 z; m% `) \7 b/ x$ H$ w% d
  6. extern const unsigned char asc2_0816[95][16];
    % i+ o/ c2 d6 W6 a! M
  7. extern const unsigned char asc2_1224[95][36];; F7 L1 C+ U8 B  B6 f0 f( W$ s
  8. extern const unsigned char font_1212[][24];" Q' h7 Y! R% N8 y3 n) K; K
  9. extern const unsigned char font_2424[][72];
    $ I' J! n: T- f  y' r( r! F
  10. extern const char* font1212_table;) n1 p# q4 n8 H: Q0 t
  11. extern const char* font2424_table;8 b6 y$ ~5 D' ?& g
  12. extern const unsigned char bmp_logo[];
    7 [; F- @! {/ D+ Y, u. ]
  13. #endif( u/ u' P) r2 j* ^: _  M1 W) y7 q
  14. : G! a6 L8 e9 Y8 o; V9 z' g$ o
  15. 5 ^) r4 t7 p0 q- l% Q$ p2 G
  16. /*********************************************END OF FILE****************************
    % R- _  v5 c9 [3 q8 j5 r
复制代码

+ b# N! Q0 Q7 n9 F! L1 R
6 [+ U& v6 `  l, D2 }
赞 收藏 评论0 发布时间:2022-3-16 10:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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