Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 16.01.2020, 09:28  
SlovachevskyDV
Временная регистрация
 
Аватар для SlovachevskyDV
 
Регистрация: 10.10.2011
Адрес: Донецк
Сообщений: 94
Сказал спасибо: 65
Сказали Спасибо 48 раз(а) в 13 сообщении(ях)
SlovachevskyDV на пути к лучшему
По умолчанию ST7789 240x240 SPI

на этом форуме нашел пример кода, слегка его подправил под себя на STM32F051
Код:
#include "config.h"
/*  Interface Define   */     

//                          GND VDD RES CD CS CSL CDA

PIN     SCL =       {GPIOB,3};           //3
PIN     SDA =       {GPIOA,7};           //4
PIN     RES =       {GPIOB,12};          //5
PIN     DC =        {GPIOB,13};          //6
PIN     LED =       {GPIOA,15};          //7
PIN     KEY_PRESS = {GPIOA,0};
PIN     LED_1 =     {GPIOC,8};
PIN     LED_2 =     {GPIOC,9};

uint8_t DigChars[16];                   //Массив символов цифр
uint8_t x0;                             //Координаты текста
uint8_t xe;                             //Координаты текста
uint8_t y0;                             
uint16_t CC;                            //Цвет текста
uint16_t BC;                            //Цвет фона
uint8_t Font;                           //Шрифт


const uint8_t Font11[11][78] = {
{0x28,0x80,0x00,0x00,0x48,0x00,0x00,0x80,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0xC0,0x07,0x00,0x04,0x02,0x02,0x83,0x80  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00  ,0x0A,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00  ,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00},
{0x2C,0x8A,0x18,0x61,0xA8,0x00,0x00,0x80,0x4E,0x9C  ,0x43,0x9F,0x7D,0xE7,0x00,0x00,0x80,0x63,0x1E,0xFF  ,0xFC,0xCF,0x87,0x18,0xFF,0x38,0x1E,0xE7,0xF1,0x61  ,0xC4,0x18,0x7F,0x06,0x01,0x08,0x02,0x82,0x80,0xD0  ,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x50,0x00  ,0x40,0xFD,0x8F,0x9B,0x7C,0x21,0xF4,0x3F,0x14,0x22  ,0x42,0x44,0x07,0x1F,0x1E,0x47,0x00,0x00,0x00,0x0A  ,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00},
{0x2C,0xCA,0x27,0x91,0xA8,0x08,0x02,0x80,0x71,0x62  ,0x64,0x41,0xC0,0x18,0x01,0x02,0x02,0x64,0xA2,0x10  ,0x85,0x20,0x84,0x14,0xD4,0x38,0xA2,0x28,0x0A,0x61  ,0xC4,0x18,0x61,0x86,0x02,0x00,0x02,0x82,0x80,0x80  ,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x50,0x00  ,0x1F,0x84,0x80,0x92,0x84,0x31,0x16,0x21,0x14,0xFA  ,0x42,0x44,0x04,0x21,0x91,0x28,0x00,0x00,0x00,0x04  ,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00},
{0x84,0xBF,0xA4,0x90,0x10,0x2B,0x02,0x40,0x51,0x20  ,0x54,0x21,0xA0,0x18,0x8B,0x01,0x0C,0x94,0x62,0x10  ,0x86,0x10,0x84,0x12,0x54,0x55,0x62,0x30,0x0A,0x61  ,0x44,0xA5,0x50,0x4A,0x04,0xE0,0xDE,0xBB,0xFB,0xF7  ,0x74,0x7B,0xEF,0xEB,0x8F,0x31,0x19,0xE3,0x53,0x00  ,0xC1,0x85,0x40,0xA2,0x82,0x29,0x15,0x21,0x24,0x25  ,0x43,0x44,0x04,0x41,0x51,0xF0,0x3D,0x2E,0x19,0x91  ,0x3D,0xE2,0xEF,0x8B,0xA4,0xE1,0x79,0x1C},
{0x04,0xA5,0x98,0x60,0x12,0x1D,0x02,0x40,0x51,0x10  ,0x4B,0xEF,0x21,0x17,0x6B,0xFC,0x31,0x92,0x5E,0x10  ,0xBE,0x1F,0xFC,0x11,0x54,0x55,0x62,0x30,0x72,0xA1  ,0x2A,0xA2,0x48,0x2A,0x08,0x00,0x23,0xC6,0xC4,0xD8  ,0x92,0x8C,0x11,0x17,0x89,0x31,0xA9,0x22,0x52,0x8C  ,0x21,0xBE,0x40,0xA2,0x72,0x29,0x15,0x21,0x24,0x25  ,0x43,0x44,0x3C,0x7D,0x71,0x30,0x46,0x4A,0x95,0x59  ,0x64,0x23,0x92,0x8C,0x24,0x21,0x46,0x22},
{0x04,0xC5,0x41,0x96,0x12,0xEB,0x9F,0x4F,0x51,0x08  ,0xFC,0x30,0x92,0xE8,0x11,0x00,0x40,0x91,0x62,0x10  ,0x86,0x90,0x87,0x11,0x54,0x92,0x5E,0xF0,0x81,0xA1  ,0x2A,0x42,0x48,0x0A,0x00,0xE0,0x23,0xFE,0xC4,0xD8  ,0x91,0x8C,0x11,0x33,0x89,0xAA,0x4A,0x14,0x8D,0x93  ,0xEF,0xC7,0x40,0xC2,0x81,0xA5,0x14,0x21,0xC4,0x24  ,0x7D,0x44,0x44,0x41,0x5E,0x30,0x3E,0x4A,0x55,0x35  ,0xA4,0x3E,0x92,0x8C,0x24,0xA7,0xC7,0x23},
{0xC4,0x8F,0x42,0x19,0x11,0x09,0x02,0x40,0x51,0x04  ,0x44,0x30,0x92,0x08,0x61,0xFC,0x31,0xF9,0x63,0x10  ,0x86,0x10,0x86,0x12,0x54,0x92,0x42,0x30,0x81,0xA1  ,0x2A,0x45,0x44,0x0A,0x00,0x10,0x23,0x86,0xC4,0xD8  ,0x92,0x8C,0x11,0xC3,0x89,0xAA,0x4A,0x94,0x50,0x62  ,0x21,0xC4,0x20,0xA2,0x82,0xA5,0x14,0x21,0xC4,0x24  ,0x41,0x44,0x44,0x41,0x52,0x30,0x46,0x89,0x33,0x53  ,0xA4,0x22,0x92,0xF4,0x24,0x29,0x7A,0x22},
{0x80,0x82,0x22,0x19,0x13,0x01,0x42,0x50,0x51,0x42  ,0x44,0x31,0x8A,0x88,0x8A,0x01,0x0C,0x08,0xA3,0x10  ,0x85,0x20,0x86,0x14,0x54,0x10,0x83,0x28,0x82,0x21  ,0x91,0x48,0x42,0x0A,0x00,0x10,0x23,0xC6,0xC4,0xD8  ,0x94,0x8C,0x11,0x83,0x89,0x44,0xA4,0x48,0x50,0x00  ,0x21,0xC6,0x20,0x92,0x84,0x63,0x14,0x21,0x44,0xF8  ,0x40,0x44,0x44,0x21,0x91,0x28,0x46,0x49,0x15,0x91  ,0x24,0x22,0x92,0x84,0x24,0x29,0x4A,0x22},
{0x84,0xE2,0x21,0xE6,0xA4,0x00,0x42,0x30,0xEE,0xBE  ,0x43,0xCE,0x09,0x67,0x0A,0x02,0x02,0x09,0x1F,0xFF  ,0xFC,0xC0,0x87,0xF8,0x7B,0x10,0x03,0x27,0x7C,0x1E  ,0x91,0x48,0x7E,0x12,0x00,0xE0,0xDF,0xBB,0xF8,0xD8  ,0x98,0x8C,0xEF,0x73,0xF6,0x44,0x14,0xC9,0x53,0x00  ,0xDF,0xBD,0xF0,0x8F,0x78,0x21,0x0C,0xE1,0x3F,0x20  ,0xC0,0xFF,0x3C,0x9F,0x10,0xC7,0xBD,0x3F,0x19,0x11  ,0x23,0x22,0xE2,0x83,0x7F,0xE7,0x45,0x1C},
{0x00,0x80,0x00,0x00,0xA0,0x00,0x40,0x20,0x00,0x00  ,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00  ,0x00,0x00,0x40,0x12,0x00,0x00,0x00,0x00,0x40,0x40  ,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x04,0x50,0x00  ,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x08,0x00  ,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00  ,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00},
{0x00,0x80,0x00,0x00,0x40,0x00,0x20,0x20,0x00,0x00  ,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00  ,0x00,0x00,0xC0,0x13,0xF0,0x03,0x00,0x00,0x38,0x20  ,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x04,0x20,0x00  ,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x08,0x00  ,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00}
};

