const unsigned char MyFont[] { // ... здесь байты символов, идущих перед нашей '2'
0,0,0x1F,0x80,0x30,0xC0,0x60,0x60,0x60,0x60,0x20,0x60,0,0x60,0,0xC0,1,0x80,7,0,0xC,0,0x18,0,0x30,0,0x60,0,0x60,0x60,0x7F,0xE0,0,0,0,0, // это байты нашей '2'
// ... дальше байты других символов
};
const int *FontSym[] = { &FontSym_x00, &FontSym_x01, &FontSym_x02, ...etc... &FontSym_xFF }; // тут тип int должен полностью вмещать адрес ячейки. Если размер int не достаточен, нужен тип побольше.
Перед этим FontSym_x## должны быть определены как массивы, содержащие коды рисовки конкретных символов.... ...
const unsigned char FontSym_x2F[] = { ... }; // слэш прямой
const unsigned char FontSym_x30[] = { ... }; // ноль
const unsigned char FontSym_x31[] = { ... }; // единичка
const unsigned char FontSym_x32[] = { 0, 0, 0x1F, 0x80, 0x30, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x20, 0x60, 0, 0x60, 0, 0xC0, 1, 0x80, 7, 0, 0xC, 0, 0x18, 0, 0x30, 0, 0x60, 0, 0x60, 0x60, 0x7F, 0xE0, 0, 0, 0, 0 }; // это наша двоечка из прошлого поста
const unsigned char FontSym_x33[] = { ... }; // тройка
... ...
При такой организации есть сразу несколько фишек.Функция вывода символа (SymCode, координаты, цвет, etc...) {
var int *SymMatrixPtr; // локальная переменная-указатель на матрицу рисуемого символа, про размер int см.выше...
var unsigned char MatrixCode;
... ...
SymMatrixPtr = FontSym[SymCode];
const unsigned char SymPosition[255] = { 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, 0, 0, ... // первые 32 символа - это пустышки. Сама "пустышка" у нас нарисована в позиции 0
1, // символ с индексом 32 (0x20)- пробел, в таблице это второй по счёту (индекс 1)
2, // символ '!' (0x21) - индекс 2.
// ... и так далее
В этом случае символы не обязательно должны идти по порядку, поэтому легко сделать на входе ASCII 866, 1251, КОИ - только их направить на свою таблицу соответственно коду. Каких-то символов может не быть, причём в произвольном порядке - на их месте просто прописывается код символа-заглушки.struct Font_12x18 {
const unsigned char Position[255] = { ... ...}; // должно быть обязательно заполнено
const unsigned char Width = 12; // количество столбцов (ширина) - это пример в ширину 12-точечного
const unsigned char Height = 18; // количество строк (высота) - наш 18-строчный
const unsigned char Lenght = 2; длина в байтах одного символа.
// здесь можно вставить один байт для выравнивания. Мало ли...
const unsigned char Matrix_00[36] = {.. .. .. ...}; символ на позиции 0 'заглушка'
const unsigned char Matrix_01[36] = {.. .. .. ...}; символ на позиции 1 'пробел'
... ...
const unsigned char Matrix_xx[36] = {.. .. .. ...}; символ на позиции xx
}; // конец структуры
Вот я никак не понял, перед struct нужно ли указать, что она const? Можно ли написатьd1 = CH * 96 + ((b - 1) * 3 + i );
такая она, когда вывожу шрифт Inconsola, для шрифта Ubuntu она такая:d1 = CH * 96 + ((b - 1) * 3 + i + 4);
Функция:#include "Ubuntu.h"
#include "Inconsola.h"
void print_char_24x32_land(uint8_t CH, uint8_t X, uint8_t Y, uint16_t fcolor, uint16_t bcolor)
{
uint8_t j, i, b, d;
uint16_t d1, color;
CS_DN;
lcd7735_at(X, Y, X + 31, Y + 23); // Ширина и высота шрифта от 0
lcd7735_sendCmd(0x2C);
SPI2SIXTEEN;
DC_UP;
for (i = 0; i < 3; i++) { // 3 байта в строке матрици 3*8 = 24 FONTWIDTH
for (j = 8; j > 0; j--) {
for (b = 32; b > 0; b--) { // 32 строки в матрице FONTHEIGHT
//d1 = CHP + ((b - 1) * 3 + i );
d1 = (CH * 96 + ((b - 1) * 3 + i + 4);
d = Ubuntu[d1];
//d = Inconsola[d1];
if (d & (1 << (j - 1))) color = fcolor; else color = bcolor;
while (!(SPI1->SR & SPI_SR_TXE)){};
SPI1->DR = color;
}
}
}
while (!(SPI1->SR & SPI_SR_TXE) || (SPI1->SR & SPI_SR_BSY)){};
CS_UP;
SPI2EIGHT;
}
ЦитатаМожешь пояснить, что там четыре байта означают в тех шрифтах?Вот тит объяснение есть:
ЦитатаНо это не точно... Проверишь?Да, чуть позже, тут то танцы у дочки, то в разъездах... :)
const unsigned char inconsola24x32bitmaps[] = {
// 16 символов
// В строке 96 байт
0x00,0x10,0x00,0x00,0xFC,0x00,0x01,0xFE,0x00,0x03,0xC7,0x00,0x03,0x83,0x80,0x07,0x01,0x80,0x06,0x01,0xC0,0x06,0x03,0xC0,0x0E,0x07,0xC0,0x0E,0x0E,0xC0,0x0E,0x1C,0xE0,0x0C,0x18,0xE0,0x0C,0x38,0xE0,0x0E,0x70,0xE0,0x0E,0xE0,0xE0,0x0E,0xC0,0xC0,0x0F,0xC0,0xC0,0x07,0x80,0xC0,0x07,0x01,0xC0,0x07,0x01,0x80,0x03,0x83,0x80,0x03,0xC7,0x00,0x00,0xFE,0x00,0x00,0x7C,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, // 0
0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x3E,0x00,0x01,0xFE,0x00,0x00,0xC6,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x06,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, // 1
0x00,0x10,0x00,0x00,0xFE,0x00,0x01,0xFF,0x00,0x03,0x87,0x80,0x07,0x01,0xC0,0x02,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x20,0x07,0xFF,0xC0,0x07,0xFF,0xC0,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
0x00,0x00,0x00,0x00,0xFC,0x00,0x03,0xFF,0x00,0x07,0x07,0x00,0x02,0x03,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x1E,0x00,0x00,0x7C,0x00,0x00,0x7F,0x00,0x00,0x07,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x02,0x01,0xC0,0x02,0x03,0x80,0x07,0x87,0x80,0x03,0xFF,0x00,0x01,0xFC,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, // 3
0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x3F,0x00,0x00,0x37,0x00,0x00,0x67,0x00,0x00,0x67,0x00,0x00,0xC7,0x00,0x01,0xC7,0x00,0x01,0x87,0x00,0x03,0x07,0x00,0x07,0x07,0x00,0x06,0x07,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,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, // 4
0x00,0x00,0x00,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x07,0x00,0x00,0x07,0xFE,0x00,0x07,0xFF,0x00,0x07,0x87,0x80,0x07,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xC0,0x02,0x01,0xC0,0x0E,0x01,0xC0,0x07,0x87,0x80,0x03,0xFF,0x00,0x01,0xFE,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, // 5
0x00,0x08,0x00,0x00,0x7F,0x00,0x00,0xFF,0xC0,0x01,0xC1,0x80,0x03,0x80,0x80,0x03,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x06,0x3E,0x00,0x06,0xFF,0x00,0x07,0xC7,0x80,0x07,0x81,0x80,0x07,0x01,0xC0,0x06,0x00,0xC0,0x06,0x00,0xC0,0x06,0x00,0xC0,0x06,0x00,0xC0,0x07,0x00,0xC0,0x03,0x01,0xC0,0x03,0x81,0xC0,0x01,0xC3,0x80,0x00,0xFF,0x00,0x00,0x7E,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, // 6
0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,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, // 7
0x00,0x18,0x00,0x00,0xFE,0x00,0x01,0xFF,0x00,0x03,0x83,0x80,0x03,0x01,0x80,0x07,0x01,0xC0,0x07,0x01,0xC0,0x03,0x01,0xC0,0x03,0x83,0x80,0x01,0xC7,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xC7,0x80,0x07,0x03,0x80,0x07,0x01,0xC0,0x06,0x00,0xC0,0x0E,0x00,0xE0,0x0E,0x00,0xC0,0x06,0x00,0xC0,0x07,0x01,0xC0,0x07,0x83,0x80,0x03,0xFF,0x80,0x00,0xFE,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, // 8
0x00,0x10,0x00,0x00,0xFE,0x00,0x01,0xFF,0x00,0x03,0x87,0x80,0x07,0x03,0x80,0x07,0x01,0xC0,0x06,0x01,0xC0,0x06,0x00,0xC0,0x06,0x00,0xC0,0x06,0x00,0xC0,0x07,0x00,0xC0,0x07,0x01,0xC0,0x03,0x83,0xC0,0x03,0xFE,0xC0,0x00,0xFC,0xC0,0x00,0x20,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x02,0x03,0x80,0x03,0x0F,0x00,0x07,0xFE,0x00,0x01,0xF8,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, // 9
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,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, // <space>
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,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,0x18,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,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,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,0x0C,0x00,0x00,0x1E,0x00,0x00,0x1E,0x00,0x00,0x1E,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,0x20,0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,0xFC,0x00,0x00,0xCC,0x00,0x00,0xCE,0x00,0x01,0x86,0x00,0x01,0x86,0x00,0x01,0x87,0x00,0x03,0x03,0x00,0x03,0x03,0x80,0x03,0xFF,0x80,0x07,0xFF,0x80,0x06,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x00,0xC0,0x0C,0x00,0xE0,0x1C,0x00,0xE0,0x1C,0x00,0x70,0x18,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // A
0x00,0x00,0x00,0x1C,0x00,0x70,0x0C,0x00,0x60,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x06,0x00,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x03,0x01,0x80,0x03,0x81,0x80,0x03,0x83,0x80,0x01,0x83,0x00,0x01,0xC3,0x00,0x01,0xC7,0x00,0x00,0xC6,0x00,0x00,0xE6,0x00,0x00,0xEE,0x00,0x00,0x6C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x10,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, // V
0x00,0x00,0x00,0x18,0x00,0x30,0x18,0x10,0x30,0x1C,0x10,0x30,0x1C,0x18,0x30,0x1C,0x18,0x70,0x0C,0x38,0x60,0x0C,0x3C,0x60,0x0C,0x3C,0x60,0x0C,0x6C,0x60,0x0E,0x6C,0x60,0x0E,0x6E,0x60,0x06,0x66,0xC0,0x06,0xC6,0xC0,0x06,0xC6,0xC0,0x06,0xC7,0xC0,0x07,0x83,0xC0,0x07,0x83,0xC0,0x07,0x83,0x80,0x03,0x83,0x80,0x03,0x01,0x80,0x03,0x01,0x80,0x03,0x01,0x80,0x03,0x01,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, // W
};
typedef struct {
unsigned int offset;
unsigned char width, height;
} Font;
const Font inconsola24x32numfont[] = {
{ 0, 24, 32},
{96, 24, 32}
}
Цитатапотому как просто нифига не помнюА я нифига не знаю, так как учил-то паскаль. :)
typedef struct {
unsigned char charcode;
unsigned int offset;
unsigned char width, height;
} Glythmap;
const Glythmap inconsola24x32numfont[] = {
//charcode offset width height
{48, 0, 24, 32}, // 0
{49, 192, 24, 32}, // 1
{50, 288, 24, 32}, // 2
{51, 384, 24, 32}, // 3
{52, 480, 24, 32}, // 4
{53, 576, 24, 32}, // 5
{54, 672, 24, 32}, // 6
{55, 768, 24, 32}, // 7
{56, 864, 24, 32}, // 8
{57, 960, 24, 32}, // 9
{32, 1056, 24, 32}, // space
{58, 1152, 24, 32}, // :
{46, 1248, 24, 32}, // .
{65, 1344, 24, 32}, // A
{86, 1440, 24, 32}, // V
};
Glythmap MyGlyth;
MyGlyth = inconsola24x32numfont[1];
charcode = MyGlyth.charcode;
unsigned int Temp = CharPointer;
incompatible pointer to integer conversion initializing 'unsigned int' with an expression of type 'unsigned int *'; dereference with * [-Wint-conversion]CharPointer = *BytesArray[1]; //вот так просто.
indirection requires pointer operand ('int' invalid)unsigned int Sign = 999; // Sign - переменная. Понятие абстрактное, но удобное.
unsigned int *CharPointer ; // это указатель. Тип int - четыре байта - это как раз размер 32-битного адреса.
char BytesArray[255] ; // это массив (без const он попадёт в ОЗУ, но для примера это не важно)
CharPointer = &Sign;
unsigned int Temp = *CharPointer;
// Temp = CharPointer ; // в Temp попадёт значение переменной-указателя CharPointer (размерность Temp пока опустим).
// И ставим указатель на массив, на его начало
CharPointer = *BytesArray[1]; //вот так просто.
на последней строчкеЦитата: Slabovik от 21 Фев., 2024, 18:54Массив же давай сделаем самый простой, как описал выше. 256 байт - индексы, 4 байта - размеры, далее посимвольные матрицы.Так вот я и не пойму, какой массив, вначале массива 4-ре байта служебные, а остальное одинаковые по размеру битмапы?
Матрицы не обязательно по порядку кодов, главное, чтобы индексы сопоставления кодов с матрицами были верными.
Цитата: Slabovik от 21 Фев., 2024, 15:30Простой массив
const unsigned char Font12x18[] = { // первые 256 байт - перекодировка
по принципу: входящий код символа является индексом для таблицы, данные по которому соответствуют порядковому номеру (позиции в общем нашем массиве) матрицы изображения этого символа. Тут только 256, без вариантов. Если первые 32 символа отсутствуют - эти указатели должны всё-равно показать на какой-то символ, на пробел, или вон квадрат часто используют, видел поди.
Затем продолжаем заполнять массив.
Надо заполнить данные: Ширина символа, Высота символа, Длина символа в байтах, и пустышка 0 (уже говорил, что не придумал, что сюда засунуть, но 4 байта - это ровно. Пока только поэтому.)
12, 18, 36, 0, // всё.
/* позиция 0 -- символ "ПРОБЕЛ" */
и здесь 36 байтов матрицы символа "пробел"
/* позиция 1 -- символ "!" */
и здесь 36 байтов матрицы символа "!"
и так далее.
Важно! Нужна хотя бы одна матрица символа. Обычно это символ-заглушка, либо пробел.
Первые 256 байт должны показывать только на существующие позиции. Если символа, соответствующего входящему коду, нет, то он должен показывать на символ-заглушку.
И в конце }
Длина массива - какая получится, т.е. не определяем сразу, но следим за количеством байт в каждом её участке.
const Glythmap inconsola24x32numfont[] = {
//charcode offset width height length
{48, 0, 24, 32, 96 }, // 0
{49, 192, 24, 32, 96 }, // 1
То, при моноширном шрифте три крайние константы будут одинаковы для всех, и по сути тут не нужны./* потребуются ещё вот эти локальные переменные */
var unsigned char MatrixByte; // временная для обработки байта матрицы
var unsigned char BitMask; // маска, накладываемая на байт для получения значения одного бита
var unsigned char BitWidth; // счётчик выведенных по горизонтали точек
/* начало алгоритма вывода. Вывод без поворота
x матрицы = x символа (ширина)
y матрицы = y символа (высота)
*/
BitWidth = SymbolWidth ; // начальная установка счётчика
do { MatrixByte = *MatrixPointer ; // чтение очередного байта матрицы
MatrixPointer = MatrixPointer + 1; // после чтения передвинем указатель на следующий байт матрицы
MatrixLength = MatrixLength - 1 ; // можно писать просто MatrixLength--; но мне так не нравится...
BitMask = 0b10000000 ; // предустановка маски и ширины символа на начало для каждого прочитанного байта
do { if (MatrixByte & BitMask)>0
{ вывод в поток точки цвета символа };
else { вывод в поток точки цвета фона };
BitMask = BitMask >> 1 ; // как только бит выедет вправо, BitMask станет равен 0. Значит, вывели все 8 битов в поток
BitWidth = BitWidth - 1 ; // как только значение станет равным 0. Значит, все биты строки вывели в поток
} while (BitWidth >0) & (BitMask >0); // если хоть что-то стало 0, надо читать следующий байт - выходим из этого цикла
if BitWidth = 0 { BitWidth = SymbolWidth }; // если выход был по окончании вывода строки - снова предустановим счётчик
// один раз на символ предустановка лишняя, но организовывать проверку
// окажется много дороже, чем один лишний раз присвоить значение
} while MatrixLength >0 ;
ЦитатаIn vertical addressing mode (MV=1), the Y-address increments after each byte, after the last Y-address (Y=YE), Y wraps around to YS and X increments to address the next column.Впрочем, бывают случаи необходимости текста под 90° к другому тексту...
In horizontal addressing mode (V=0), the X-address increments after each byte, after the last X-address (X=XE), X wraps around to XS and Y increments to address the next row. After the every last address (X=XE and Y=YE) the address pointers wrap around to address (X=XS and Y=YS).
const unsigned char Array[] = { 55, 77, 101, 0, 88, 155, 254, 99};
unsigned char MatrixByte;
unsigned char *MatrixPointer = Array;
do
{
MatrixByte = *MatrixPointer;
MatrixPointer++;
} while (1);
и смотрел в дебаггере (segger позволяет запустить симуляцию без подключенного мк).initializing 'unsigned char *' with an expression of type 'const unsigned char[8]' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
// InconsolaNum24x32 массив битмапов символов
// InconsolaNum24x32index его индексы
void print_char(unsigned char CH, uint8_t X, uint8_t Y) {
unsigned char MatrixByte; // временная для обработки байта матрицы
unsigned char BitMask; // маска, накладываемая на байт для получения значения одного бита
unsigned char BitWidth; // счётчик выведенных по горизонтали точек
unsigned char SymbolWidth = 24, MatrixLength = 96;
const unsigned char *MatrixPointer = InconsolaNum24x32;
BitWidth = SymbolWidth; // начальная установка счётчика
MatrixPointer += InconsolaNum24x32index[CH]; // перемещаем указатель на начало символа CH
// начало алгоритма вывода. Вывод без поворота
// x матрицы = x символа (ширина)
// y матрицы = y символа (высота)
do {
MatrixByte = *MatrixPointer; // чтение очередного байта матрицы
MatrixPointer = MatrixPointer + 1; // после чтения передвинем указатель на следующий байт матрицы
MatrixLength = MatrixLength - 1; // можно писать просто MatrixLength--; но мне так не нравится...
BitMask = 0b10000000; // предустановка маски и ширины символа на начало для каждого прочитанного байта
do {
if ((MatrixByte & BitMask) > 0) {
} // вывод в поток точки цвета символа
else {
}; // вывод в поток точки цвета фона
BitMask = BitMask >> 1; // как только бит выедет вправо, BitMask станет равен 0. Значит, вывели все 8 битов в поток
BitWidth = BitWidth - 1; // как только значение станет равным 0. Значит, все биты строки вывели в поток
} while ((BitWidth > 0) && (BitMask > 0)); // если хоть что-то стало 0, надо читать следующий байт - выходим из этого цикла
if (BitWidth == 0)
BitWidth = SymbolWidth; // если выход был по окончании вывода строки - снова предустановим счётчик
// один раз на символ предустановка лишняя, но организовывать проверку
// окажется много дороже, чем один лишний раз присвоить значение
} while (MatrixLength > 0);
}
Цитатано главное - это следить за состоянием переменныхТак в правом верхнем углу как-раз все нужные переменные и есть.
ЦитатаДа, кстати, на уровне совета.Да, на будущее надо какой-то обработчик ошибок сделать.
ЦитатаПоворачивать на 90 будем?Можно попробовать другой функцией.
#define FONT_CONSOLAS_22_LENGTH 224
---ЦитатаMatrixFont закодирован в другую сторону. У нас сейчас сдвиг влево, MatrixFont должен сдвигаться вправо.Для проверки сделал так:
unsigned char reverse(unsigned char b)
{
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
return b;
}
...
...
MatrixByte = reverse(*MatrixPointer); // чтение очередного байта матрицы
...
...
#define FONT_CONSOLAS_18_LENGTH 224
Что это никак не пойму?#include <stdio.h>
unsigned char reverse(unsigned char b)
{
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
return b;
}
char W[] =
{
// 288
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x06, 0x60, 0x0E, 0x60, 0x1A, 0x60, 0x32, 0x60, 0x36, 0x60, 0x66, 0x60, 0x66, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x66, 0x06, 0x66, 0x06, 0x6C, 0x06, 0x4C, 0x06, 0x58, 0x06, 0x70, 0x06, 0x60, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 0
0x00, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x1F, 0xF8, 0x3E, 0x7C, 0x00, 0x00, // 1
0x00, 0x00, 0x3E, 0x7C, 0x1E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x3E, 0x78, 0x3E, 0x7C, 0x00, 0x00, // 2
0x00, 0x00, 0x3E, 0x7C, 0x1E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x1E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 3
0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // 4
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x78, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x1E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 5
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x78, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 6
0x00, 0x00, 0x3E, 0x7C, 0x1E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // 7
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 8
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x1E, 0x7C, 0x3E, 0x7C, 0x00, 0x00, // 9
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, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, // . // 10
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x3E, 0x7C, 0x3E, 0x7C, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, // A // 11
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x08, 0x60, 0x08, 0x60, 0x18, 0x60, 0x30, 0x60, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6C, 0x00, 0x4C, 0x00, 0x58, 0x00, 0x70, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // V // 12
0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x41, 0x82, 0x3F, 0xFC, 0x3E, 0x7C, 0x00, 0x00, // W // 13
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, // <space> 14
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // : // 15
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // a // 16
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x88, 0x11, 0x88, 0x19, 0x98, 0x0D, 0xB0, 0x0D, 0xB0, 0x07, 0xE0, 0x07, 0xE0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v // 17
0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x41, 0x82, 0x3E, 0x7C, 0x3E, 0x7C, 0x41, 0x82, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, // w // 18
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x1F, 0xF8, 0x3E, 0x7C, 0x00, 0x00, // c // 19
0x00, 0x00, 0x3E, 0x7C, 0x3E, 0x78, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x3E, 0x78, 0x3E, 0x7C, 0x00, 0x00, // C // 20
};
int i = 1;
int main()
{
do {
printf("0x%02hhx", reverse(W[i-1]));
printf(",");
if ((i % 48 == 0) && (i>0)) printf("\n");
i++;
} while (i < sizeof(W)+1);
return 0;
}
#ifndef FONT_SIXSEG_H
#define FONT_SIXSEG_H
#ifndef FONT_TYPE_MONOSPACED
#define FONT_TYPE_MONOSPACED 0
#endif
#ifndef FONT_TYPE_PROPORTIONAL
#define FONT_TYPE_PROPORTIONAL 1
#endif
#define FONT_SIXSEG_LENGTH 21
#define FONT_SIXSEG_START_CHAR 32
#define FONT_SIXSEG_CHAR_WIDTH 16
#define FONT_SIXSEG_CHAR_HEIGHT 24
#define FONT_SIXSEG_FONT_TYPE (FONT_TYPE_MONOSPACED)
#define FONT_SIXSEG_ARRAY_LENGTH (FONT_SIXSEG_LENGTH * FONT_SIXSEG_CHAR_HEIGHT * 3)
const unsigned char font_seven_segment_30[FONT_SEVEN_SEGMENT_30_ARRAY_LENGTH] =
const unsigned char font_sixseg[] = {
0x00,0x00,0x7c,0x3e,0x7c,0x3e,0x02,0x60,0x06,0x70,0x06,0x58,0x06,0x4c,0x06,0x6c,0x06,0x66,0x06,0x66,0x06,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x66,0x60,0x66,0x60,0x36,0x60,0x32,0x60,0x1a,0x60,0x0e,0x60,0x06,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x00,0xf8,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x78,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x7c,0x3e,0x7c,0x3e,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x7c,0x1e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x78,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x78,0x3e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x1e,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x7c,0x3e,0x7c,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x78,0x3e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x1e,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x78,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x78,0x3e,0x7c,0x3e,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,0x80,0x01,0x80,0x01,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x7c,0x3e,0x7c,0x3e,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x02,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x10,0x06,0x10,0x06,0x18,0x06,0x0c,0x06,0x0c,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x66,0x00,0x66,0x00,0x36,0x00,0x32,0x00,0x1a,0x00,0x0e,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x82,0x41,0xfc,0x3f,0x7c,0x3e,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,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,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,0x01,0xc0,0x03,0xc0,0x03,0x80,0x01,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,0x88,0x11,0x88,0x11,0x98,0x19,0xb0,0x0d,0xb0,0x0d,0xe0,0x07,0xe0,0x07,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x82,0x41,0x7c,0x3e,0x7c,0x3e,0x82,0x41,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x02,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0x7c,0x3e,0x00,0x00,
0x00,0x00,0x7c,0x3e,0x7c,0x1e,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x7c,0x1e,0x7c,0x3e,0x00,0x00,
};
// Название шрифта font_sixseg
// Автор шрифта HOME-PC / john
// Дата и время генерации 27.02.2024 10:19:01
// Сгенерировано matrixFont v1.4.7.64
// Кодовая страница ANSI (ASCII 7-битная)
// https://gitlab.com/riva-lab/matrixFont
#ifndef FONT_FONT_SIXSEG_H
#define FONT_FONT_SIXSEG_H
#ifndef FONT_TYPE_MONOSPACED
#define FONT_TYPE_MONOSPACED 0
#endif
#ifndef FONT_TYPE_PROPORTIONAL
#define FONT_TYPE_PROPORTIONAL 1
#endif
#define FONT_FONT_SIXSEG_LENGTH 21
#define FONT_FONT_SIXSEG_START_CHAR 32
#define FONT_FONT_SIXSEG_CHAR_WIDTH 16
#define FONT_FONT_SIXSEG_CHAR_HEIGHT 24
#define FONT_FONT_SIXSEG_FONT_TYPE (FONT_TYPE_MONOSPACED)
#define FONT_FONT_SIXSEG_ARRAY_LENGTH (FONT_FONT_SIXSEG_LENGTH * FONT_FONT_SIXSEG_CHAR_HEIGHT * 2)
const unsigned char font_font_sixseg[FONT_FONT_SIXSEG_ARRAY_LENGTH] =
{
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x60, 0x06, 0x70, 0x06, 0x58, 0x06, 0x4C, 0x06, 0x6C, 0x06, 0x66, 0x06, 0x66, 0x06, 0x63, 0x86, 0x61, 0x86, 0x61, 0xC6, 0x60, 0x66, 0x60, 0x66, 0x60, 0x36, 0x60, 0x32, 0x60, 0x1A, 0x60, 0x0E, 0x60, 0x06, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 32 < >
0x00, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF8, 0x1F, 0xFC, 0x3F, 0x00, 0x00, // Символ 33 <!>
0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x1F, 0xFC, 0x3F, 0x00, 0x00, // Символ 34 <">
0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 35 <#>
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 36 <$>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 37 <%>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 38 <&>
0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 39 <'>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 40 <(>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 41 <)>
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, 0x01, 0x80, 0x01, 0x00, 0x00, // Символ 42 <*>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 43 <+>
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x1C, 0x38, 0x18, 0x18, 0x30, 0x0C, 0x30, 0x0C, 0x60, 0x06, 0xE0, 0x07, 0xC0, 0x03, 0x80, 0x01, 0x00, 0x00, // Символ 44 <,>
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x82, 0x41, 0xFC, 0x3F, 0x7C, 0x3E, 0x00, 0x00, // Символ 45 <->
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, // Символ 46 <.>
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 47 </>
// Digits / Цифры
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 48 <0>
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x11, 0x88, 0x11, 0x98, 0x19, 0xB0, 0x0D, 0xB0, 0x0D, 0xE0, 0x07, 0xE0, 0x07, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 49 <1>
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x82, 0x41, 0x7C, 0x3E, 0x7C, 0x3E, 0x82, 0x41, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 50 <2>
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF8, 0x1F, 0x7C, 0x3E, 0x00, 0x00, // Символ 51 <3>
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x1F, 0xFC, 0x3F, 0x00, 0x00 // Символ 52 <4>
};
#endif // FONT_FONT_SIXSEG_H
// Название шрифта font_sixseg
// Автор шрифта HOME-PC / john
// Дата и время генерации 27.02.2024 10:21:56
// Сгенерировано matrixFont v1.4.7.64
// Кодовая страница ANSI (ASCII 7-битная)
// https://gitlab.com/riva-lab/matrixFont
#ifndef FONT_FONT_SIXSEG_H
#define FONT_FONT_SIXSEG_H
#ifndef FONT_TYPE_MONOSPACED
#define FONT_TYPE_MONOSPACED 0
#endif
#ifndef FONT_TYPE_PROPORTIONAL
#define FONT_TYPE_PROPORTIONAL 1
#endif
#define FONT_FONT_SIXSEG_LENGTH 21
#define FONT_FONT_SIXSEG_START_CHAR 32
#define FONT_FONT_SIXSEG_CHAR_WIDTH 16
#define FONT_FONT_SIXSEG_CHAR_HEIGHT 24
#define FONT_FONT_SIXSEG_FONT_TYPE (FONT_TYPE_PROPORTIONAL)
#define FONT_FONT_SIXSEG_ARRAY_LENGTH (FONT_FONT_SIXSEG_LENGTH * (1 + FONT_FONT_SIXSEG_CHAR_HEIGHT * 2))
const unsigned char font_font_sixseg[FONT_FONT_SIXSEG_ARRAY_LENGTH] =
{
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x60, 0x06, 0x70, 0x06, 0x58, 0x06, 0x4C, 0x06, 0x6C, 0x06, 0x66, 0x06, 0x66, 0x06, 0x63, 0x86, 0x61, 0x86, 0x61, 0xC6, 0x60, 0x66, 0x60, 0x66, 0x60, 0x36, 0x60, 0x32, 0x60, 0x1A, 0x60, 0x0E, 0x60, 0x06, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 32 < >
14, /*N*/ 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF8, 0x1F, 0xFC, 0x3F, 0x00, 0x00, // Символ 33 <!>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x1F, 0xFC, 0x3F, 0x00, 0x00, // Символ 34 <">
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 35 <#>
15, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 36 <$>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 37 <%>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 38 <&>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 39 <'>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 40 <(>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x00, // Символ 41 <)>
9, /*N*/ 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, 0x01, 0x80, 0x01, 0x00, 0x00, // Символ 42 <*>
15, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0xFC, 0x3F, 0xFC, 0x3F, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 43 <+>
15, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x1C, 0x38, 0x18, 0x18, 0x30, 0x0C, 0x30, 0x0C, 0x60, 0x06, 0xE0, 0x07, 0xC0, 0x03, 0x80, 0x01, 0x00, 0x00, // Символ 44 <,>
15, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x06, 0x60, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x82, 0x41, 0xFC, 0x3F, 0x7C, 0x3E, 0x00, 0x00, // Символ 45 <->
9, /*N*/ 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, // Символ 46 <.>
9, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 47 </>
// Digits / Цифры
10, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 48 <0>
13, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x11, 0x88, 0x11, 0x98, 0x19, 0xB0, 0x0D, 0xB0, 0x0D, 0xE0, 0x07, 0xE0, 0x07, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 49 <1>
15, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x82, 0x41, 0x7C, 0x3E, 0x7C, 0x3E, 0x82, 0x41, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x86, 0x61, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, // Символ 50 <2>
14, /*N*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xF8, 0x1F, 0x7C, 0x3E, 0x00, 0x00, // Символ 51 <3>
14, /*N*/ 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x1F, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0xFC, 0x1F, 0xFC, 0x3F, 0x00, 0x00 // Символ 52 <4>
};
#endif // FONT_FONT_SIXSEG_H