Welche Einstellungen braucht ein SSD1306-OLED?
Spalten je Page · LSB zuerst Spalten je Page, LSB zuerst, leuchtendes Pixel = 1 – wenn Sie die Bytes direkt in den Displayspeicher schreiben.
Text und Bilder in C-Arrays für SSD1306, SH1106, ST7920 und Adafruit GFX umwandeln. Scharfe 12×12- und 16×16-Pixelfonts, alle vier Scanmodi von PCtoLCD2002 und ein Decoder für unbekannte Arrays.
Systemschriften sind geglättete Konturen, unter etwa 20 px brechen Striche ab oder laufen zusammen. Für 12 und 16 px nehmen Sie die Pixelfonts oben.
Bild hierher ziehen oder klicken zum Auswählen
PNG, JPG, GIF, BMP, WebP oder SVG – ein Logo, Icon oder Screenshot
Dunkle Pixel des Bildes werden zu leuchtenden Pixeln auf dem Display. Transparente Flächen zählen als Hintergrund.
Ein Font-Array aus einem alten Projekt oder Tutorial, und Sie wissen nicht, wie es erzeugt wurde? Fügen Sie es hier ein: Jede Scanrichtung und Bitreihenfolge wird nebeneinander gezeichnet, und die lesbare verrät die Einstellungen.
Passt zum Page-Speicher von SSD1306 / SSD1309 / SH1106 / ST7565 und zu MicroPython framebuf.MONO_VLSB – die Bytes direkt ans Display schreiben.
Leuchtendes Pixel = 1, Glyphe aus GNU Unifont. Vergleichen Sie diese Bytes mit Ihrem eigenen Array, um zu erkennen, mit welchen Einstellungen es erzeugt wurde.
| Scanrichtung | Bitreihenfolge | Bytes (hex) |
|---|---|---|
| Zeilenweise (horizontale Bytes) | MSB zuerst — erstes Pixel in Bit 7 | 01 00 01 00 01 00 01 00 3F F8 21 08 21 08 21 08 21 08 21 08 3F F8 21 08 01 00 01 00 01 00 01 00 |
| Zeilenweise (horizontale Bytes) | LSB zuerst — erstes Pixel in Bit 0 | 80 00 80 00 80 00 80 00 FC 1F 84 10 84 10 84 10 84 10 84 10 FC 1F 84 10 80 00 80 00 80 00 80 00 |
| Spaltenweise (vertikale Bytes) | MSB zuerst — erstes Pixel in Bit 7 | 00 00 00 00 0F F0 08 20 08 20 08 20 08 20 FF FF 08 20 08 20 08 20 08 20 0F F0 00 00 00 00 00 00 |
| Spaltenweise (vertikale Bytes) | LSB zuerst — erstes Pixel in Bit 0 | 00 00 00 00 F0 0F 10 04 10 04 10 04 10 04 FF FF 10 04 10 04 10 04 10 04 F0 0F 00 00 00 00 00 00 |
| Spalten je Page (vertikale Bytes, SSD1306-Page-Reihenfolge) | MSB zuerst — erstes Pixel in Bit 7 | 00 00 0F 08 08 08 08 FF 08 08 08 08 0F 00 00 00 00 00 F0 20 20 20 20 FF 20 20 20 20 F0 00 00 00 |
| Spalten je Page (vertikale Bytes, SSD1306-Page-Reihenfolge) | LSB zuerst — erstes Pixel in Bit 0 | 00 00 F0 10 10 10 10 FF 10 10 10 10 F0 00 00 00 00 00 0F 04 04 04 04 FF 04 04 04 04 0F 00 00 00 |
| Zeilen je Streifen (horizontale Bytes, 8-Pixel-Streifen) | MSB zuerst — erstes Pixel in Bit 7 | 01 01 01 01 3F 21 21 21 21 21 3F 21 01 01 01 01 00 00 00 00 F8 08 08 08 08 08 F8 08 00 00 00 00 |
| Zeilen je Streifen (horizontale Bytes, 8-Pixel-Streifen) | LSB zuerst — erstes Pixel in Bit 0 | 80 80 80 80 FC 84 84 84 84 84 FC 84 80 80 80 80 00 00 00 00 1F 10 10 10 10 10 1F 10 00 00 00 00 |
Pixelfonts: GNU Unifont (16 px) und Fusion Pixel Font (12 px), beide unter der SIL Open Font License 1.1. Lizenztexte
Vom Engineering-Team von Go Tools gebaut und verifiziert.
Spalten je Page · LSB zuerst Spalten je Page, LSB zuerst, leuchtendes Pixel = 1 – wenn Sie die Bytes direkt in den Displayspeicher schreiben.
Zeilenweise · MSB zuerst Zeilenweise, MSB zuerst, leuchtendes Pixel = 1, jede Zeile auf ganze Bytes aufgefüllt.
32 Bytes 32 Bytes in jeder Scanrichtung. 12 × 12 sind 24 Bytes, ein 8 × 16-ASCII-Zeichen 16.
逆向 = LSB zuerst 顺向 = MSB zuerst (erstes Pixel in Bit 7); 逆向 = LSB zuerst (erstes Pixel in Bit 0).
Die meisten grafischen OLED- und LCD-Controller – darunter SSD1306, SH1106 und ST7565 – haben keine eingebaute Schriftart. Um ein Zeichen anzuzeigen, kopiert die Firmware ein kleines Raster aus Pixeln (an/aus) in den Displayspeicher: ein Bit pro Pixel, acht Pixel pro Byte. Das Umwandeln einer Glyphe in diese Bytes heißt in chinesischen Embedded-Tutorials 取模 – genau die Aufgabe, die das Windows-Programm PCtoLCD2002 seit Jahren erledigt.
Die Bytes allein reichen aber nicht. Dasselbe 16 × 16-Zeichen lässt sich auf vier Arten packen (zeilenweise, spaltenweise, Spalten je Page, Zeilen je Streifen), und jede Art kann das erste Pixel in Bit 7 oder Bit 0 legen. Acht Bytefolgen beschreiben dieselbe Glyphe, und ein Display zeichnet nur eine davon korrekt. Deshalb erscheint ein aus einem Tutorial kopierter Font so oft gespiegelt, halbiert oder gedreht.
// 中 (16x16), pages of columns, LSB first, lit = 1 — SSD1306 page order
const unsigned char zhong[32] = {
0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00
};
// First 16 bytes = page 0 (rows 0-7), one byte per column, bit 0 = top row Browserschriften sind geglättete Konturen; bei 12 px in einer Song-Schrift per Schwellwert binarisiert, verschwinden die waagerechten Striche von 中 einfach. Dieses Tool bringt deshalb echte Bitmap-Fonts mit: Der 16 × 16-Font deckt alle 6.763 GB2312-Zeichen ab, dem 12 × 12-Font fehlen 143 seltene Zeichen – sie werden mit einer Systemschrift gezeichnet und markiert.
Zeilenweise, spaltenweise, Spalten je Page und Zeilen je Streifen, jeweils MSB zuerst oder LSB zuerst, leuchtendes Pixel = 1 oder 0. Die Optionsnamen folgen PCtoLCD2002, ihre Bedeutung ist am SSD1306-Datenblatt und an gängigen OLED-Beispielprojekten geprüft – so können Sie dieselben Einstellungen wählen, die ein bestehendes Projekt verwendet.
Wählen Sie SSD1306, Adafruit GFX oder XBM, und die Optionen werden für Sie gesetzt. Ändern Sie eine Option von Hand, zeigt das Tool an, welche Displays und Bibliotheken diese Bytereihenfolge lesen – oder dass es keine gibt.
Fügen Sie ein Font-Array unbekannter Herkunft ein, und alle acht Lesarten aus Scanrichtung und Bitreihenfolge werden nebeneinander gezeichnet. Die lesbare verrät die Einstellungen; ein Klick übernimmt sie.
Logos, Icons und Fotos werden auf Ihre Displaygröße skaliert und per Schwellwert, Floyd–Steinberg- oder Atkinson-Dithering umgewandelt. Transparente Flächen zählen als Hintergrund, und der Schwellwert wirkt in jedem Modus.
2-D-Arrays im C51-Stil mit /*"中",0*/-Kommentaren, Arduino PROGMEM mit Offsets, MicroPython-bytearray-Dictionaries, A51-DB-Zeilen oder reines Hex. Der erzeugte C-Code kompiliert sauber mit -Wall -Wextra -pedantic.
中
00 00 F0 10 10 10 10 FF 10 10 10 10 F0 00 00 00 00 00 0F 04 04 04 04 FF 04 04 04 04 0F 00 00 00
32 Bytes: 16 Spalten von Page 0 (Zeilen 0–7), dann 16 Spalten von Page 1 (Zeilen 8–15). Im 0xFF in Spalte 7 ist jedes Bit gesetzt: Der senkrechte Strich läuft durch alle acht Zeilen beider Pages.
中
01 00 01 00 01 00 01 00 3F F8 21 08 21 08 21 08 21 08 21 08 3F F8 21 08 01 00 01 00 01 00 01 00
Zwei Bytes pro Zeile, 16 Zeilen. 0x01 0x00 ist nur der Mittelstrich: Das Pixel ganz links ist Bit 7 des ersten Bytes, also landet das Pixel in Spalte 7 in Bit 0. Schicken Sie diese Bytes per Page-Write an ein SSD1306, kommt Pixelmüll heraus – dieselbe Glyphe, anders gepackt.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
ASCII-Zeichen sind halb so breit: 8 × 16 sind 16 Bytes, zeilenweise ein Byte pro Zeile. Haken Sie „Halbbreiten Zeichen (A–Z, 0–9) die volle Zellbreite geben“ an, wenn Ihr Treiber für jede Glyphe 16 × 16 erwartet.
中 (12 × 12, zeilenweise, MSB zuerst)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Jede 12-Pixel-Zeile braucht zwei Bytes; die letzten vier Bits des zweiten Bytes sind Auffüllung. 12 Zeilen × 2 Bytes = 24. Jede Display-Bibliothek adressiert Zeilen als (width + 7) / 8 Bytes, dichter gepackte Bits würden sie also alle aus dem Tritt bringen.
Text wird mit einem echten Pixelfont gerendert: 12 × 12 (Fusion Pixel) oder 16 × 16 (GNU Unifont), ASCII in halber Breite. Für Logos und Icons wechseln Sie in den Tab „Bild“ und stellen die Zielgröße ein, etwa 128 × 64.
SSD1306 / SH1106 / ST7565 brauchen vertikale Bytes in Page-Reihenfolge, das oberste Pixel in Bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap und LVGL brauchen horizontale Bytes, das linke Pixel in Bit 7. XBM / U8g2 drawXBM ist genauso, nur mit dem linken Pixel in Bit 0.
Die Vorschau zeigt genau die Bitmap, die kodiert wird. Ein Klick auf ein Pixel schaltet es um; mit den Verschiebefeldern rücken Sie die Glyphe zurecht.
Zur Wahl stehen C (PCtoLCD2002-C51-Stil), Arduino PROGMEM, MicroPython bytearray, A51-Assembler oder reines Hex. Die erste Zeile der Ausgabe hält Scanrichtung, Bitreihenfolge und Glyphengröße fest, das Array dokumentiert sich also selbst.
Horizontale Bytes mit falscher Bitreihenfolge. Adafruit GFX drawBitmap() braucht MSB zuerst; XBM und U8g2 drawXBM() brauchen LSB zuerst.
U8g2 drawXBM() mit Bytes „MSB zuerst“ gefüttert
drawXBM() → XBM-Voreinstellung (zeilenweise, LSB zuerst)
Vertikale Bytes mit falscher Bitreihenfolge. Controller vom Typ SSD1306 legen D0 in die oberste Zeile und brauchen daher LSB zuerst.
Spalten je Page, MSB zuerst → SSD1306
Spalten je Page, LSB zuerst → SSD1306
Spaltenweise und Spalten je Page verwechselt. Beide liefern nur bei Glyphen bis 8 Pixel Höhe dieselben Bytes; bei 16 Pixeln unterscheidet sich die Bytereihenfolge.
Spaltenweise → SSD1306-Page-Writes
Spalten je Page → SSD1306-Page-Writes
Eine Spiegelung an der Diagonale heißt: Horizontale Bytes wurden als vertikale gelesen (oder umgekehrt). Dunkle Schrift auf hellem Grund heißt: Leuchtend = 0 wurde gewählt, wo das Display leuchtend = 1 erwartet.
Zeilenweise Bytes in eine SSD1306-Page geschrieben
Array im Decoder-Tab einfügen und die lesbare Vorschau wählen
Konvertierungswerkzeuge
Zahlen zwischen Binär, Hexadezimal, Dezimal, Oktal und beliebigen Basen (2–36) sofort konvertieren. Kostenlos, privat, ohne Anmeldung — alles läuft in Ihrem Browser.
Konvertierungswerkzeuge
Ganzzahl mit Vorzeichen eingeben und Betrag-Vorzeichen, Einerkomplement, Zweierkomplement und Offset-Binär auf einmal erhalten, von 4 bis 64 Bit. Oder ein Bitmuster bzw. Hex-Byte einfügen und alle fünf Lesarten sehen.
Konvertierungswerkzeuge
Linux-Dateiberechtigungen zwischen Oktal (755, 644) und rwx-Symbolen umrechnen. chmod-Befehle kopieren, riskante Modi wie 777 erkennen — kostenlos, direkt im Browser.
Konvertierungswerkzeuge
Konvertieren Sie HEX zu RGB, HSL, OKLCH, OKLAB und CMYK direkt im Browser — jedes Format mit einem Klick kopieren. Kostenlos, ohne Anmeldung, Ihre Farben verlassen die Seite nie.
Konvertierungswerkzeuge
Koordinaten in jedem Format umrechnen — Dezimalgrad, Grad Minuten Sekunden, Dezimalminuten — in UTM, Web Mercator, GCJ-02 (AMap) und BD-09 (Baidu). Erkennt lat,lng vs. lng,lat, Stapel als CSV. Läuft im Browser.
Konvertierungswerkzeuge
Konvertieren Sie HEX-Farben direkt im Browser in CMYK. Naive sRGB-basierte Näherung für Druckvorschauen. Kostenlos, ohne Anmeldung, Ihre Farben bleiben lokal.