const uint16_t Font11C[256] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0002,0x0041,0x0063,0x00C7,0x01A5,0x024A,0x0387,0  x0461,0x0483,0x04C3,0x0525,0x05C7,0x06A2,0x06E5,0x  0781,0x07A3,
0x0805,0x08A4,0x0925,0x09C5,0x0A65,0x0B05,0x0BA5,0  x0C45,0x0CE5,0x0D85,0x0E21,0x0E42,0x0E86,0x0F47,0x  1026,0x10E4,
0x0000,0x1166,0x1225,0x12C6,0x1386,0x1445,0x14E5,0  x1586,0x1646,0x1863,0x17E4,0x16E5,0x1784,0x18C7,0x  1986,0x40C7,
0x1A25,0x1AC7,0x1BA6,0x1C65,0x38A7,0x1D06,0x1DC5,0  x1DC9,0x1EE5,0x1F85,0x2025,0x20C3,0x2143,0x20E3,0x  21A7,0x2286,
0x2342,0x2385,0x2425,0x24A4,0x24A5,0x2545,0x25E3,0  x2645,0x26E5,0x2781,0x27A2,0x27E5,0x27E1,0x2887,0x  2965,0x4D25,
0x2A05,0x2A85,0x2B23,0x2B84,0x2C03,0x2C65,0x2D05,0  x2DA7,0x2E85,0x2F25,0x2FC4,0x3044,0x2121,0x30A4,0x  3127,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x3205,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x32A5,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x1166,0x3345,0x1225,0x33E5,0x3487,0x1445,0x3569,0  x3665,0x3706,0x37A6,0x16E5,0x3866,0x18C7,0x1646,0x  40C7,0x3906,
0x1A25,0x12C6,0x38A7,0x3A86,0x3B47,0x1EE5,0x39A7,0  x3C26,0x3CC9,0x3CCA,0x3E07,0x3E47,0x3E45,0x3F26,0x  4089,0x3FE6,
0x2385,0x41A5,0x4245,0x47A4,0x42E6,0x2545,0x43A7,0  x4264,0x4485,0x4505,0x4585,0x4625,0x46A5,0x4725,0x  4D25,0x47A5,
0x2A05,0x24A4,0x47E5,0x2F25,0x4887,0x2E85,0x4A45,0  x4965,0x49E7,0x49E8,0x4AE5,0x4B06,0x4B04,0x4BC4,0x  4CC8,0x4C45
};

