Forum: Compiler & IDEs Strategie Displayansteuerug Textmode


von Christian J. (elektroniker1968)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.