16ビット漢字キャラクタージェネレータ(全角)(ILI9341)(STM32G071)(32～127)


x 過去ログをみよ
x ちょつと雑


![o_coq187.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/414aaeab-dacc-1a17-3779-a5f00cf27543.jpeg)


```c++




//ili9341_kanji16_test1_071

//インクルド
#include "kanji16.h"


//定義
//GPIO
//GPIOの設定1　開始
//GPIO
#define DW    digitalWrite
#define TFT_RST   A1
#define TFT_RS    3
#define TFT_CS    4
#define GPIO_RESET(s)  DW(TFT_RST,s)
#define GPIO_RS(s)     DW(TFT_RS,s)
#define GPIO_CS(s)     DW(TFT_CS,s)

#define TFT_MOSI 11
#define TFT_SCK  13
#define SPI_MOSI_HIGH() DW(TFT_MOSI,HIGH)
#define SPI_MOSI_LOW()  DW(TFT_MOSI,LOW)
#define SPI_SCK_HIGH()  DW(TFT_SCK,HIGH)
#define SPI_SCK_LOW()   DW(TFT_SCK,LOW)


void GPIO_8BIT(int x)
{
  for (int bit = 0; bit < 8; bit++) {
    if (x & 0x80) {
      SPI_MOSI_HIGH();
      SPI_SCK_HIGH();
      SPI_SCK_LOW();
    } else {
      SPI_MOSI_LOW();
      SPI_SCK_HIGH();
      SPI_SCK_LOW();
    }//end if
    x <<= 1;
  }//for
} //GPIO_D0_D7


//TFT_RST   A1 PA1
//TFT_RS    3  PB3
//TFT_CS    4  PB5
//                                                 m C   R
//                                         5432109876543210
#define REG_MOSI_ON           GPIOA->ODR=0b0000000010000010;
//                                                 m C   R
//                                         5432109876543210
#define REG_CLK_ON__MOSI_1    GPIOA->ODR=0b0000000010100010;
//                                                 m C   R
//                                         5432109876543210
#define REG_MOSI_OFF          GPIOA->ODR=0b0000000000000010;
//                                                 m C   R
//                                         5432109876543210
#define REG_CLK_ON__MOSI_0    GPIOA->ODR=0b0000000000100010;
//                                                 m C   R
//                                         5432109876543210
#define REG_CLK_OFF           GPIOA->ODR=0b0000000000000010;


void GPIO_8BIT_A(int s)
{
  //1
  if (s & 0x80) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //2
  if (s & 0x40) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //3
  if (s & 0x20) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //4
  if (s & 0x10) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //5
  if (s & 0x08) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //6
  if (s & 0x04) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //7
  if (s & 0x02) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if
  //8
  if (s & 0x01) {
    REG_MOSI_ON;
    REG_CLK_ON__MOSI_1;
    REG_CLK_OFF;
  } else {
    REG_MOSI_OFF;
    REG_CLK_ON__MOSI_0;
    REG_CLK_OFF;
  }//end if

}//SPI_WRITE8


//ライト
void LCD_Write_CMD(int a)
{
  GPIO_CS(0);//CS=0; 12
  GPIO_RS(0); //A0=0; 9
  GPIO_8BIT(a);//P1=a; data SPI SPI
  GPIO_CS(1);//CS=1; 12
} //LCD_Write_CMD


void LCD_Write_Data(int a)
{
  GPIO_CS(0);//CS=0; 12
  GPIO_RS(1); //A0=1; 9
  GPIO_8BIT(a);//P1=a; data SPI SPI
  GPIO_CS(1);//CS=1; 12
} //LCD_Write_Data


/*
//漢字ROM
int ch_data7[16 * 7] = {
  0x0000, 0x0000, 0x3800, 0x4400, 0xa200, 0xa200, 0x9200, 0x9200,
  0x9200, 0x8a00, 0x8a00, 0x4400, 0x3800, 0x0000, 0x0000, 0x0000, //0
  0x0000, 0x0000, 0x1000, 0x3000, 0x5000, 0x1000, 0x1000, 0x1000,
  0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, 0x0000, //1
  0x0000, 0x0000, 0x3800, 0x4400, 0x8200, 0x8200, 0x0200, 0x0400,
  0x0800, 0x1000, 0x2000, 0xc000, 0xfe00, 0x0000, 0x0000, 0x0000, //2
  0x0000, 0x43f8, 0x2208, 0x13f8, 0x4208, 0x23f8, 0x1000, 0x0000,
  0x13f8, 0x12a8, 0x22a8, 0x22a8, 0x22a8, 0x42a8, 0x47fc, 0x0000,//温 (3)
  0x0080, 0x1ffc, 0x1000, 0x1220, 0x2ff8, 0x2220, 0x23e0, 0x2000,
  0x2ffc, 0x2410, 0x4360, 0x4080, 0x4160, 0x4618, 0x0806, 0x0000,//度 (4)
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 //' '
};
*/

int st_p[20][30] = {
//  1    2    3    4    5    6    7    8     9   10   11    12   13   14   15   16   17   18   19   20   21   22   23   24    25   26   27   28   29   30
  {'0', '0', '0', '0', '2', '1', ' ', ' ',  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //1
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //2
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //3
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //4
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //5

  {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',  'I', 'J', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //6
  {'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',  'S', 'T', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //7
  {'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',  'c', 'd', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //8
  {'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',  'm', 'n', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //9
  {'o', 'p', 'q', 'r', 's', 't', 'u', 'v',  'w', 'x', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //10

  {'y', 'z', '_', '.', '+', '-', '*', '/',  ',', '%', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //11
  {'1', '2', '3', '4', '5', '6', '7', '8',  '9', '0', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //12
  {'?', '!', ':', '>', '<', '@', '(', ')',  ' ', 127, ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //13
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //14
  {'0', '0', '0', '0', '0', '0', '0', '1',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' },  //15

  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //16
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //17
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //18
  {'0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }, //19
  {'0', '0', '0', '0', '0', '0', '0', '1',  '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',  '0', '0', '0', '0', '0', '0' }  //20

};

char hz_p[20][30] = {
// 1  2  3  4  5  6  7  8   9  10 11 12 13 14 15 16   17 18 19 20 21 22 23 24  25 26 27 28 29 30
  {0, 8, 0, 8, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //1
  {0, 8, 0, 8, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //2
  {0, 8, 0, 8, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //3
  {0, 8, 0, 8, 0, 8, 0, 8,  0, 8, 0, 8, 0, 8, 0, 8,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //4
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //5
  
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //6
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //7
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //8
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //9
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //10

  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //11
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //12
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //13
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //14
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //15

  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //16
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //17
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //18
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }, //19
  {0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 }  //20

};

//TFT_RST   A1 PA1
//TFT_RS    3  PB3
//TFT_CS    4  PB5
//                                         C R
//                               5432109876543210
#define REG_CS_ON   GPIOB->ODR=0b0000000000101000
//                                         C R
//                               5432109876543210
#define REG_CS_OFF  GPIOB->ODR=0b0000000000001000

//画面の書き込み
void P_display(void)
{

  //カラーの上位と下位と一時
  int color_h;
  int color_l;
  int color_vel;

  //画面の書き込み開始
  LCD_Write_CMD(0x2C); //memory write
  GPIO_RS(1);//RS=0; 12
  delay(2);

  int a; int ch;
  for (int y = 0; y < 320; y++) {
    for (int x = 0; x < 240; x++) {

      ch = st_p[y >> 4][x >> 4] - ' ';
      a = (kanji1[ (y & 0x0f ) + (ch * 16) ] << ( x & 0x0f) ) ;
      //a = a << hz_p[y >> 4][x >> 3];
      a = a & 0x8000;
      //a = a >> 15;
      //printf("%d ",a);

      if (a == 0) {
        color_vel = 0x0000;
      } else {
        //            5432109876543210
        //color_vel = 0b1111100000000000; //R
        //color_vel = 0b0000011111100000; //G
        //color_vel = 0b0000000000011111; //B
        color_vel = 0b1111111111111111;
      }
      color_h = (color_vel >> 8) & 0xff;
      color_l =  color_vel       & 0xff;

          REG_CS_OFF;
          GPIO_8BIT_A(color_h);
          REG_CS_ON;

          REG_CS_OFF;
          GPIO_8BIT_A(color_l);
          REG_CS_ON;

    }//for x
    //printf("\n");
  }//for y

  

} //P_display


//液晶の初期化処理
void TXDT144TF_ST7735S_Init(void)
{

  GPIO_RESET(1);//LCD_RESET=1;
  delay(1); //Delay 1ms

  GPIO_RESET(0);//LCD_RESET=0;
  delay(1); //Delay 1ms

  GPIO_RESET(1);//LCD_RESET=1;
  delay(120); //Delay 120ms

  LCD_Write_CMD(0x01);//SOFTWARE RESET
  delay(50);

  LCD_Write_CMD(0x01);//SOFTWARE RESET
  delay(50);

  LCD_Write_CMD(0x11);//SLEEP OUT
  delay(200);

  LCD_Write_CMD(0x29);//display on
  delay(100);

  LCD_Write_CMD(0x3a);//Interface pixel format
  LCD_Write_Data(0x55);//16bit mode
  delay(100);

  LCD_Write_CMD(0x36);//RGB-RGR format
//                 MY
//                 |MX
//                 ||MV
//                 |||ML
//                 ||||BGR
//                 |||||MH
//                 ||||||00      
  LCD_Write_Data(0b01001000);//RGB mode
  delay(100);


} //TXDT144TF_ST7735S_Init


//初期化
void setup() {

  //ポートのモード設定　アウトプットモード
  pinMode(TFT_CS, OUTPUT);
  pinMode(TFT_RST, OUTPUT);
  pinMode(TFT_RS, OUTPUT);

  pinMode(TFT_MOSI, OUTPUT);
  pinMode(TFT_SCK , OUTPUT);

  //ポートの初期化
  GPIO_CS(1);//CS=1
  GPIO_RESET(1);//RESET=1
  GPIO_RS(0);//RS=0

  delay(500); //0.5秒待つ

  //液晶の初期化処理
  TXDT144TF_ST7735S_Init();

  P_display();

} //setup


//メインループ
void loop() {
} //loop


```

