einfache Laufschrift ATMEGA8 LCD-Anzeige 2x16

Gast
Ich benutze ein displaytech 162 und ich werde aus dem Datenblatt einfach 
nicht schlau :S

Ich stehe noch ziemlich am Anfang der Progammierung und wäre über Hilfe 
sehr dankbar.
Ist der Controller KS0070 kompatibel zum HD44780?

Displaytech 162-Datenblatt:
http://www.elecont.de/Neue_Dateien/DS_LCD.pdf

Das HD44780-Datenblatt z.B. bei Lady Ada:
http://www.adafruit.com/datasheets/HD44780.pdf#page=11

da könnte man einfach den RAM-Adresszeiger eins weiterschalten. Wenn die 
zweite Zeile in die erste übergehen soll, müßte man jedes Zeichen 
zweimal eintragen, einmal unten rechts und einmal in die unsichtbare 
17.Stelle der oberen Zeile.
Gast
Aaalso ich habe im moment den Quelltext von der 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung 
einfach nur das ein Text da steht. Tolle wäre jetzt wenn der Quelltext 
von rechts nach links quasi durchläuft. Händisches eintragen mit Pause 
und ein Zeichen mehr etc. find ich albern. Es muss doch auch eine 
Möglichkeit geben das mit einer Schleife zu machen.

Rein Theoiretisch müsst ich ja nur ein Bit schieben, oder sehe ich das 
falsch?
Also Das erste Zeichen reinladen, Pause, 1 Buit schieben, wieder 
anschalten, richtig?
Gast
Hi

Du kannst auch einfach deinen Text, wenn er nicht zu lang ist, in den 
nicht sichtbaren Bereich einer Zeile schreiben und das Ganze mit den 
Shiftbefehlen des Displays in den sichtbaren Bereich schieben.

MfG Spess
Gast
Sandra schrieb:
> Also Das erste Zeichen reinladen, Pause, 1 Buit schieben, wieder
> anschalten, richtig?

Klar kannst du auch jedesmal das Display neu beschreiben, aber du kannst 
auch im Display mittels einen einzelnen Befehls den Inhalt shiften.
Jungs.
Der Display Shift ist zwar nett, aber so nicht zu gebrauchen.
Er shiftet das komplette Display. Für eine Laufschrift, die nur in Zeile 
1 stattfinden soll, während Zeile 2 statisch immer das gleiche anzeigt, 
ist das mehr Aufwand als es wert ist.

> Tolle wäre jetzt wenn der Quelltext
> von rechts nach links quasi durchläuft. Händisches eintragen
> mit Pause und ein Zeichen mehr etc. find ich albern. Es muss
> doch auch eine Möglichkeit geben das mit einer Schleife zu machen.

Natürlich geht das. Du musst es nur programmieren. So schwer ist das 
nicht. Und nein, du brauchst dazu das Datenblatt nicht. Du musst dir nur 
überlegen, dass du im Grunde deine Laufschrift vorne und hinten logisch 
gesehen mit Leerzeichen auffüllen musst. Ist dein Display 8 Zeichen 
breit und willst du den Text "Hallo World" durchlaufen lassen, so füllst 
du gedanklich den Text mit 8 Leerzeichen vorne und hinten auf.

  "        Hallo World        "

und aus diesem Text zeigst du immer nur einen Ausschnitt (der 8 Zeichen 
breit ist) an.

Im ersten Schritt ist das
  "        "

im zweiten Schritt ist das
  "       H"

im dritten Schritt ist das
  "      Ha"

usw. usw. bis du ganz zum Schluss wieder 8 Leerzeichen anzeigst. Und 
schon sieht es für deinen Benutzer so aus, als ob da eine Laufschrift 
durchläuft.


Ist eine ganz einfache Programmieraufgabe.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.