Dot-Matrix-LCD-Displays

Hallole,

trotz wiederholtem Studium der einschlägigen Dokus ist mir bei den gängigen Dot-Matriy-LCD-Displays mit dem Controller KS0066 u.ä. (also auch den von Reichelt vertriebenen Displays LCD161A usw.) u.a. nicht klar, wie ich das Umschalten von Schreiben zu Lesen managen Daten-konfliktfrei managen soll. Vielleicht kann mir es jemand erklären: Das Schreiben ist noch klar: Bei allen Befehlen mit gelöschtem R/W-Bit müssen an den I/Os D0-D7 sowie RS die entsprechend Pegel anliegen (und an R/W natürlich L). Dann wechselt E von H auf L - wobei mir nicht klar ist, ob E die ganze Zeit schon auf H liegen kann und erst dann, wenn die gültigen Daten anliegend, auf L wechseln muß, oder _erst_ von L auf H gehen darf, wenn die gültigen Daten anliegend und dann für die Zeit PW(EH) auf H bleiben muß, bis er auf L wechselt (d.h. der "Normalzustand" für E wäre L und H würde nur für die kurze Zeit PW(EH) während/vor der Übernahme der Daten anliegen): Das timing-Diagramm legt das letztgenannte procedere nahe - andererseits ist in den Doku immer die Rede davon, daß die Daten erst beim Wechsel von H auf L am E-Eingang übernommen werden. Wenn jetzt Daten aus dem Display gelesen werden soll, muß R/W auf H gesetzt werden. Dafür gibt es ja nur zwei Befehle: Lesen des Busy-Flag und des Adreßzählers sowie des Display- oder Zeichen-RAM. Auch hier wird der Befehl anscheinend erst ausgeführt, wenn E von H auf L wechselt. Aber wie lange bleiben die Daten an D0-D7 stehen? Solange E auf L ist (d.h. D0-D7 werden hochohmig, sobald E auf H wechselt)? Oder bis R/W wieder auf L geht? Oder gar bis zur Ausführung des nächsten Write-Befehls? Letzteres kann doch wohl nicht sein, denn wenn D0-D7 als Ausgang fungieren, können keine Daten an diese Pins gelegt werden. Mir würde es naheliegend erscheinen, daß allein der Pegel am R/W-Eingang bestimmt, ob D0-D7 als Input oder als Output fungieren - aber in den Dokus finde ich keinen Hinweis. Nicht klar ist mir auch, ob beim einzeiligen 16-Zeichen-Display der Controller das Display nach außen als eine Zeile behandelt. In den Doku ist zwar erklärt, daß der Controller das Display als zweizweiliges Display á 8 Zeichen anspricht, weswegen die zweiten 9 Zeichen nicht aber Adresse 08h zu finden seien sondern erst ab Adresse

40h. Andererseits ist aber erwähnt, daß eine Shift-Operation beide Teile des Displays, also bei 8-Zeichen-Gruppen, zugleich betrifft - im Unterschied zu einem "echten" 2-Zeilen-Display, bei dem sich die Shift-Operation nur auf die angesprochene Zeile auswirken soll. D.h. mir ist nicht klar, ob ich beim Schreiben in das Display nach den ersten acht Zeichen einfach weiterschreiben kann, so als ob der Controller nach außen das Display als 1 Zeile zu 16 Zeichen behandelt, oder ob ich nach dem 8. Zeichen die Adresse mit dem "Set DD RAM Adress"-Befehl (D7=1) auf 40h setzen muß, also das Display auch von außen als zwei hintereinandergesetze Zeilen behandeln muß.

Beste Grüße

Dr. Michael König

--
    RA Dr. M. Michael König * Anwaltskanzlei Dr. König & Coll.
          D-65843 Sulzbach/Ts. * Antoniter-Weg 11 
 Click to see the full signature
Reply to
RA Dr.M.Michael König
Loading thread data ...

E ist die "Enable"-Leitung, welche im Ruhezustand auf L liegt. Die anderen Steuerleitungen(R/-W, RS) dürfen sich nur ändern wenn E auf L liegt.

Beim Schreibvorgang liesst der Displaycontroller die Daten bei der fallenden Flanke des Enable-Signals.