const uint8_t Font16[16][120] = {
{0x80,0x04,0x00,0x00,0x00,0x00,0x40,0x08,0x04,0x00  ,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0  ,0x0F,0x00,0x00,0x10,0x00,0x20,0x00,0xE0,0x00,0x01  ,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x70,0x00,0xC0,0x0C,0x00,0x00,0x00  ,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F  ,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  },
{0xA0,0x84,0x10,0xC2,0x83,0xE0,0x41,0x94,0x24,0x00  ,0x00,0x80,0x3C,0xC4,0xE3,0xF1,0x00,0xFD,0xF1,0xFE  ,0x3C,0x00,0x00,0x00,0xC0,0x81,0xE1,0xE7,0x87,0xFF  ,0x3F,0x7E,0x01,0x02,0x03,0xFF,0x01,0x03,0xFC,0xE0  ,0xE3,0x07,0x5F,0x80,0x01,0x41,0x30,0x30,0xE0,0x7F  ,0x0C,0x60,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x01  ,0xA2,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00  ,0x00,0x00,0x00,0x88,0x00,0x00,0x40,0xF4,0xC7,0xDF  ,0x10,0xF6,0x09,0x10,0x20,0xFE,0xFF,0x40,0x10,0x04  ,0x14,0x10,0x04,0x3D,0xA0,0x0F,0xFC,0xE0,0xC3,0x00  ,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07  },
{0xA0,0x84,0x10,0x22,0x44,0x10,0x42,0x22,0x15,0x00  ,0x00,0x40,0x42,0x24,0x14,0x0A,0x81,0x05,0x08,0x80  ,0x42,0x00,0x00,0x00,0x20,0x42,0x22,0x28,0x98,0x80  ,0x80,0x81,0x01,0x82,0x02,0xA8,0x01,0x07,0x04,0x19  ,0x2C,0x88,0x60,0x80,0x01,0xA1,0x50,0x48,0x10,0x60  ,0x14,0x90,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x01  ,0xA2,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00  ,0x00,0x00,0x00,0x88,0x00,0xE0,0x5F,0x14,0x40,0x10  ,0x11,0x09,0x0A,0x18,0x30,0x82,0xC0,0x40,0x7C,0x04  ,0x14,0x10,0x04,0x21,0x60,0x30,0x82,0x18,0x4C,0x00  ,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18  },
{0xA0,0x44,0x88,0x2F,0x44,0x10,0x42,0x22,0x0E,0x04  ,0x00,0x40,0x81,0x07,0x08,0x04,0x42,0x05,0x04,0x40  ,0x81,0x00,0x08,0x20,0x00,0x44,0x22,0x28,0xA0,0x80  ,0x80,0x00,0x01,0x42,0x02,0xA8,0x82,0x0A,0x04,0x0A  ,0x28,0x48,0x40,0x80,0x82,0xA2,0x48,0x48,0x10,0x50  ,0x14,0x90,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x01  ,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00  ,0x00,0x00,0x00,0x88,0x00,0x20,0x00,0x10,0x40,0x10  ,0x11,0x01,0x0C,0x14,0x28,0x82,0x40,0x21,0x93,0x05  ,0x14,0x10,0x04,0x21,0x20,0x20,0x81,0x08,0x28,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20  },
{0xA0,0xF4,0x7F,0x32,0x24,0x10,0x42,0x41,0x15,0x04  ,0x00,0x40,0x81,0x04,0x08,0x04,0x22,0x05,0x02,0x40  ,0x81,0x0F,0x06,0xC0,0x00,0x44,0x22,0x28,0xA0,0x80  ,0x40,0x00,0x01,0x22,0x02,0xA8,0x82,0x12,0x04,0x06  ,0x30,0x48,0x40,0x80,0x82,0xA2,0x88,0x84,0x08,0x48  ,0x14,0x08,0x01,0x00,0x1E,0xBF,0xC7,0x79,0xFC,0x3D  ,0xBA,0x50,0xE7,0x7A,0x7A,0xFC,0xDE,0x0F,0x0C,0x42  ,0x18,0x0C,0xFE,0x88,0x00,0x20,0x80,0x13,0x40,0x10  ,0x92,0x00,0x0C,0x12,0x24,0x82,0x40,0x21,0x11,0x05  ,0x14,0x10,0x04,0x21,0x20,0x40,0x81,0x04,0xB0,0xE7  ,0xC7,0x37,0x62,0x2F,0x10,0x08,0xF3,0x07,0x03,0xFF  ,0xE7,0x4F,0x10,0x42,0x07,0x7A,0xF8,0xF0,0x88,0x2F  },
{0x20,0x40,0x48,0x22,0x14,0x20,0x01,0xC1,0x24,0x04  ,0x00,0x20,0x81,0x04,0x08,0x0A,0x11,0x7D,0x7A,0x20  ,0x81,0x8F,0x01,0x00,0x03,0x24,0x24,0x24,0xC0,0x80  ,0x40,0x00,0x01,0x12,0x02,0xA8,0x44,0x12,0x04,0x06  ,0x30,0x48,0x40,0x80,0x82,0xA2,0x08,0x03,0x05,0x48  ,0x24,0x04,0x02,0x00,0xA1,0x60,0x28,0x12,0x82,0x43  ,0xA2,0xC8,0x18,0x87,0x86,0x82,0xA1,0x08,0x0C,0x42  ,0x28,0x0A,0x82,0x88,0x00,0x20,0x40,0x14,0x40,0x10  ,0x54,0x00,0x0A,0x12,0x24,0x82,0x40,0xA1,0x10,0x06  ,0x14,0x10,0x04,0x21,0x20,0x40,0x81,0x04,0x70,0x28  ,0x48,0x44,0x92,0x30,0x18,0x8C,0x10,0x06,0x03,0x81  ,0x10,0x51,0x10,0x42,0x04,0x86,0x84,0x08,0x45,0x48  },
{0x20,0x40,0x48,0x22,0xD4,0xE3,0x08,0x41,0x04,0x04  ,0x00,0x20,0x81,0x04,0xC4,0xF1,0x08,0x81,0x86,0x20  ,0x81,0x60,0xF0,0x1F,0x0C,0x22,0xE4,0x27,0xC0,0xFF  ,0x7F,0x00,0xFF,0x0B,0x02,0xA8,0x44,0x22,0x04,0x06  ,0x30,0x84,0x43,0x80,0x44,0xA2,0x08,0x03,0x05,0x44  ,0x24,0x02,0x04,0x00,0x60,0x20,0x10,0x14,0x81,0x81  ,0xA2,0x44,0x08,0x03,0x03,0x81,0x81,0x08,0x14,0xA5  ,0x44,0x11,0x41,0x04,0x61,0xF0,0x3F,0xF8,0x43,0x10  ,0x7C,0xE0,0x09,0x11,0x22,0x82,0x40,0x92,0x10,0x06  ,0x14,0x10,0x04,0xE1,0x23,0x7F,0x82,0x07,0x30,0x30  ,0x48,0x44,0x12,0x30,0x14,0x4A,0x10,0x8A,0x02,0x81  ,0x08,0x61,0x10,0x42,0x04,0x02,0x85,0x04,0x26,0x48  },
{0x20,0x20,0x84,0xC3,0x2B,0x94,0x08,0x41,0xC0,0x7F  ,0xFE,0x20,0x81,0x04,0x02,0x0A,0x05,0x01,0x03,0x11  ,0xC2,0x10,0x00,0x00,0x10,0x21,0x24,0x28,0xC0,0x80  ,0x40,0xF8,0x01,0x0E,0x02,0xA8,0x28,0x42,0x04,0x05  ,0xF0,0x03,0x5C,0x80,0x44,0x12,0x09,0x03,0x02,0x42  ,0x24,0x00,0x00,0x00,0x7E,0x20,0x10,0x14,0x81,0x81  ,0xA2,0x42,0x08,0x03,0x03,0x81,0x81,0x08,0x14,0xA5  ,0x44,0x11,0x21,0x03,0x96,0x30,0x20,0x18,0x24,0x10  ,0x92,0x00,0x8A,0x10,0x21,0x82,0x40,0x92,0x10,0x06  ,0x24,0x18,0x04,0x21,0x24,0x40,0xFC,0x04,0x30,0x30  ,0x48,0x84,0x0A,0x30,0x12,0x49,0x10,0x8A,0x02,0x81  ,0x08,0x61,0x10,0x42,0x7C,0x02,0x85,0x04,0x26,0x48  },
{0x20,0x20,0x04,0x0E,0x28,0x0C,0x09,0x41,0x00,0x04  ,0x00,0x10,0x81,0x04,0x01,0x04,0xFE,0x03,0x03,0x11  ,0xBC,0x60,0x00,0x00,0x8C,0xF0,0x2F,0x30,0xC0,0x80  ,0x40,0x80,0x01,0x12,0x02,0xA8,0x28,0x82,0xFC,0x04  ,0x30,0x02,0x60,0x80,0x44,0x14,0x05,0x03,0x02,0x41  ,0x44,0x00,0x00,0x00,0x61,0x20,0xF0,0x17,0x81,0x81  ,0xA2,0x43,0x08,0x03,0x03,0x81,0x9E,0x08,0x14,0xA5  ,0x84,0x10,0x11,0x04,0x09,0x29,0xE0,0x1F,0x28,0x10  ,0x92,0x00,0x4C,0x90,0x20,0x82,0x40,0x8C,0x10,0x06  ,0xC4,0x17,0x04,0x21,0x28,0x40,0x88,0x04,0x30,0xF0  ,0x27,0x84,0x0F,0x2E,0x91,0x78,0x10,0x52,0xFE,0x81  ,0x08,0x61,0x10,0x42,0x84,0xFA,0xF9,0x07,0x26,0x48  },
{0x20,0xF8,0x1F,0x12,0x24,0x0C,0x06,0x41,0x00,0x04  ,0x00,0x10,0x81,0x84,0x00,0x04,0x02,0x01,0x03,0x09  ,0x80,0x80,0xF1,0x1F,0x83,0x10,0x28,0x30,0xA0,0x80  ,0x40,0x80,0x01,0x22,0x02,0xA8,0x10,0x82,0x04,0x04  ,0x30,0x04,0x60,0x80,0x28,0x14,0x85,0x04,0x02,0x41  ,0x44,0x00,0x00,0x80,0x60,0x20,0x10,0x10,0x81,0x81  ,0xA2,0x44,0x08,0x03,0x03,0x81,0xA0,0x08,0xA4,0x14  ,0x45,0xA1,0x10,0x88,0x08,0x26,0x20,0x10,0x28,0x10  ,0x11,0x01,0x4C,0x90,0x20,0x82,0x40,0x0C,0x11,0x05  ,0x04,0x10,0x04,0x21,0x28,0x40,0x84,0x04,0x30,0x30  ,0x28,0x44,0x12,0x30,0x91,0x88,0x10,0x52,0x02,0x81  ,0x08,0xA1,0x1F,0x42,0x84,0x02,0x91,0x04,0x26,0x48  },
{0x00,0x20,0x04,0x12,0x22,0x0C,0x04,0x41,0x00,0x04  ,0x00,0x10,0x81,0x44,0x00,0x04,0x02,0x01,0x03,0x09  ,0x40,0x00,0x06,0xC0,0x00,0x10,0x28,0x30,0xA0,0x80  ,0x80,0x80,0x01,0x42,0x02,0xA8,0x00,0x02,0x05,0x08  ,0x28,0x08,0x60,0x80,0x28,0x14,0x45,0x08,0x82,0x40  ,0x44,0x00,0x00,0x80,0x60,0x20,0x10,0x10,0x81,0x81  ,0xA2,0x48,0x08,0x03,0x03,0x81,0xA0,0x08,0xA4,0x18  ,0x43,0xA1,0x08,0x88,0x00,0x20,0x20,0x10,0x28,0x10  ,0x11,0x01,0x2C,0x50,0x20,0x81,0x40,0x08,0x93,0x05  ,0x04,0x10,0x04,0x21,0x28,0x20,0x82,0x08,0x28,0x30  ,0x28,0x44,0x12,0xB0,0x50,0x08,0x11,0x22,0x02,0x81  ,0x08,0x21,0x10,0x42,0x84,0x02,0x89,0x04,0x46,0x4C  },
{0x20,0x10,0x42,0x12,0x22,0x14,0x0A,0x41,0x00,0x84  ,0x01,0x0B,0x42,0x24,0x10,0x0A,0x01,0x85,0x84,0x04  ,0x20,0x0F,0x08,0x20,0x80,0x08,0x30,0x28,0x98,0x80  ,0x80,0x81,0x01,0x82,0x02,0xA8,0x00,0x02,0x06,0x18  ,0x2C,0x50,0x90,0x40,0x28,0x0C,0x46,0x08,0x42,0x40  ,0x84,0x00,0x00,0x80,0xB0,0x30,0x28,0x14,0xC2,0x81  ,0xA2,0x50,0x08,0x03,0x83,0xC2,0xA1,0x10,0x46,0x08  ,0x22,0x42,0x04,0x88,0x00,0x20,0x40,0x18,0x14,0x90  ,0x10,0x0A,0x1A,0x30,0x20,0x81,0x40,0x04,0x7C,0x04  ,0x04,0x10,0x04,0x21,0x64,0x30,0x81,0x18,0x4C,0x28  ,0x18,0x24,0xA2,0x70,0x30,0x08,0x0A,0x02,0x02,0x81  ,0x10,0x11,0x10,0x42,0x84,0x86,0x84,0x08,0x89,0x3B  },
{0x20,0x10,0x82,0x0F,0xC1,0xE3,0x11,0x22,0x00,0x80  ,0x01,0x0B,0x3C,0xFF,0xEF,0xF1,0x00,0x79,0x78,0x04  ,0x1E,0x0F,0x00,0x00,0x80,0x08,0xF0,0xE7,0x87,0xFF  ,0x00,0x7E,0x01,0x02,0xFF,0xF7,0x00,0x02,0x04,0xE0  ,0x23,0xA0,0x0F,0x3F,0x10,0x08,0x22,0x10,0xC2,0x7F  ,0x84,0x00,0x00,0x00,0x2F,0xEF,0xC7,0x13,0xBC,0x81  ,0xA2,0x60,0x08,0x03,0x7F,0xBC,0x1E,0xE7,0x45,0x08  ,0x12,0x44,0xFC,0x88,0x00,0xE0,0x9F,0xF7,0xF3,0x7F  ,0x10,0xF4,0x09,0x10,0xE0,0x80,0x40,0x03,0x10,0xFC  ,0x0F,0xF0,0xFF,0xE3,0xA3,0x8F,0x80,0xE0,0x83,0xE7  ,0xF7,0x1F,0x42,0x2F,0x10,0x08,0x04,0x02,0x02,0x81  ,0xE0,0x0F,0xF0,0xFF,0x7C,0x7A,0x82,0xF0,0x08,0x00  },
{0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x22,0x00,0x00  ,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40  ,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00  ,0x20,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00  ,0x00,0x20,0x00,0x88,0x00,0x00,0x00,0x00,0x10,0x20  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00  ,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x80,0x00,0x00,0x00,0x00,0x30,0x00  },
{0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x14,0x00,0x80  ,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40  ,0x04,0x01,0xF8,0x0F,0x00,0x00,0x00,0x00,0x42,0x00  ,0x20,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00  ,0x00,0x20,0x00,0x88,0x00,0x00,0x00,0x00,0x10,0x20  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00  ,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x80,0x00,0x00,0x00,0x00,0xC0,0x07  },
{0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x80  ,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0  ,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00  ,0x1C,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00  ,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x10,0x20  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  }
};

