Files
templates/c/st7789/st7789_font.c
Andrey Kruchinkin c7798c02db feat(st7789): драйвер TFT-панелей ST7789V поверх SPI
Перенесён из KONOR_ds18b20/lib/st7789; в OpticalTester лежала побайтово
такая же копия.

Ядро не включает заголовки МК и не заводит кадрового буфера: примитивы
пишут пиксели потоком, поэтому драйвер работает на МК с единицами
килобайт ОЗУ. Платформа подключается через ST7789_Io: обязательны
write, set_command и delay_ms, остальное — по разводке платы.
2026-08-23 01:15:11 +03:00

111 lines
5.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file st7789_font.c
* @brief Таблица знакогенератора 5x7 для кодов 0x20..0x7F.
*
* Глиф хранится пятью байтами столбцов слева направо; бит 0 каждого байта —
* верхняя строка. Шестой столбец знакоместа драйвер оставляет пустым, поэтому
* шаг символа равен ST7789_FONT_WIDTH. Код 0x7F занят знаком градуса, все
* остальные позиции совпадают с ASCII.
*/
#include "st7789_font.h"
const uint8_t ST7789_Font5x7[ST7789_FONT_GLYPHS][ST7789_FONT_GLYPH_BYTES] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0x20 пробел */
{ 0x00, 0x00, 0x5F, 0x00, 0x00 }, /* 0x21 '!' */
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, /* 0x22 '"' */
{ 0x14, 0x7F, 0x14, 0x7F, 0x14 }, /* 0x23 '#' */
{ 0x24, 0x2A, 0x7F, 0x2A, 0x12 }, /* 0x24 '$' */
{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 0x25 '%' */
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, /* 0x26 '&' */
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 0x27 ''' */
{ 0x00, 0x1C, 0x22, 0x41, 0x00 }, /* 0x28 '(' */
{ 0x00, 0x41, 0x22, 0x1C, 0x00 }, /* 0x29 ')' */
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, /* 0x2A '*' */
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, /* 0x2B '+' */
{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 0x2C ',' */
{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 0x2D '-' */
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, /* 0x2E '.' */
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 0x2F '/' */
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, /* 0x30 '0' */
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, /* 0x31 '1' */
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 0x32 '2' */
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, /* 0x33 '3' */
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, /* 0x34 '4' */
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 0x35 '5' */
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, /* 0x36 '6' */
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, /* 0x37 '7' */
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 0x38 '8' */
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, /* 0x39 '9' */
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 0x3A ':' */
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, /* 0x3B ';' */
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 0x3C '<' */
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 0x3D '=' */
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, /* 0x3E '>' */
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 0x3F '?' */
{ 0x32, 0x49, 0x79, 0x41, 0x3E }, /* 0x40 '@' */
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, /* 0x41 'A' */
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, /* 0x42 'B' */
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, /* 0x43 'C' */
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, /* 0x44 'D' */
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, /* 0x45 'E' */
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, /* 0x46 'F' */
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, /* 0x47 'G' */
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, /* 0x48 'H' */
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, /* 0x49 'I' */
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, /* 0x4A 'J' */
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, /* 0x4B 'K' */
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, /* 0x4C 'L' */
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, /* 0x4D 'M' */
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, /* 0x4E 'N' */
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, /* 0x4F 'O' */
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, /* 0x50 'P' */
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, /* 0x51 'Q' */
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, /* 0x52 'R' */
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, /* 0x53 'S' */
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, /* 0x54 'T' */
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, /* 0x55 'U' */
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, /* 0x56 'V' */
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, /* 0x57 'W' */
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 0x58 'X' */
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, /* 0x59 'Y' */
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 0x5A 'Z' */
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, /* 0x5B '[' */
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, /* 0x5C '\' */
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, /* 0x5D ']' */
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, /* 0x5E '^' */
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 0x5F '_' */
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, /* 0x60 '`' */
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 0x61 'a' */
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, /* 0x62 'b' */
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, /* 0x63 'c' */
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, /* 0x64 'd' */
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, /* 0x65 'e' */
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, /* 0x66 'f' */
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, /* 0x67 'g' */
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, /* 0x68 'h' */
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, /* 0x69 'i' */
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, /* 0x6A 'j' */
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, /* 0x6B 'k' */
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, /* 0x6C 'l' */
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, /* 0x6D 'm' */
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, /* 0x6E 'n' */
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 0x6F 'o' */
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, /* 0x70 'p' */
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, /* 0x71 'q' */
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, /* 0x72 'r' */
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 0x73 's' */
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, /* 0x74 't' */
{ 0x3C, 0x40, 0x40, 0x20, 0x1C }, /* 0x75 'u' */
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, /* 0x76 'v' */
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, /* 0x77 'w' */
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 0x78 'x' */
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, /* 0x79 'y' */
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, /* 0x7A 'z' */
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, /* 0x7B '{' */
{ 0x00, 0x00, 0x7F, 0x00, 0x00 }, /* 0x7C '|' */
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, /* 0x7D '}' */
{ 0x08, 0x04, 0x08, 0x10, 0x08 }, /* 0x7E '~' */
{ 0x00, 0x06, 0x09, 0x09, 0x06 }, /* 0x7F знак градуса */
};