oder auch einem TFT Texte anzeigen zu können, ist es sehr hilfreich, wenn man einen Satz an Buchstaben und Symbolen hat, der mit Hilfe einer Software-Bibliothek einfach als normaler Text nutzbar ist:
Es empfiehlt sich, für diese Art von Buchstaben und Symbolen eine feste Breite und Höhe einzustellen, damit zumindest eine ganze Anzahl von Zeilen auf den Bildschirm passt. Die Nutzung dieser Zeichen innerhalb eines Programms ist am besten durch eine Tabelle möglich. Diese Tabelle enthält dann bereits die Kodierung der Zeichen, die einfach als Nutzdaten an das Display gesendet werden. Diese Tabelle ist idealerweise in derselben Reihenfolge wie die ASCII-Tabelle aufgebaut, sodass die Konvertierungsfunktion nur noch den Dezimalwert des Zeichens plus einen eventuellen Offset nutzen muss, um die Kodierung dieses Zeichens in der Tabelle zu finden.
//font definitions
#define STD_FONT_WIDTH 6 //width of std font: 6 dots
#define STD_FONT_LENGTH 95 //number of items (length of table)
#define GLCD_ASCII_TABLE_OFFSET 0x20 //ASCII Table Offset for internal Font Table
///display related font definitions
#define GLCD_CHARS_PER_LINE GLCD_X_RESOLUTION/STD_FONT_WIDTH //number of characters per line
///ascii table for font
const unsigned char ascii_std_tab[STD_FONT_LENGTH][STD_FONT_WIDTH] PROGMEM = {
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // " ", address 0x20
{0x00, 0x00, 0x2f, 0x00, 0x00, 0x00}, // "!", address 0x21
{0x00, 0x03, 0x00, 0x03, 0x00, 0x00}, // """, address 0x22
{0x0a, 0x3a, 0x0f, 0x3a, 0x0f, 0x0a}, // "#", address 0x23
{0x00, 0x04, 0x2a, 0x3f, 0x2a, 0x10}, // "$", address 0x24
{0x00, 0x26, 0x16, 0x08, 0x34, 0x32}, // "%", address 0x25
{0x10, 0x2a, 0x25, 0x2d, 0x12, 0x28}, // "&", address 0x26
{0x00, 0x00, 0x03, 0x00, 0x00, 0x00}, // "'", address 0x27
{0x00, 0x00, 0x1e, 0x21, 0x00, 0x00}, // "(", address 0x28
{0x00, 0x00, 0x21, 0x1e, 0x00, 0x00}, // ")", address 0x29
{0x00, 0x2a, 0x1c, 0x3e, 0x1c, 0x2a}, // "*", address 0x2a
{0x00, 0x08, 0x08, 0x3e, 0x08, 0x08}, // "+", address 0x2b
{0x00, 0x80, 0x60, 0x00, 0x00, 0x00}, // ",", address 0x2c
{0x00, 0x08, 0x08, 0x08, 0x08, 0x00}, // "-", address 0x2d
{0x00, 0x00, 0x20, 0x00, 0x00, 0x00}, // ".", address 0x2e
{0x00, 0x30, 0x0c, 0x03, 0x00, 0x00}, // "/", address 0x2f
{0x00, 0x1e, 0x23, 0x2d, 0x31, 0x1e}, // "0", address 0x30
{0x00, 0x04, 0x22, 0x3f, 0x20, 0x00}, // "1", address 0x31
{0x00, 0x22, 0x31, 0x29, 0x25, 0x22}, // "2", address 0x32
{0x00, 0x12, 0x21, 0x25, 0x25, 0x1e}, // "3", address 0x33
{0x00, 0x0c, 0x0a, 0x09, 0x3c, 0x08}, // "4", address 0x34
{0x00, 0x27, 0x25, 0x25, 0x25, 0x19}, // "5", address 0x35
{0x00, 0x1e, 0x25, 0x25, 0x25, 0x18}, // "6", address 0x36
{0x00, 0x01, 0x01, 0x39, 0x05, 0x03}, // "7", address 0x37
{0x00, 0x1a, 0x25, 0x25, 0x25, 0x1a}, // "8", address 0x38
{0x00, 0x02, 0x25, 0x25, 0x25, 0x1e}, // "9", address 0x39
{0x00, 0x00, 0x12, 0x00, 0x00, 0x00}, // ":", address 0x3a
{0x00, 0x20, 0x1a, 0x00, 0x00, 0x00}, // ";", address 0x3b
{0x00, 0x08, 0x14, 0x22, 0x00, 0x00}, // "<", address 0x3c
{0x00, 0x14, 0x14, 0x14, 0x14, 0x00}, // "=", address 0x3d
{0x00, 0x22, 0x14, 0x08, 0x00, 0x00}, // ">", address 0x3e
{0x00, 0x02, 0x01, 0x29, 0x05, 0x02}, // "?", address 0x3f
{0x00, 0x1e, 0x21, 0x2d, 0x35, 0x3d}, // "@", address 0x40
{0x00, 0x3c, 0x0a, 0x09, 0x0a, 0x3c}, // "A", address 0x41
{0x00, 0x3f, 0x25, 0x25, 0x25, 0x1a}, // "B", address 0x42
{0x00, 0x1e, 0x21, 0x21, 0x21, 0x12}, // "C", address 0x43
...
}
Da die Erstellung solcher Tabellen sehr mühsam ist, entstand im Rahmen diverser Projekte zur Ansteuerung von Displays ein Tool namens "Charola", mit dem die Erstellung solcher Zeichentabellen deutlich leichter fällt:
Dieses Tool ist in der Lage, Tabellen mit bis zu 500 Zeichen zu erstellen. Dabei sind die Breite und die Höhe frei einstellbar. Die Tabellen können in verschiedenen Kodierungen exportiert werden. Für die oben gezeigte Tabelle sind die folgenden Einstellungen notwendig, die Ausgabe für dieses Zeichen ist im Textfenster sichtbar:
erstellt. Sie ist grundsätzlich unter Linux und unter Windows lauffähig. Getestet wurde sie nur unter Linux.
. Die Konfiguration der Build-Umgebung erfolgt mit cmake in dem Verzeichnis "bin":
Die ausführbare Datei sollte dann in dem "bin"-Verzeichnis zu finden sein.