const uint16_t Font16C[256] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0005,0x0082,0x00C5,0x016B,0x02C7,0x03AE,0x056A,0  x06A3,0x0704,0x0764,0x07E7,0x08C9,0x09E2,0x0A27,0x  0B02,0x0B46,
0x0C08,0x0D05,0x0DA7,0x0E87,0x1048,0x1147,0x1228,0  x1327,0x0F48,0x1408,0x1502,0x1542,0x1588,0x1689,0x  17A8,0x18A6,
0x764D,0x196A,0x1AA8,0x6149,0x1BAA,0x1CE8,0x1DE7,0  x1ECA,0x200A,0x2383,0x22C6,0x2128,0x2227,0x23EB,0x  252A,0x614B,
0x2648,0x274B,0x28A9,0x29C8,0x5569,0x2ACA,0x2C09,0  x2D0D,0x2EA8,0x2FA9,0x30A9,0x31C4,0x3266,0x31E4,0x  332A,0x3469,
0x3583,0x35E7,0x37A8,0x7547,0x36C8,0x3887,0x3965,0  x3A08,0x3B08,0x3C02,0x3C44,0x3CE7,0x3CC2,0x3DCB,0x  3F28,0x7548,
0x4028,0x4108,0x3F26,0x4206,0x42C5,0x4368,0x4467,0  x452B,0x4687,0x4767,0x4846,0x4907,0x3241,0x4987,0x  4A6A,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x4BA8,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x4CA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x196A,0x4D88,0x1AA8,0x55E6,0x4E8A,0x1CE8,0x4FCD,0  x5168,0x526A,0x538A,0x2128,0x54CA,0x23EB,0x200A,0x  614B,0x55E8,
0x2648,0x6149,0x5569,0x56E8,0x57EB,0x2EA8,0x594A,0  x5A89,0x5B8D,0x5B8E,0x5D4A,0x5DA9,0x5DA7,0x5EC9,0x  60EE,0x5FE9,
0x35E7,0x62A8,0x63A7,0x6D06,0x6488,0x3887,0x658B,0  x66E6,0x67A8,0x6888,0x6968,0x6A48,0x6B29,0x6C28,0x  7548,0x6D08,
0x4028,0x7547,0x6D87,0x4767,0x6E6B,0x4687,0x7127,0  x6FC7,0x708B,0x708C,0x7208,0x7248,0x7246,0x7347,0x  74EB,0x7427
};

