www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Blättern und vertauschen der Zeilen


Autor: Marius (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe ein Problem der Ansteuerung eines LCD Display in Assambler.

Und zwar.

Immer wenn ich einen Text übertrage, welcher die 4 Zeilen ausfüllt wird

erst Zeile 1,3,2,4 ausgefüllt.

Das ist ja auch klar, da es sich ja um ein 2*2x40 Display handelt.

Aber wie kann man das hinbekommen, das er die Reihenfolge 1,2,3,4 
einhält

ohne, dass man die Zeilen schon im Programm in der Reihenfolge 1,3,2,4

Programmiert?


Und ich würde gerne wissen, wie man es hinbekommt, Texte zu blättern, 
also

nach sagen wir 6 Sekunden den nächsten Textteil anzeigen.


Danke.

P.S. Ich habe mal das Programm mit der LCD Routines als Anhang 
beigefügt.



Gruß

Marius

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten geht das, indem du einen zusammenhängenden 
SPeicherbereich reservierst. Mit einem Timerinterupt überträgsat du 
immer 1 Zeichen zum LCD, sodass regelmäßig der SRAM Inhalt ans LCD 
übertragen wird unter berücksichtigung von Zeilen/Spalten 
vertauschungen.

Ab hier kannst du nun einfach auf dem SRAM arbeiten.
Scrollen kannst du dann einfach indem du den Startwert für den SRAM 
bereich verschiebst.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius schrieb:

> Immer wenn ich einen Text übertrage, welcher die 4 Zeilen ausfüllt wird
> erst Zeile 1,3,2,4 ausgefüllt.
> Das ist ja auch klar, da es sich ja um ein 2*2x40 Display handelt.
>
> Aber wie kann man das hinbekommen, das er die Reihenfolge 1,2,3,4
> einhält

Gar nicht.
Das ist in Hardware so festgelegt und du kannst da erst mal nichts daran 
ändern.

Also belibt dir nichts anderes übrig, als das ganze auf Seiten des 
Programms zu lösen.

Du darfst nicht einfach nur Zeichen ans LCD rausblasen und darauf 
vertrauen, dass dir das LCD die schon in die Zeilen umbrechen wird, 
sondern du musst das ein wenig intelligenter machen.
Dazu gibt es 2 Möglichkeiten

* Entweder du machst dir im Programm so etwas wie einen virtuellen
  Bildschirm, bei dem die Zeilen und Zeichen in der richtigen Reihen-
  folge sind. Eine ständig laufende Funktion (zb in einem Interrupt)
  überträgt dann diese Zeichen aufs tatsächliche LCD, wobei sie die
  Zeilenvertauschung berücksichtigt.

* Oder aber dein Ausgabetreiber muss intelligenter werden und ständig
  wissen, wo der Cursor steht und den in die Ausgabe mit einberechnen
  so dass zb beim Zeilende der ersten Zeile nicht mit der 'zweiten
  Zeile' weitergemacht wird, sondern mit der dritten usw.
  Deine erste Funktion auf diesem Pfad ist eine Funktion, die den Cursor
  in eine bestimmte Zeile setzt, wenn du der Funktion sagst, Cursor
  auf Spalte 0, Zeile 1, dann wird der dann auch auf die visuelle
  2.te Zeile gesetzt und nicht auf die 3te Zeile, wie sich das durch
  das Speicherlayout ergibt.


> Und ich würde gerne wissen, wie man es hinbekommt, Texte zu blättern,
> also
>
> nach sagen wir 6 Sekunden den nächsten Textteil anzeigen.

Nach dem die Zeit abgelaufen ist (oder eine Taste gedrückt wurde oder 
was auch immer)
  * LCD löschen
  * Cursor Home
  * Text ausgeben, bis das LCD voll ist oder der Text zu Ende

Wo liegt das Problem?

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja das Problem ist, dass ich noch nicht genug Ahnung von den Sachen 
habe.

Ich habe mir das Programm ja aus dem unter 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

liegten Zeilen zusammen gebastelt ;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius schrieb:
> Naja das Problem ist, dass ich noch nicht genug Ahnung von den Sachen
> habe.

Dann wirst du das lernen müssen.
So ist das nun mal. Es ist noch kein Meister vom Himmel gefallen.

Und nein: Keine Angst vor Rückschlägen. Die gehören mit zum Lernprozess.

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.