www.mikrocontroller.net

Forum: Compiler & IDEs Strategie Displayansteuerug Textmode


Autor: Christian J. (elektroniker1968)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei der Programmerstellung für Benedikts Display gibt es noch so einige 
offene Fragen, machbar ist vieles, nur was ist sinnvoll?

Ich möchte gern scrollenden Text haben wie auf dem PC, des weiteren soll 
so wenig rechenzeit wie möglich entstehen, d.h. wiederkehrende Aufgaben 
sollen nur dann erledigt werden wenn etwas zu tun ist.

Vorstellung:

char Buffer[40][20]

beeinhaltet meinen internen Zeichenpuffer.

Direktadressierung ohne Scrollen

sprintf(Buffer[zeile++][spalte},"......
sprintf(Buffer[zeile++][spalte},"......
sprintf(Buffer[zeile++][spalte},"......
...
Display_Write();

schreibe ich da rein, meist wird spalte = 0 sein aber vielleicht nicht 
immer, wenn ich Texte in zwei Spalten haben will.

Die Routine Display_Write(), soll folgendes machen:

Über jede Zeile wird eine Checksumme erzeugt, ob diese sich verändert 
hat. Sie sucht auch die \0 Marke des Stringendes und erzeugt Spaces ab 
dort bis Zeile voll ist, damit keine Reste stehen bleiben, wenn ein 
String kürzer ist als der vorhergehende. Es werden nur diejenigen ganzen 
Zeilen komplett ans Display übertragen, die sich geändert haben.

Scrollfunktion

sprintf(ScrollBuffer,"Text 1......"); Display_Scroll(ScrollBuffer);
sprintf(ScrollBuffer,"Text 2......"); Display_Scroll(ScrollBuffer);
usw.

schreibt stur Zeilen in die Matrix rein und wenn diese voll ist, wird 
jede Zeile eines nach oben kopiert und das Bild neu aufgebaut. sprintf 
nehme ich auch nur, weil mir diese den ganzen String erzeugt wie er 
gedruckt werden soll.

Das Ganze läuft derzeit ohne ISR. Per ISR läuft nur das Abarbeiten des 
Uart Fifo, wenn dieser vollegschrieben wurde.

Ist das gangbar oder gibt es noch pfiffigere Lösungen?

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.