const uint8_t Font20[20][144] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00},
{0x80,0x19,0x00,0x40,0x00,0x00,0x00,0x00,0x8C,0x0F  ,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0xF0,0x1F,0x00,0x00,0x00,0x0C,0xC0,0x00,0x30,0x00  ,0x78,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0  ,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00},
{0xE0,0x19,0x84,0x40,0xE0,0x80,0x01,0x0F,0x8C,0x8D  ,0x88,0x00,0x00,0x00,0xCC,0x07,0xC3,0x87,0x1F,0x60  ,0xFC,0xC3,0xFB,0xCF,0x87,0x07,0x00,0x00,0x00,0x00  ,0xF8,0x80,0xC1,0x1F,0x7F,0x80,0x9F,0xFF,0xFF,0x07  ,0x0C,0xF8,0xFF,0xC0,0x0F,0x3C,0xF8,0x03,0x1F,0xFE  ,0xC0,0xCF,0x80,0x07,0x1C,0x1C,0x3C,0xE0,0x03,0xFF  ,0x3F,0x1E,0x80,0x01,0x00,0x08,0xC0,0x00,0x30,0x00  ,0x7C,0x00,0x03,0xF3,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8C,0x01  ,0x00,0xFC,0x67,0x06,0xFE,0x39,0x0C,0xE7,0xCF,0xC0  ,0xC0,0xFF,0xF0,0xFF,0x3F,0x60,0x03,0x06,0x06,0x06  ,0x06,0x83,0xF9,0x01,0x0C,0x7C,0xF0,0x03,0xFE,0xFC  ,0x01,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0xFC,0x00},
{0xE0,0x19,0x84,0x40,0xB0,0xC1,0x80,0x1F,0xCC,0x98  ,0xEB,0x00,0x00,0x00,0xE6,0x0F,0xE3,0xCF,0x3F,0x70  ,0xFC,0xF3,0xFB,0xEF,0xCF,0x1F,0x00,0x00,0x00,0x00  ,0xFC,0xC1,0xC3,0x7F,0xFF,0xE1,0xFF,0xFF,0xFF,0x07  ,0x0C,0xF8,0xFF,0xE0,0x0E,0x3C,0xF8,0xC7,0x7F,0xFE  ,0xE1,0xDF,0x80,0x0F,0x1E,0x1C,0x6C,0x30,0x03,0xFB  ,0x3F,0x36,0xC0,0x03,0x00,0x18,0xC0,0x00,0x30,0x00  ,0x0E,0x00,0x03,0xF3,0x00,0x00,0x00,0x00,0x00,0xC0  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03  ,0x00,0xFC,0x67,0x06,0xFE,0x39,0x0C,0xF7,0xDF,0xE0  ,0xE0,0xFF,0xF0,0xFF,0x3F,0x60,0x06,0x03,0x06,0x06  ,0x06,0x83,0xF9,0x01,0x0C,0xFF,0xF9,0x0F,0xFF,0x1E  ,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x03,0x03},
{0xE0,0x19,0x42,0xF0,0x1B,0xC3,0xC0,0x18,0xEC,0x38  ,0x3E,0x00,0x00,0x00,0x66,0xEC,0x23,0x5C,0x70,0x78  ,0x0C,0x38,0x00,0x7C,0xDC,0x18,0x00,0x00,0x00,0x00  ,0x84,0xC3,0xC3,0x60,0x83,0xE3,0xF0,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x70,0x1E,0x7E,0x18,0xEE,0xE0,0x86  ,0x73,0xD0,0x80,0x0D,0x36,0x1C,0xE6,0x38,0x87,0x03  ,0x3C,0x36,0xC0,0x03,0x00,0x00,0xC0,0x00,0x30,0x00  ,0x06,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03  ,0x00,0x0C,0x00,0x00,0x86,0x61,0x8C,0x11,0xF8,0xE0  ,0xE0,0x00,0x30,0x18,0x30,0x60,0x06,0xC3,0x3F,0x06  ,0x06,0x83,0x81,0x01,0x8C,0x83,0x0B,0x9C,0xC3,0x06  ,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x80,0x01,0x04},
{0xE0,0x19,0x42,0xF8,0x1F,0x63,0xC0,0x18,0x6C,0x30  ,0x08,0x60,0x00,0x00,0x36,0xF8,0x03,0x18,0x60,0x6C  ,0x0C,0x18,0x00,0x3C,0x78,0x30,0x10,0x00,0x40,0x00  ,0x00,0xC3,0xC3,0x60,0x03,0x36,0xC0,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x38,0x16,0x5A,0x18,0x6C,0xC0,0x06  ,0x33,0xC0,0x80,0x0D,0x36,0x14,0xC6,0x18,0x86,0x01  ,0x36,0x36,0x60,0x06,0x00,0x00,0xC0,0x00,0x30,0x00  ,0x06,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x03  ,0x00,0x0C,0x00,0x00,0x86,0x61,0x8C,0x01,0xF0,0xF0  ,0xF0,0x00,0x30,0x18,0x30,0x60,0x0C,0xE3,0x7F,0x06  ,0x06,0x83,0x81,0x01,0x8C,0x01,0x03,0x98,0xC1,0x03  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x80,0x00,0x08},
{0xE0,0xD9,0xFF,0x4F,0x1C,0x63,0xC0,0x18,0x6C,0x30  ,0x3E,0x60,0x00,0x00,0x36,0x18,0x03,0x18,0x60,0x66  ,0x0C,0x08,0x00,0x36,0x78,0xF0,0xF6,0x00,0x70,0x00  ,0x00,0x63,0xC6,0x60,0x03,0x3E,0x80,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x1C,0x36,0xDA,0x18,0x7C,0xC0,0x07  ,0x33,0xC0,0x80,0x0D,0x36,0x34,0x86,0x0D,0xCC,0x00  ,0x33,0x36,0x30,0x0C,0x00,0xC0,0xCF,0x1E,0x3F,0x3E  ,0x3F,0xFC,0x7B,0xFF,0xF0,0x9E,0xB7,0xC7,0x9F,0xEF  ,0x3F,0x3C,0x78,0x18,0x1E,0x3C,0xF8,0x1F,0x06,0x03  ,0x00,0x0C,0xC0,0x07,0x86,0xC1,0x8C,0x01,0xF0,0xD0  ,0xD0,0x00,0x30,0x18,0x30,0x60,0x8C,0x71,0xE6,0x06  ,0x06,0x83,0x81,0x01,0xCC,0x01,0x07,0xB0,0xC1,0xFB  ,0xFC,0xE0,0x77,0x8C,0xF3,0x0D,0xC3,0x38,0xFE,0xE1  ,0xF0,0xFF,0xF9,0x9F,0x61,0x18,0xE6,0x81,0xE1,0xE3  ,0x83,0x5F,0xF8,0x09},
{0x60,0x00,0x42,0x4C,0x18,0x33,0x80,0x0D,0x30,0xE0  ,0xEB,0x60,0x00,0x00,0x33,0x18,0x03,0x18,0x30,0x66  ,0x0C,0xEC,0x01,0x76,0x7C,0xF0,0xE6,0x03,0x3E,0x00  ,0x00,0x63,0xC6,0x30,0x03,0x1C,0x80,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x0E,0x36,0x9B,0x18,0x3C,0x80,0x07  ,0x73,0xC0,0x80,0x19,0x33,0x36,0x86,0x0D,0xCC,0x00  ,0x33,0x66,0x30,0x0C,0x00,0xC0,0xDF,0xBF,0xBF,0x7F  ,0x3F,0xFF,0x7F,0xFF,0xD8,0xDF,0xFF,0xEF,0xDF,0xFF  ,0x3F,0x6C,0x6C,0x18,0x36,0x66,0xEC,0x1F,0x06,0x03  ,0x00,0x0C,0xF0,0x0F,0x86,0xC1,0xCC,0x00,0xD8,0xD8  ,0xD8,0x00,0x30,0x18,0x30,0x60,0x9C,0x39,0xC6,0x07  ,0x06,0x83,0x81,0x01,0xCC,0x00,0x06,0xB0,0xC1,0xFF  ,0xFD,0xE1,0xF7,0xCC,0xFB,0x8F,0xE3,0x3C,0xFE,0xE1  ,0xF0,0xFF,0xFD,0xBF,0x61,0x18,0xE6,0x81,0xF1,0xF7  ,0xC7,0x7F,0x8C,0x11},
{0x60,0x00,0x21,0x4C,0x18,0x33,0x07,0xC7,0x30,0xE0  ,0x88,0x60,0x00,0x00,0x33,0x18,0x03,0x0C,0x1E,0x63  ,0xFC,0xFC,0x03,0xE3,0x6F,0xF0,0x06,0x9F,0x8F,0xFF  ,0x83,0x61,0xC6,0x1F,0x03,0x1C,0x80,0xFF,0xFF,0xFF  ,0x0F,0xC0,0xCC,0x07,0x26,0x99,0x19,0x36,0x80,0x87  ,0xE1,0xC1,0x80,0x19,0x63,0x36,0x02,0x07,0x78,0x80  ,0x31,0x66,0x18,0x18,0x00,0x00,0xF0,0xB1,0xB1,0xE1  ,0x06,0xC3,0xC7,0xF3,0xCC,0x71,0x7C,0x6C,0x78,0xD0  ,0x30,0x6C,0xCC,0x3C,0x63,0x63,0x0C,0x0C,0x06,0x83  ,0x07,0xFF,0x37,0x1C,0x83,0xC1,0xED,0x80,0xCF,0xC8  ,0xC8,0x3F,0x30,0x18,0x30,0x60,0xD8,0x18,0x86,0x0F  ,0x06,0x83,0x81,0x7F,0xFC,0x00,0xE6,0xBF,0xC3,0x83  ,0x8D,0x61,0xC6,0xCC,0x08,0x8F,0xE3,0x0C,0xC6,0xE3  ,0x30,0x18,0x8C,0xF1,0x61,0x18,0x86,0x81,0x39,0x16  ,0x66,0x38,0x86,0x11},
{0x60,0x00,0x21,0xF8,0xB0,0x99,0x8D,0xC7,0x30,0x60  ,0x08,0x60,0x00,0x00,0x33,0x18,0x03,0x0C,0xBE,0x61  ,0xFC,0x0D,0x07,0xE3,0xEF,0x30,0x00,0xFC,0x81,0xFF  ,0xE3,0x30,0xCC,0x7F,0x03,0x1C,0xFC,0xFF,0xFF,0xFF  ,0x0F,0xC0,0xCC,0x07,0xE6,0x99,0xF9,0x37,0x80,0xFF  ,0xC1,0xCF,0x80,0x19,0x63,0x22,0x03,0x07,0x78,0xC0  ,0x30,0x66,0x0C,0x30,0x00,0x00,0xF0,0xE0,0xF0,0xC0  ,0x86,0xC1,0xC3,0xF3,0xC6,0x30,0x3C,0x38,0x78,0xC0  ,0x30,0x6C,0xCC,0x3C,0x63,0x63,0x0C,0x0C,0x03,0xC6  ,0x0F,0xFF,0x1F,0x18,0x83,0x81,0x7F,0x80,0xCF,0xCC  ,0xCC,0xFF,0x30,0x18,0x30,0x60,0xD8,0x18,0x86,0xFD  ,0x07,0x83,0x81,0xFF,0xFC,0x00,0xE6,0x3F,0xFF,0x03  ,0x8F,0x61,0x86,0xCC,0x00,0xCF,0xF3,0x0C,0xC6,0xF3  ,0x30,0x18,0x86,0xE1,0x61,0x18,0x86,0x81,0x19,0x0C  ,0x6C,0x38,0x86,0x11},
{0x60,0x00,0x21,0xF0,0xE3,0xCC,0xD8,0xCC,0x30,0x60  ,0x00,0xFF,0x7F,0x80,0x33,0x18,0x03,0x06,0xF0,0xFF  ,0x81,0x0F,0x86,0x61,0xCC,0x3F,0x00,0x60,0x00,0x00  ,0x30,0x30,0xCC,0xE0,0x03,0x1C,0xFC,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x0E,0xE6,0x19,0xFB,0x31,0x80,0x7F  ,0x00,0xDE,0x80,0xB1,0x61,0x22,0x03,0x07,0x30,0xC0  ,0x30,0xE6,0x00,0x00,0x00,0x00,0xFF,0xE0,0xF0,0xFF  ,0x86,0xC1,0xC3,0xF3,0xC3,0x30,0x3C,0x38,0xF8,0xC1  ,0x30,0xCC,0xC6,0x24,0xC3,0xC1,0x06,0xC6,0x00,0xF8  ,0x9C,0x0F,0xF8,0x1F,0x83,0x81,0x7F,0x00,0xD8,0xC4  ,0xC4,0xC0,0x31,0x18,0x30,0x60,0xF0,0x18,0x86,0xF9  ,0x06,0x83,0x81,0xC1,0xCD,0x00,0x06,0x30,0xFC,0x03  ,0xFF,0x60,0x86,0x6D,0xF0,0x4D,0xD3,0x06,0xC6,0xD2  ,0x3F,0x18,0x86,0xE1,0x61,0x18,0x86,0x9F,0x1F,0xEC  ,0x6F,0x38,0x86,0x11},
{0x60,0xE0,0xFF,0x40,0x07,0xCC,0x78,0xD8,0x30,0x60  ,0x00,0xFF,0x7F,0x80,0x31,0x18,0x03,0x03,0xE0,0xFF  ,0x01,0x0F,0x86,0x31,0x98,0x37,0x00,0xFC,0x01,0x00  ,0x30,0xF0,0xCF,0xC0,0x03,0x1C,0xE0,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x1C,0xC6,0x18,0x1B,0x30,0x80,0xE7  ,0x00,0xF0,0x80,0xB1,0x61,0x63,0x83,0x0D,0x30,0x60  ,0x30,0xC6,0x00,0x00,0x00,0xC0,0xFF,0xE0,0xF0,0xFF  ,0x86,0xC1,0xC3,0xF3,0xC7,0x30,0x3C,0x38,0xD8,0xCF  ,0x30,0xCC,0xC6,0x24,0xC3,0xC1,0x06,0x03,0x03,0x66  ,0xF8,0x0D,0xF8,0x1F,0x83,0xC1,0xCC,0x00,0xF0,0xC6  ,0xC6,0x80,0x31,0x18,0x30,0x60,0x70,0x38,0xC6,0x01  ,0x06,0x83,0x81,0x81,0xCD,0x00,0x06,0x30,0xCC,0x03  ,0xFF,0x31,0x06,0x3F,0xF0,0x6D,0xDB,0x07,0xC6,0xDE  ,0x3F,0x18,0x86,0xE1,0x7F,0x18,0x86,0xBF,0x1F,0xEC  ,0xCF,0x3F,0x86,0x11},
{0x60,0x80,0x10,0x40,0x06,0xC6,0x78,0x70,0x30,0x60  ,0x00,0x60,0x00,0x80,0x31,0x18,0x83,0x01,0x60,0x60  ,0x00,0x0F,0xC6,0x30,0x18,0x10,0x00,0x9F,0x8F,0xFF  ,0x33,0xF8,0xDF,0xC0,0x03,0x3E,0xE0,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x18,0xC6,0x18,0x1A,0x70,0xC0,0xC7  ,0x01,0xF0,0x80,0xB1,0x41,0x63,0x83,0x0D,0x30,0x60  ,0x30,0xC6,0x00,0x00,0x00,0xE0,0xF0,0xE0,0xF0,0x00  ,0x86,0xC1,0xC3,0xF3,0xC6,0x30,0x3C,0x38,0x18,0xDF  ,0x30,0xCC,0x86,0x66,0xC1,0xC1,0x86,0x01,0x02,0x62  ,0xF0,0x0C,0x18,0x80,0x81,0x61,0x8C,0x01,0xF0,0xC2  ,0xC2,0x80,0x19,0x18,0x30,0x60,0x60,0x70,0xE6,0x00  ,0x06,0x83,0x81,0x81,0xCD,0x01,0x07,0x38,0xC6,0x03  ,0x0F,0x33,0x86,0x7F,0x00,0x2F,0xCB,0x06,0xC6,0xCC  ,0x30,0x18,0x86,0x61,0x7F,0x18,0x86,0xB1,0x19,0x0C  ,0x8C,0x3F,0x86,0x11},
{0x00,0x80,0x10,0x40,0x06,0xC6,0x78,0x70,0x30,0x60  ,0x00,0x60,0x00,0x80,0x31,0x18,0xC3,0x00,0x60,0x60  ,0x00,0x1F,0xC6,0x30,0x18,0x18,0xE0,0x03,0xBE,0xFF  ,0x03,0x18,0xD8,0xC0,0x03,0x36,0xE0,0x01,0x03,0x06  ,0x0C,0xC0,0xCC,0x30,0x06,0x18,0x1E,0x60,0xC0,0x86  ,0x11,0xF0,0x80,0xB1,0xC1,0xE3,0xC1,0x18,0x30,0x30  ,0x30,0xC6,0x00,0x00,0x00,0x60,0xF0,0xE0,0xF0,0x00  ,0x86,0xC1,0xC3,0xF3,0xCC,0x30,0x3C,0x38,0x18,0xD8  ,0x30,0x8C,0x83,0x42,0x61,0x83,0xC3,0x00,0x06,0x03  ,0x00,0x0C,0x18,0x80,0x81,0x61,0x8C,0x01,0xF0,0xC3  ,0xC3,0x80,0x19,0x18,0x30,0x60,0x30,0xE0,0x7F,0x00  ,0x06,0x83,0x81,0x81,0x8D,0x01,0x03,0x18,0xC7,0x06  ,0x0F,0x33,0x86,0x6D,0x00,0x3F,0xCF,0x0C,0xC6,0xCC  ,0x30,0x18,0x86,0x61,0x60,0x18,0x86,0xB1,0x19,0x0C  ,0x8C,0x39,0xCC,0x09},
{0x00,0x80,0x10,0x44,0x07,0xC3,0xF8,0xF0,0x30,0x60  ,0x00,0x60,0x00,0xDE,0x60,0x0C,0x63,0x40,0x70,0x60  ,0x82,0x19,0x63,0x70,0x1C,0xDC,0xFC,0x00,0x70,0x00  ,0x00,0x18,0xD8,0xE0,0x83,0xF3,0xE0,0x01,0x03,0x06  ,0x0C,0xE0,0xCC,0x60,0x06,0x18,0x1C,0xE0,0xE0,0x06  ,0x33,0xB8,0xC1,0xE0,0xC0,0xC1,0xE1,0x38,0x30,0x18  ,0x30,0x86,0x01,0x00,0x00,0x60,0xF8,0xB0,0xB9,0x81  ,0x86,0xC3,0xC3,0xF3,0xD8,0x30,0x3C,0x7C,0x3C,0xD8  ,0x30,0x8E,0x83,0xC3,0x61,0x83,0xC3,0x00,0x06,0x03  ,0x00,0x0C,0x30,0xD0,0x80,0x31,0x0C,0x13,0xD8,0xC1  ,0xC1,0xC0,0x18,0x18,0x30,0x60,0x30,0xC0,0x3F,0x00  ,0x06,0x83,0x81,0xC1,0x8D,0x83,0x0B,0x1C,0xC3,0x86  ,0x0D,0x1B,0xC6,0xCC,0x04,0x1F,0xC7,0x18,0xC3,0xC0  ,0x30,0x18,0x8E,0x31,0x60,0x18,0x86,0xB1,0x31,0x16  ,0xC6,0x58,0xB8,0x0F},
{0x60,0x40,0x08,0xFC,0x03,0x83,0xCD,0xDF,0x61,0x30  ,0x00,0x60,0x00,0xDB,0xE0,0xEF,0xFF,0xFF,0x3F,0x60  ,0xFE,0xF9,0x63,0xE0,0xCF,0xCF,0x16,0x00,0x40,0x00  ,0x30,0x1C,0xF8,0x7F,0xFF,0xE1,0xFF,0xFF,0x03,0x06  ,0xFC,0x7F,0xFF,0xE0,0x06,0x18,0x1C,0xC0,0x7F,0x06  ,0xF7,0x9F,0xFF,0xE0,0xC0,0xC1,0x61,0x30,0x30,0xF8  ,0x3F,0x86,0x01,0x00,0x00,0xE0,0xFF,0xBF,0xBF,0xFF  ,0x06,0xFF,0xC3,0xF3,0xF8,0x30,0xFC,0xEF,0xFF,0xCF  ,0xEF,0x8F,0x83,0xC3,0x31,0x86,0xE3,0x1F,0x06,0x03  ,0x00,0xFC,0xF7,0xFF,0xFF,0x1B,0x0C,0xF6,0xDF,0xC1  ,0xC1,0xFF,0x0E,0x18,0xF0,0xFF,0x3E,0x00,0x06,0x00  ,0xFE,0xFF,0x87,0xFF,0x0C,0xFF,0xF9,0x8F,0xC1,0xFC  ,0xFC,0xFD,0x6F,0x8C,0xFD,0x1D,0xC7,0xB0,0xC3,0xC0  ,0x30,0x18,0xFC,0x3F,0xE0,0xFF,0x9F,0x9F,0xF1,0xF7  ,0x67,0xD8,0x00,0x00},
{0x60,0x40,0x08,0xF8,0x81,0x01,0x87,0x8F,0x63,0x30  ,0x00,0x60,0x00,0xDB,0xC0,0xE7,0xFF,0xBF,0x1F,0x60  ,0x7C,0xE0,0x31,0xC0,0xC7,0xC3,0x06,0x00,0x00,0x00  ,0x30,0x0C,0xF0,0x1F,0x7F,0x80,0x9F,0xFF,0x03,0x06  ,0xFC,0x3F,0xFF,0xC0,0x07,0x18,0x1C,0x00,0x1F,0x06  ,0xCE,0x07,0x3E,0xE0,0xC0,0xC1,0x31,0x60,0x30,0xF8  ,0x3F,0x86,0x01,0x00,0x00,0x80,0xF7,0x1E,0x37,0x7E  ,0x06,0xDE,0xC3,0xF3,0xF0,0x30,0xFC,0xC7,0xDB,0x87  ,0xCF,0x0D,0x01,0xC3,0x18,0x8C,0xE1,0x1F,0x06,0x03  ,0x00,0xFC,0xC7,0xEF,0xFF,0x0F,0x0C,0xEC,0xC7,0xC0  ,0xC0,0x3F,0x06,0x18,0xF0,0xFF,0x1E,0x00,0x06,0x00  ,0xFE,0xFF,0x87,0x3F,0x0C,0x7C,0xF0,0xC3,0xC1,0x78  ,0xFC,0xFC,0x3F,0x0C,0xFB,0x0C,0xC3,0xE0,0xC1,0xC0  ,0x30,0x18,0xF8,0x1F,0xE0,0xFF,0x9F,0x8F,0xE1,0xE3  ,0x31,0x98,0x01,0x00},
{0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xE0,0x38  ,0x00,0x00,0x00,0xC1,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x30,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0xC0,0x00,0x30,0x00,0x00,0x30,0x00,0x18,0x00  ,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x06,0x03  ,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00  ,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x18,0x00,0x00,0x00  ,0x00,0x00,0x03,0x00},
{0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xC0,0x1D  ,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x30,0x06,0x03,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00  ,0x00,0xE7,0x00,0x30,0x00,0x00,0x30,0x00,0x18,0x00  ,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x8C,0x01  ,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00  ,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x18,0x00,0x00,0x00  ,0x00,0x00,0xFC,0x01},
{0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x80,0x0F  ,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01  ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0xF0,0x07,0x03,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00  ,0x00,0x7F,0x00,0x1C,0x00,0x00,0x30,0x00,0x18,0x00  ,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xF8,0x00  ,0x00,0x00,0x00,0x60,0x00,0x03,0x00,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00  ,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00  ,0x00,0x00,0x80,0x01,0x00,0x00,0x18,0x00,0x00,0x00  ,0x00,0x00,0x00,0x00}
};

