mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fontmap und Assembler


Autor: Jochen Hanisch (Firma: freier [VENTUZ] Operator) (joschy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab mal eine Frage bezüglich Fontmaps und Assembler. Mit dem 
FontCreator von Maximilian Thiele kann man sich ja schön die einzelnen 
Zeichen als Bitmuster generieren:

static uint8_t new_Font[] PROGMEM = {
 ...
...
    // font data
    0xFE, 0x01, 0x01, 0x01, 0xFE, 0x00, 0x80, 0x80, 0x80, 0x00, // 48
    0x04, 0x02, 0xFF, 0x00, 0x00, 0x80, // 49
    0x02, 0x81, 0x41, 0x31, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x80, // 50
    0x82, 0x01, 0x11, 0x11, 0xEE, 0x00, 0x80, 0x80, 0x80, 0x00, // 51
    0x60, 0x58, 0x46, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, // 52
    0x9C, 0x0B, 0x09, 0x09, 0xF1, 0x00, 0x80, 0x80, 0x80, 0x00, // 53
    0xFE, 0x11, 0x09, 0x09, 0xF2, 0x00, 0x80, 0x80, 0x80, 0x00, // 54
    0x01, 0xC1, 0x39, 0x05, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, // 55
    0xEE, 0x11, 0x11, 0x11, 0xEE, 0x00, 0x80, 0x80, 0x80, 0x00 // 56
....
Um auf die einzelnen Zeichen zuzugreifen brauche ich aber doch einen 
Offset zur Speicheradresse, z.B. für "1":
static uint8_t new_Font +9; um auf die zweite Zeile zuzugreifen.
Demendsprechend brauche ich wohl noch eine Liste in der die Offsets 
stehen, oder?

Hat man z.B. die Zahl 1200 - 0b0000 0100 1011 0000, konvertiere ich die 
einzelnen Stellen.
Ziffer 1 = Liste_Offsets zweite Position
Ziffer 2 = Liste_Offsets dritte Position
Ziffer 0 = Liste_Offset erste Position
Ziffer 0 = Liste_Offset erste Position

Wie macht ihr das?

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Demendsprechend brauche ich wohl noch eine Liste in der die Offsets
>stehen, oder?

Entweder eine Tabelle, oder eine Berechnung, wenn die Ziffern alle die 
gleiche "Breite" haben.

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deshalb gibt es in den erzeugten Daten ja auch noch den Bereich
// char widths

Wie sich daraus der Offset auf ein Zeichen berechnet, entnimmst du am 
besten der dazugehörigen ks108-library.

Oliver

Autor: Jochen Hanisch (Firma: freier [VENTUZ] Operator) (joschy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahhhh,

    // char widths
    0x05, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,

Auf obiges Bitmuster bezogen; Pos = Char widths * 2 = Anzahl der 
Bitmuster.


Ist für ein ein OLED, SSD1303...

Merci,
Jochen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.