kanji16.h


```



// 'sentakubasami240x320', 240x320px
static const unsigned int PROGMEM kanji1[] = {



0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, //' '
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, //!
0x0100, 0x0100, 0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0000, 

0x0000, 0x0120, 0x0240, 0x0480, 0x0900, 0x0000, 0x0000, 0x0000, // "
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0440, 0x0440, 0x0440, 0x1ff0, 0x0440, 0x0440, // #
0x0440, 0x0440, 0x1ff0, 0x0440, 0x0440, 0x0440, 0x0440, 0x0000, 
0x0000, 0x0100, 0x0380, 0x0540, 0x0920, 0x0900, 0x0500, 0x0380, // $
0x0140, 0x0120, 0x0120, 0x0920, 0x0540, 0x0380, 0x0100, 0x0000, 

0x0000, 0x0000, 0x0000, 0x1810, 0x1820, 0x0040, 0x0080, 0x0100, // %
0x0200, 0x0400, 0x0830, 0x1030, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0700, 0x0880, 0x0840, 0x0840, 0x0880, 0x0500, 0x0600, // &
0x0a00, 0x1108, 0x1090, 0x10a0, 0x1040, 0x08a0, 0x0710, 0x0000, 
0x0000, 0x0300, 0x0300, 0x0100, 0x0200, 0x0000, 0x0000, 0x0000, // '
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0080, 0x0100, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, //(
0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0100, 0x0080, 0x0000, 
0x0000, 0x0200, 0x0100, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, //)
0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0100, 0x0200, 0x0000, 
0x0000, 0x0000, 0x0000, 0x1010, 0x0820, 0x0440, 0x0280, 0x0100, //*
0x0280, 0x0440, 0x0820, 0x1010, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x1ff0, //+
0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, //,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0200, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ff0, //-
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, //.
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, // /
0x0200, 0x0400, 0x0800, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x3008, 0x2808, 0x2608, //0
0x2108, 0x20c8, 0x2028, 0x2018, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x0100, 0x0300, 0x0500, 0x0900, 0x0100, 0x0100, 0x0100, //1
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x0fe0, 0x1010, 0x2010, 0x2008, 0x0008, 0x0010, 0x0010, //2
0x00e0, 0x0300, 0x0400, 0x0800, 0x1000, 0x2000, 0x3ff8, 0x0000, 
0x0000, 0x0fe0, 0x1010, 0x2010, 0x2008, 0x0008, 0x0010, 0x03e0, //3
0x0010, 0x0008, 0x0008, 0x2008, 0x2010, 0x1010, 0x0fe0, 0x0000, 
0x0000, 0x0030, 0x0050, 0x0090, 0x0110, 0x0210, 0x0410, 0x0810, //4
0x1010, 0x2010, 0x3ffc, 0x0010, 0x0010, 0x0010, 0x0010, 0x0000, 
0x0000, 0x3ff8, 0x2000, 0x2000, 0x2000, 0x2000, 0x3fc0, 0x0020, //5
0x0010, 0x0008, 0x0008, 0x0008, 0x2010, 0x1020, 0x0fc0, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2000, 0x2000, 0x27c0, 0x2820, //6
0x3010, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x1ff8, 0x0008, 0x0008, 0x0010, 0x0010, 0x0020, 0x0020, //7
0x0040, 0x0040, 0x0040, 0x0080, 0x0080, 0x0100, 0x0100, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x1010, 0x0fe0, //8
0x1010, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2008, 0x1018, //9
0x0828, 0x07c8, 0x0008, 0x0008, 0x1010, 0x0820, 0x07c0, 0x0000,
0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, //:
0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, // ;
0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0200, 0x0400, 0x0000, 

0x0000, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, //<
0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, 0x0000, 0x0000, 

0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ff0, 0x0000, // =
0x0000, 0x1ff0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0800, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, //>
0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x0000, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x1010, 0x1010, 0x0010, 0x0020, //?
0x01c0, 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2788, 0x2448, 0x2428, 0x2428, //@
0x2428, 0x2428, 0x2428, 0x2428, 0x13f8, 0x0800, 0x07e0, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2008, 0x2008, //A
0x3ff8, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x0000, 
0x0000, 0x3fc0, 0x2020, 0x2010, 0x2008, 0x2010, 0x2020, 0x3fc0, //B
0x2020, 0x2010, 0x2008, 0x2008, 0x2010, 0x2020, 0x3fc0, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2000, 0x2000, //C
0x2000, 0x2000, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x3fc0, 0x2020, 0x2010, 0x2008, 0x2008, 0x2008, 0x2008, //D
0x2008, 0x2008, 0x2008, 0x2008, 0x2010, 0x2020, 0x3fc0, 0x0000, 
0x0000, 0x3ff8, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x3fe0, //E
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x3ff8, 0x0000, 
0x0000, 0x3ff8, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x3fe0, //F
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2000, 0x2000, //G
0x20f8, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x3ff8, //H
0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x0000, 
0x0000, 0x1ff0, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, //I
0x0100, 0x0100, 0x0100, 0x0100, 0x1ff0, 0x0000, 0x0000, 0x0000, 
0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, //J
0x0008, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x2008, 0x2030, 0x2040, 0x2180, 0x2200, 0x2c00, 0x3000, //K
0x2800, 0x2600, 0x2100, 0x2080, 0x2060, 0x2010, 0x2008, 0x0000, 
0x0000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, //L
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x3ff8, 0x0000, 
0x0000, 0x2008, 0x3018, 0x2828, 0x2448, 0x2288, 0x2108, 0x2008, //M
0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x0000, 
0x0000, 0x2008, 0x3008, 0x2808, 0x2808, 0x2408, 0x2208, 0x2108, //N
0x2108, 0x2088, 0x2048, 0x2028, 0x2028, 0x2018, 0x2008, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2008, 0x2008, //O
0x2008, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x3fc0, 0x2020, 0x2010, 0x2008, 0x2008, 0x2010, 0x2020, //P
0x3fc0, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, 
0x0000, 0x07c0, 0x0820, 0x1010, 0x2008, 0x2008, 0x2008, 0x2008, //Q
0x2008, 0x2008, 0x2088, 0x2048, 0x1028, 0x0810, 0x07e8, 0x0000, 
0x0000, 0x3fc0, 0x2020, 0x2010, 0x2008, 0x2008, 0x2010, 0x2020, //R
0x3fc0, 0x2080, 0x2040, 0x2040, 0x2020, 0x2020, 0x2010, 0x0000, 
0x0000, 0x0fe0, 0x1010, 0x2000, 0x2000, 0x2000, 0x1000, 0x0fe0, //S
0x0010, 0x0008, 0x0008, 0x0008, 0x1008, 0x0810, 0x07e0, 0x0000, 
0x0000, 0x3ff8, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, //T
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, //U
0x2008, 0x2008, 0x2008, 0x2008, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, //V
0x2008, 0x2008, 0x1010, 0x0820, 0x0440, 0x0280, 0x0100, 0x0000, 
0x0000, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, //W
0x2008, 0x2108, 0x2288, 0x2448, 0x2828, 0x3018, 0x2008, 0x0000, 
0x0000, 0x0000, 0x2008, 0x2008, 0x1010, 0x0820, 0x0440, 0x0280, //X
0x0100, 0x0280, 0x0440, 0x0820, 0x1010, 0x2008, 0x2008, 0x0000, 
0x0000, 0x2008, 0x1010, 0x0820, 0x0440, 0x0280, 0x0100, 0x0100, //Y
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0xfff8, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, //Z
0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0xfff8, 0x0000, 0x0000, 

0x0000, 0x0380, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, // [
0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0380, 0x0000, 
0x0000, 0x1010, 0x0820, 0x0440, 0x0280, 0x0100, 0x0100, 0x0fe0, // ￥
0x0100, 0x0100, 0x0fe0, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x0380, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, // ]
0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0380, 0x0000, 
0x0000, 0x0100, 0x0280, 0x0440, 0x0820, 0x0000, 0x0000, 0x0000, // ^
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, //_
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ff8, 0x0000, 

0x0000, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0000, 0x0000, // `
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 