const uint16_t Font20C[256] = {
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0005,0x0083,0x00E6,0x01AD,0x0349,0x0472,0x06AD,0  x0842,0x0886,0x0926,0x09E9,0x0B0C,0x0CE4,0x0BE8,0x  0D62,0x0DA7,
0x0E89,0x0FA7,0x10A9,0x11C9,0x12EA,0x1429,0x1549,0  x1669,0x1789,0x18A9,0x19C2,0x1A04,0x1BAA,0x1CEB,0x  1A8B,0x1E48,
0x8DB0,0x1F4C,0x20CA,0x72CB,0x220C,0x24E9,0x2609,0  x236C,0x272B,0x2A06,0x2908,0x2ACB,0x2849,0x2C2C,0x  2D6A,0x72CD,
0x2E69,0x2F8D,0x312B,0x328A,0x66CC,0x33CB,0x352B,0  x3671,0x388B,0x39EC,0x3B69,0x3C85,0x3D67,0x3CC5,0x  3E4C,0x3FCB,
0x4124,0x41A9,0x42C9,0x8A67,0x43C8,0x44CA,0x4607,0  x46E9,0x4808,0x4902,0x4944,0x49C8,0x49C2,0x4ACE,0x  4AC8,0x8A69,
0x4C89,0x4D89,0x4AC6,0x4EA8,0x4FA7,0x5088,0x5189,0  x52AE,0x5469,0x5589,0x56A8,0x57C9,0x3D22,0x5889,0x  59AD,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x5B49,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0  x0000,0x5C6A,0x0000,0x0000,0x0000,0x0000,0x0000,0x  0000,0x0000,
0x1F4C,0x64CB,0x20CA,0x6769,0x5DAD,0x24E9,0x5F52,0  x618A,0x62CA,0x63CA,0x2ACB,0x662C,0x2C2C,0x272B,0x  72CD,0x676B,
0x2E69,0x72CB,0x66CC,0x6A0B,0x6B6E,0x388B,0x688C,0  x6D2A,0x6E30,0x6E32,0x706E,0x70ED,0x70EA,0x746B,0x  7251,0x75CA,
0x41A9,0x770A,0x7848,0x8287,0x794A,0x44CA,0x7A8E,0  x7C48,0x7D48,0x7E08,0x7EC9,0x7FCA,0x80CA,0x81C8,0x  8A69,0x8289,
0x4C89,0x8A67,0x82EA,0x5589,0x842E,0x5469,0x8769,0  x85E8,0x86AE,0x86B0,0x88A9,0x88EA,0x88E7,0x8B88,0x  89ED,0x8C89
};