Beim Lesen schaltet der Displaycontroller die Daten auf D0-D7 durch, sobald E auf H geht. Der Bus Master könnte diese Daten dann wiederum bei der fallenden Flanke von E speichern, was aber nicht zwingend notwendig ist. E muss nur lange genug H sein. Geht E dann wieder auf L gibt der Displaycontroller die Datenleitungen frei.

Diese Art der Steuerleitungen rührt von der 6800(0)-Mikroprozessorserie her. Dazu gibt es Literatur, die die Busarbitrierung in allen Details erläutert; vielleicht auch ein Hilfe.

So ein HD44780 Displaycontroller weiss leider nicht, welches LCD-Glas und welche Zeilen-/Spaltentreiber mit Ihm verbunden wurden; er kann also nicht unterscheiden ob er in einem 1x8 2x16 oder 1x40 Display steckt. Daher hat der Displaycontroller keine Möglichkeit die Eigenheiten der einzelnen Displays zu korrigeren. Display-Shift wird meist nicht wie erwartet funk- tionieren.

Es ist notwendig die DD-Ram Adresse bei diesem Display nach dem 8. Zeichen neu zu setzten, da der Displaycontroller sonst im 'unsichtbaren' RAM-Bereich zwischen dem 8. und dem 64. Zeichen weiterschreiben würde.

Gruß, Robin Adams snipped-for-privacy@adams-online.de

Reply to
Robin Adams

Ruhezustand ist: R/W = egal, Daten=egal, E=low

Der Schreibvorgang sieht so aus: R/W auf low, Daten ausgeben, E=high, E wieder low. Mit der fallenden Flanke von E werden die Daten übernommen.

Der Lesevorgang entsprechend: R/W=high, Datenleitungen=Eingang/High-Z, E=high. Solange E=high, gibt das Display die Daten aus. Wenn eingelesen, E wieder auf low.

Achtung: R/W muß den gültigen Pegel haben, bevor E=high, sonst ist es relativ undefiniert, was rauskommt.

Alle 1x16-Displays, die mir untergekommen sind, haben die Stellen 1-8 an den Adressen 00h-07h und 9-16 an den Adressen 40h-47h. Das bedeutet, nach dem Schreiben von Zeichen 8 muß man die Adresse von Hand auf 40h setzen oder entsprechend viele Dummy-Zeichen ausgeben (vorausgesetzt der Entry-Mode steht auf Rechts-Schieben des Cursors, Befehl 06h ins Steuerregister).

Wie das mit dem automatischen Schieben des Displays ist (Entry-Mode z.B. 07h), weiß ich nicht so genau, aber ich denke, das betrifft alle Zeichen, d.h. beim Rechtsschieben der Anzeige verschwindet das Zeichen an 9. Stelle und taucht nach (64-8) Schreiboperationen an 8. Stelle wieder auf. Aber ohne Gewähr.

Hoffe es hilft.

Gruß

Tassilo

--
µC Assembler-IDE für AVR, 8051, Z80, 8048 =>
http://www.theeg.de/aside/index.html
 Click to see the full signature
Reply to
Tassilo Heeg

Am Sat, 04 Oct 2003 20:34:55 +0200, meinte Robin Adams :

Erst mal danke (stellvertretend für alle) für die Erklärungen.

Wieso wird das in der Doku eigentlich nicht so klar gesagt?

Aha! Ich hätte erwartet, daß auch diese wichtige Tatsache klar in den Dokus steht. Sicher, wenn man das alles definitiv weiß, sagt man leicht: "Das ergibt sich aus dem Read-Timing-Diagramm, weil die "effective data" erst t(DDR) nach dem Wechsel von L auf H an E erscheinen".

Also bei E auf L sind die D0-D7 hochohmig bzw. als Eingang geschaltet.

Naja, bei der Initialisierung wird die Umgebung ja eingestellt. Dennoch wird die 16-Zeile beim 1x16-Display anders behandelt als eine der beiden 16-Zeioecne bei einem 2x16-Display.

Was für Umstand! Beim 2x16-Display kann man aber einfach weiterschreiben. Wie muß ich das Display auf 1x16-Display korrekt parametrisieren? Ich dachte es so verstanden zu haben, daß das 1x16-Display als "1/16 duty" bezeichnet wird. Aber bei der Beschreibung des Function-Set-Kommandos wird "1/16 duty" im Zusammenhang mit 2-Zeilen-Displays verwendet. Lautet das erste (untere) Nibble des Function-Set-Kommandos für ein