0x0000, 0x0000, 0x0000, 0x0fc0, 0x0020, 0x0010, 0x0010, 0x07d0, //a
0x0830, 0x1010, 0x1010, 0x1010, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x17c0, 0x1820, //b
0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1020, 0x1fc0, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, //c
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x07d0, 0x0830, //d
0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0810, 0x07f0, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, //e
0x1010, 0x1010, 0x1ff0, 0x1000, 0x1000, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x01c0, 0x0200, 0x0200, 0x0400, 0x0400, 0x1fc0, 0x0400, //f
0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0000, 
0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, 0x1010, 0x1010, 0x1010, //g
0x1010, 0x1010, 0x0830, 0x07d0, 0x0010, 0x0020, 0x0fc0, 0x0000, 
0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, //h
0x1fc0, 0x1020, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 
0x0000, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, 0x0100, 0x0100, //i
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, //j
0x0010, 0x0010, 0x0010, 0x1010, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x1000, 0x1000, 0x1000, 0x1040, 0x1080, 0x1100, 0x1200, //k
0x1400, 0x1800, 0x1400, 0x1200, 0x1100, 0x1080, 0x1040, 0x0000, 
0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, //l
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3fe0, 0x2110, //m
0x2108, 0x2108, 0x2108, 0x2108, 0x2108, 0x2108, 0x2108, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1fc0, 0x1020, //n
0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, //o
0x1010, 0x1010, 0x1010, 0x1010, 0x1010, 0x0820, 0x07c0, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, 0x1010, //p
0x1010, 0x1010, 0x1010, 0x1010, 0x1820, 0x17c0, 0x1000, 0x1000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0820, 0x1010, //q
0x1010, 0x1010, 0x1010, 0x1010, 0x0830, 0x07d0, 0x0010, 0x0010, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x17c0, 0x1820, //r
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x07e0, 0x0800, 0x1000, 0x1000, //s
0x0800, 0x07c0, 0x0020, 0x0010, 0x0010, 0x0020, 0x0fc0, 0x0000, 
0x0000, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x1fe0, 0x0200, //t
0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x01c0, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010, 0x1010, 0x1010, //u
0x1010, 0x1010, 0x1010, 0x1010, 0x0810, 0x0410, 0x03f0, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010, 0x1010, 0x1010, //v
0x1010, 0x1010, 0x1010, 0x0820, 0x0440, 0x0280, 0x0100, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x2008, 0x2008, 0x2008, 0x2008, //w
0x2008, 0x2108, 0x2288, 0x2448, 0x2828, 0x3018, 0x2008, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x2008, 0x1010, 0x0820, 0x0440, //x
0x0280, 0x0100, 0x0280, 0x0440, 0x0820, 0x1010, 0x2008, 0x0000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x1010, 0x1010, 0x1010, 0x1010, //y
0x0820, 0x0440, 0x0280, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ff0, 0x0020, //z
0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1ff0, 0x0000, 

0x0000, 0x0080, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0200, // {
0x0200, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0080, 0x0000, 
0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, // |
0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 
0x0000, 0x0200, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0080, // }
0x0080, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0200, 0x0000, 
0x0000, 0x0220, 0x0540, 0x0880, 0x0000, 0x0000, 0x0000, 0x0000, // ~
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
0x0000, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, //■
0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc 






};


```