void Wait_Press()
{
    uint16_t i = 0;
    while(i ‹ 10000)
    {
        if (READ_PIN(KEY_PRESS))
        {
            i++;
        }
    }
    i = 0;
    while(i ‹ 10000)
    {
        if (READ_PIN(KEY_PRESS)==0)
        {
            i++;
        }
    }
}


void delay_ms(uint16_t ms)
{
    uint16_t i;
    for (i=0; i‹ms; i++)
        delay_us(999);
}


uint16_t RGB_16(uint8_t Red, uint8_t Green, uint8_t Blue)
{
    uint16_t Color = Red & 0xF8;
    Color ‹‹= 5;
    Color |= (Green & 0xFC);
    Color ‹‹= 6;
    Color |= (Blue››3 & 0x1F);
    return Color;
}

void SPI1_Init(void)
{
    RCC-›APB2ENR |= RCC_APB2ENR_SPI1EN; /* Enable SPI1 clock */

    /* Configure PA6 to MISO, PA7 to MOSI, PB3 to SCK */
    GPIOA-›AFR[0] &= ~((15ul ‹‹ 4* 6) | (15ul ‹‹ 4* 7));
    GPIOA-›AFR[0] |= (( 0ul ‹‹ 4* 6) | ( 0ul ‹‹ 4* 7));
    GPIOB-›AFR[0] &= ~(15ul ‹‹ 4* 3);
    GPIOB-›AFR[0] |= ( 0ul ‹‹ 4* 3);
 
    GPIOA-›MODER &= ~(( 3ul ‹‹ 2* 6) | ( 3ul ‹‹ 2* 7));
    GPIOA-›MODER |= (( 2ul ‹‹ 2* 6) | ( 2ul ‹‹ 2* 7));
    GPIOB-›MODER &= ~( 3ul ‹‹ 2* 3);
    GPIOB-›MODER |= ( 2ul ‹‹ 2* 3);
   
    SPI1-›CR1 = 0x00000000; /* Reset SPI1 CR1 Registry*/
    SPI1-›CR1 = (( 0ul ‹‹ 0) | /* CPHA=0 */
    ( 0ul ‹‹ 1) | /* CPOL=0 */
    ( 1ul ‹‹ 2) | /* MSTR=1 */
    ( 7ul ‹‹ 3) | /* BR (fPCLK/32) ~= 1.5 Mbit/sec */
    ( 0ul ‹‹ 7) | /* LSBFIRST */
    ( 0ul ‹‹ 8) | /* SSI */
    ( 1ul ‹‹ 14) | /* SSI */
    ( 1ul ‹‹ 9)); /* SSM */
    SPI1-›CR2 = 0x00000000; /* Reset SPI1 CR2 Registry*/
    SPI1-›CR2 |= (SPI_CR2_NSSP | SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2 | SPI_CR2_FRXTH);
    SPI1-›CRCPR = 0x0007;
    SPI1-›CR1 |= SPI_CR1_SPE; /* Enable SPI1 */
}

void SPI1_Write_byte (uint8_t wr)
{
    while ((SPI1-›SR & SPI_SR_TXE) != SPI_SR_TXE);
    *(uint8_t *)&(SPI1-›DR) = wr;
}

void write_byte(uint8_t c, uint8_t com)//0-command 1-data
{
    //uint8_t i;
    if(com==0)
    {
        PIN_0(DC);
    }
    else
    {
        PIN_1(DC);
    }
   
    SPI1_Write_byte(c);
   
//    PIN_1(SCL);
//    for(i=0;i‹8;i++)
//    {
//       
//        if(((c››(7-i))&1) == 1)
//        {
//            PIN_1(SDA);
//        }
//        else
//        {
//            PIN_0(SDA);
//        }
//        PIN_0(SCL);
//        //delay_us(1);
//        PIN_1(SCL);
//    }
}
void Reset()
{
    PIN_0(RES);
    delay_ms(10);
    PIN_1(RES);
    delay_ms(150);
}

void TFTInit()
{
    //uint16_t i=0;

    PIN_1(RES);
    PIN_1(DC);
    //PIN_1(SCL);
    //PIN_1(SDA);
    Reset();
    write_byte(0x01,0);
    delay_ms(150);
    write_byte(0x11,0);
    delay_ms(100);
    write_byte(0x3A,0);
    write_byte(0x05,1);
    write_byte(0x36,0);
    write_byte(0x54,1);
    write_byte(0x21,0);
    write_byte(0x13,0);
    write_byte(0x29,0);
}

void WriteTwoByte(uint8_t LCD_DataH, uint8_t LCD_DataL)
{
    write_byte(LCD_DataH,1);
    write_byte(LCD_DataL,1);
}

void OutColor(uint16_t color)
{
    uint16_t hC = color››8;
    uint16_t lC = color&0x00FF;
    WriteTwoByte((uint8_t)hC,(uint8_t)lC);
}

void Area(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1)
{
    uint16_t yb,ye;
    yb = y0;
    ye = y1;
    //yb += 80;
    //ye += 80;
    write_byte(0x2a,0);
    write_byte((uint8_t)((yb››8)&0x00FF),1);
    write_byte((uint8_t)(yb&0x00FF),1);
    write_byte((uint8_t)((ye››8)&0x00FF),1);
    write_byte((uint8_t)(ye&0x00FF),1);
    write_byte(0x2b,0);
    write_byte(0,1);
    write_byte(x0,1);
    write_byte(0,1);
    write_byte(x1,1);
    write_byte(0x2c,0);
}

void TFTSingleColor(uint16_t color)
{
    uint8_t i,j;
    Area(0,0,240,240);
    for (i=0;i‹240;i++)
        for (j=0;j‹240;j++)
            OutColor(color);
}

void DrawRect(uint8_t x0, uint8_t y0, uint8_t w, uint8_t h, uint16_t color)
{
    uint8_t i,j;
    Area(x0,y0,x0+w-1,y0+h-1);
    for (i=0;i‹w;i++)
        for (j=0;j‹h;j++)
            OutColor(color);
}

void DrawPixel(uint8_t x0, uint8_t y0, uint16_t color)
{
    Area(x0,y0,x0,y0);
    OutColor(color);
}

void WriteChar(uint8_t s)
{
    uint8_t xb,yb,xe,ye;
    uint8_t ic,ib,w;
    uint8_t i,j;
    uint16_t tmp;
    if (Font == 11)
    {
        tmp = Font11C[s];
    }
    else if (Font == 16)
    {
        tmp = Font16C[s];
    }
    else if (Font == 20)
    {
        tmp = Font20C[s];
    }
    w = (uint8_t)(tmp&0x001F);
    tmp››=5;
    ib = (uint8_t)(tmp&0x0007);
    tmp››=3;
    ic = (uint8_t)(tmp&0x00FF);
    xb = x0;
    yb = y0;
    xe = xb+w;
    ye = yb+Font-1;
    x0 += (w+1);
    Area(xb, yb, xe, ye);
    for(i=0;i‹w;i++)
    {
        for(j=0;j‹Font;j++)
        {
            uint8_t bit;
            if (Font == 11)
            {
                bit = Font11[j][ic]&(1‹‹ib);
            }
            else if (Font == 16)
            {
                bit = Font16[j][ic]&(1‹‹ib);
            }
            else if (Font == 20)
            {
                bit = Font20[j][ic]&(1‹‹ib);
            }
            if(bit)
            {
                OutColor(CC);
            }     
            else
            {
                OutColor(BC);
            }
        }
       
        ib++;
        if(ib==8)
        {
            ib = 0;
            ic++;
        }
    }
    for(j=0;j‹Font;j++)
    {
        OutColor(BC);
    }
}