1x16-Display also 00XX oder 10XX (das 16er Dislay kann ja wohl keine 5x10-Zeichen darstellen, so daß DB2 immer 0 sein muß ...)?

Beste Grüße

Dr. Michael König

--
    RA Dr. M. Michael König * Anwaltskanzlei Dr. König & Coll.
          D-65843 Sulzbach/Ts. * Antoniter-Weg 11 
 Click to see the full signature
Reply to
RA Dr.M.Michael König

Schau Dir mal auf

formatting link
die untere Tabelle auf Seite 5 an. Es kommt halt darauf an, ob Du ein

1x16 oder ein 1x16(8+8) Display hast. Über der Tabelle steht dann auch für Set-Kommando: N( == DB2) 1: zweizeiliges und vierzeiliges Display; auch 1x16 (8+8) Version 0: einzeiliges Display

Du solltest Dir also erst einmal klar darüber werden, welches Display Du hast.

Tschö Dirk

Reply to
Dirk Ruth

Am Sun, 05 Oct 2003 13:44:07 +0200, meinte Dirk Ruth :

Es soll das "normale" 1x16-Module sein, was z.B. bei Conrad oder Reichelt angeboten wird.

Was weiß ich, was das wirklich für ein Display ist? Die Dinger werden als 1x16 bezeichnet, laut Doku aber vom Controller als 2 x 8 behandelt. Deswegen weiß ich ja nicht, ob sie als einzeilig (als das sie erscheinen und verkauft werden) oder als zweizeilig (als das sie der Controller wohl behandelt) parametrisiert werden.

Beste Grüße

Dr. Michael König

--
    RA Dr. M. Michael König * Anwaltskanzlei Dr. König & Coll.
          D-65843 Sulzbach/Ts. * Antoniter-Weg 11 
 Click to see the full signature
Reply to
RA Dr.M.Michael König

Verkauft werden beide als einzeilig, was sie ja auch sind. Und wenn sie laut Doku als zweizeilig angesteuert werden sollen, dann hast Du wohl ein 1x16(8+8) Display.

Reichelt verkauft die von

formatting link
da kann man dann auch mal per Email nachfragen.

Was Conrad verkauft ... Naja frag einfach mal Conrad.

Tschö Dirk

Reply to
Dirk Ruth

Am Sun, 05 Oct 2003 19:03:50 +0200, meinte Dirk Ruth :

Optisch - ja.

Das ist gerade die Frage, ob sie auch als zweizeilig parametrisiert werden sollen/müssen.

Witzig. Abgesehen davon, daß es verläßlicher ist, hier nachzufragen, da die Leute, die solche Display schon einal verwendet haben, wirklich wissen, was Sache ist, gibt es offenbar nur diese Type von

1x16-Display. In allen Doku (egal woher) findet man denselben Hinweis, daß der Controller das Display als 2zeiliges Display ansteuert.

Beste Grüße

Dr. Michael König

--
    RA Dr. M. Michael König * Anwaltskanzlei Dr. König & Coll.
          D-65843 Sulzbach/Ts. * Antoniter-Weg 11 
 Click to see the full signature
Reply to
RA Dr.M.Michael König
[1x16 LCD als 2x8]

Das liegt ganz klar an den Eigenschaften des HD44780: der hat nur 40 Spaltenausgänge (jedes Zeichen 5 Spalten = 8 Zeichen), aber 16 Zeilenausgänge (jedes Zeichen 8 Zeilen = 2 Zeichen). Also wird das Display als 2x8 angeschlossen, um einen Erweiterungschip einzusparen.

Gruß, Arne

Reply to
Arne Rossius

Dürfte beim Ausprobieren nichts kaputt gehen.

Scheinen auch wirklich die häufigsten zu sein. Ich würde mich aber nicht darauf verlassen. Bei den preiswerten Versendern (nicht Distributoren) kann der eine oder andere Type auch mal wechseln, wenn ein Chinese gerade mal auf seinem Kahn die Palette diese Woche besonders günstig anbietet.

Tschö Dirk

Reply to
Dirk Ruth

Es gibt scheinbar aber auch andere.

formatting link

Tschö Dirk

Reply to
Dirk Ruth

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.