void SettingText(uint8_t x, uint8_t y, uint16_t Ccolor, uint16_t Bcolor, uint8_t F)
{
    x0 = x;
    y0 = y;
    CC = Ccolor;
    BC = Bcolor;
    Font = F;
}

void SetColor(uint16_t Ccolor, uint16_t Bcolor)
{
    CC = Ccolor;
    BC = Bcolor;
}

void SetFont(uint8_t F)
{
    Font = F;
}

void GoToXY(uint8_t x, uint8_t y)
{
    x0 = x;
    y0 = y;
}

void WriteStr(char *str)
{
    uint8_t i = 0;
    uint8_t ch = str[i];
    xe = x0;
    while (ch)
    {
        WriteChar(ch);
        i++;
        ch = str[i];
    }
}

int8_t IntToStr(int32_t Val, uint8_t sist)  //Процедура перевода числа в строку
{
    int8_t i=0;                             //Индекс текущего символа
    uint32_t tVal;                          //Модуль выводимого числа
    uint8_t dig;
    if (Val ›= 0)
    {
        tVal = Val;
    }
    else
    {
        tVal = -Val;
    }
    while (tVal)                            //Пока модуль числа не равен 0
    {
        dig = tVal%sist;
        if (dig‹10)
        {
            DigChars[i] = tVal%sist+'0';    //Текущий символ равен младшей десятичной цифре этой переменной
        }
        else
        {
            DigChars[i] = tVal%sist+('A'-10);  //Текущий символ равен младшей десятичной цифре этой переменной
        }
        tVal/=sist;                     //деление на основание системы счисления переменной модуля числа
        i++;
    }
                                        //В результате данного цикла в массиве находятся цифры числа в кодировке ASCII в обратном порядке
    if (Val ‹ 0)                        //Если исходное число отрицательное
    {
        DigChars[i] = '-';             //добавление к массиву символа "-"
        i++;
    }
    if (i)                              //Если массив не пуст
    {
        i--;                            //Индекс массива указывает на последний элемент
    }
    else                                //Иначе если массив пуст
    {
        DigChars[0] = '0';              //Значение числа равно нулю (он-то и выведется на экран)
    }
    return i;   
}


void WriteNum_ex(int32_t val, uint8_t MinLen, uint8_t AfPo, uint8_t Space, uint8_t Plus)//Процедура вывода числа
{
    uint8_t ml = MinLen;              //Минимальный индекс на 1 меньше минимальной длинны числа
    int8_t i=IntToStr(val,10);
    xe = x0;
    if (AfPo == 0)
    {
        ml--;
    }
    while (i‹(AfPo+1))
    {
        i++;
        DigChars[i] = '0';              //Значение числа равно нулю (он-то и выведется на экран)
    }
   
    while (i‹ml)                    //Пока индекс меньше минимального
    {
        WriteChar(Space);         //выводится пробел (или другой символ указанный пользователем)
        ml--;                       //и уменьшается минимальный индекс
    }
    if (Plus && val›0)              //Если в положительных числах тоже нужно указывать знак
    {                               //и чичло положительное
        WriteChar('+');
    }
    for (;i›=0;i--)
    {
        if ((i+1) == AfPo)
        {
            WriteChar('.');
        }
        WriteChar(DigChars[i]);      //вывод массива символов цифр в обратном порядке
    }
}

void WriteNum(int32_t val)     //Процедура вывода числа (упрощенная)
{
    int8_t i=IntToStr(val,10);
    xe = x0;
    for (;i›=0;i--)
    {
        WriteChar(DigChars[i]);      //вывод массива символов цифр в обратном порядке
    }
}

void ClrTxt()
{
    uint8_t i,j;
    Area(xe, y0, x0, y0+Font-1);
    for (i=xe; i‹=x0; i++)
    {
        for (j=0; j‹Font; j++)
        {
            OutColor(BC);
        }
    }
}

int main()
{
//    uint32_t i=14;
    InitClock();
    OnAllGPIO();
    SPI1_Init();
    //PORT_OUT(SCL);
    //PORT_OUT(SDA);
    PORT_OUT(RES);
    PORT_OUT(DC);
    PORT_OUT(LED);
    TFTInit();
    PIN_1(LED);
   
    PORT_IN(KEY_PRESS);
   
    PORT_OUT(LED_1);
    PORT_OUT(LED_2);

    TFTSingleColor(0xFFFF);
//    SettingText(5,5,0xF100,0x0000,16);
    while(1)
    {
        uint8_t ch = 0;
//        ClrTxt();
//        x0 = 5;
//        WriteNum_ex(i,4,2,' ',0);
//        i+=(i››2);
        PIN_1(LED_1);
        SettingText(5,5,0x0000,0xFFFF,11);
        do
        {
            WriteChar(ch);
            ch++;
            if (x0 ›227)
            {
                x0 = 5;
                y0 += 11;
            }
        }
        while(ch);
        DrawRect(2,y0+15,230,1,RGB_16(0xFF,0,0));
        Wait_Press();
       
        PIN_0(LED_1);
        PIN_1(LED_2);
        SettingText(5,5,0x0000,0xFFFF,16);
        do
        {
            WriteChar(ch);
            ch++;
            if (x0 ›227)
            {
                x0 = 5;
                y0 += 16;
            }
        }
        while(ch);
        DrawRect(2,y0+20,230,2,RGB_16(0,0xFF,0));
        Wait_Press();
       
        PIN_1(LED_1);
        SettingText(5,5,0x0000,0xFFFF,20);
        do
        {
            WriteChar(ch);
            ch++;
            if (x0 ›227)
            {
                x0 = 5;
                y0 += 20;
            }
        }
        while(ch);
        DrawRect(2,y0+22,230,3,RGB_16(0,0,0xFF));
        Wait_Press();
        PIN_0(LED_2);
    }
}
В таком виде код не работает, но если SPI закоментировать а ногодрыг раскоментировать будет красиво выводить 3 алфавита разного размера.

Собственно вопрос к знающим людям:
Почему не работает SPI?

Смотрел осциллом. Сигналы есть. Передний фронт как в даташите.
Реклама:

Последний раз редактировалось SlovachevskyDV; 16.01.2020 в 09:38.
SlovachevskyDV вне форума  
Непрочитано 16.01.2020, 10:57  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: ST7789 240x240 SPI

Дело в том, что бит TXE поднимается за один такт ДО того, как байт будет полностью передан. Потому, нужно для получения точного момента окончания передачи, нужно следить за другим битом - либо RXNE, либо TXE+BUSY. Либо искусственно добавлять задержку после окончания передачи.

Код:
void SPI1_Write_byte (uint8_t wr) {
	uint8_t v;
43334‹asdsw›454545
	while (SPI1-›SR & SPI_SR_RXNE) {
		v = SPI1-›DR; // Читаются данные для сброса флага готовности данных
	};
	*(volatile uint8_t *)&(SPI1-›DR) = Data;
	while (!(SPI1-›SR & SPI_SR_RXNE)); // Именно на этом моменте данные будут ДЕЙСТВИТЕЛЬНО переданы.
	v = *(volatile uint8_t *)&(SPI1-›DR);
};
Естественно, в этом случае, пин MISO должен быть проинициализирован и подключен. Если только односторонний вывод - может сработать конструкция:
Код:
void SPI1_Write_byte (uint8_t wr) 
	*(volatile uint8_t *)&(SPI1-›DR) = Data;
	while (!(SPI1-›SR & SPI_SR_TXE));
	while (SPI1-›SR & SPI_SR_BSY);
};

Последний раз редактировалось -Alan-; 16.01.2020 в 11:04.
-Alan- вне форума  
Сказали "Спасибо" -Alan-
SlovachevskyDV (16.01.2020)
Непрочитано 16.01.2020, 11:21  
SlovachevskyDV
Временная регистрация
 
Аватар для SlovachevskyDV
 
Регистрация: 10.10.2011
Адрес: Донецк
Сообщений: 94
Сказал спасибо: 65
Сказали Спасибо 48 раз(а) в 13 сообщении(ях)
SlovachevskyDV на пути к лучшему
По умолчанию Re: ST7789 240x240 SPI

Сообщение от -Alan- Посмотреть сообщение
Код:
void SPI1_Write_byte (uint8_t wr)
*(volatile uint8_t *)&(SPI1-›DR) = Data;
while (!(SPI1-›SR & SPI_SR_TXE));
while (SPI1-›SR & SPI_SR_BSY);
};
Это помогло.
SlovachevskyDV вне форума  
 

Закладки

Метки
spi, st7789, stm32f051
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Кто-нибудь работал с RF модулями nRF2401A? Easyrider83 Автоматика и аппаратура связи 1481 04.09.2021 23:24
Atmega16 - много переферийных устройств SPI pavned AVR 21 23.01.2013 07:00
Работа с EEPROM по SPI dominik2 Микроконтроллеры, АЦП, память и т.д 15 05.05.2012 00:24
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


Часовой пояс GMT +4, время: 17:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot