Dot-Matrix-LCD-Displays

  • Thread starter RA Dr.M.Michael König
  • Start date
R

RA Dr.M.Michael König

Guest
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
D-65929 Frankfurt a.M. * Dalbergstraße 4
nospam@drkoenig.de [ersetze "nospam" durch "info"] * www.drkoenig.de
 
Hallo!

RA Dr.M.Michael König wrote:
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:
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
robin@adams-online.de
 
Hallo!

On Sat, 04 Oct 2003 18:18:45 +0200, RA Dr.M.Michael König
<nospam@drkoenig.de> wrote:
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
================================================================
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
 
Am Sat, 04 Oct 2003 20:34:55 +0200, meinte Robin Adams
<robin@adams-online.de>:

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

E ist die "Enable"-Leitung, welche im Ruhezustand auf L liegt.
Wieso wird das in der Doku eigentlich nicht so klar gesagt?

Beim Lesen schaltet der Displaycontroller die Daten auf D0-D7 durch,
sobald E auf H geht.
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".

notwendig ist. E muss nur lange genug H sein. Geht E dann wieder auf L
gibt der Displaycontroller die Datenleitungen frei.
Also bei E auf L sind die D0-D7 hochohmig bzw. als Eingang geschaltet.

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.
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.

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.
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
D-65929 Frankfurt a.M. * Dalbergstraße 4
nospam@drkoenig.de [ersetze "nospam" durch "info"] * www.drkoenig.de
 
On Sun, 05 Oct 2003 12:53:48 +0200, RA Dr.M.Michael König
<nospam@drkoenig.de> wrote:

Am Sat, 04 Oct 2003 20:34:55 +0200, meinte Robin Adams
robin@adams-online.de>:




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.

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ß ...)?
Schau Dir mal auf http://www.lcd-module.de/deu/pdf/doma/2_20.pdf
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
 
Am Sun, 05 Oct 2003 13:44:07 +0200, meinte Dirk Ruth
<d.ruth@expressnet.info>:

Wie muß ich das Display auf 1x16-Display korrekt parametrisieren? Ich
Schau Dir mal auf http://www.lcd-module.de/deu/pdf/doma/2_20.pdf
die untere Tabelle auf Seite 5 an. Es kommt halt darauf an, ob Du ein
1x16 oder ein 1x16(8+8) Display hast.
Es soll das "normale" 1x16-Module sein, was z.B. bei Conrad oder
Reichelt angeboten wird.

Du solltest Dir also erst einmal klar darüber werden, welches Display
Du hast.
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.

Tschö
Dirk
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
D-65929 Frankfurt a.M. * Dalbergstraße 4
nospam@drkoenig.de [ersetze "nospam" durch "info"] * www.drkoenig.de
 
On Sun, 05 Oct 2003 17:51:30 +0200, RA Dr.M.Michael König
<nospam@drkoenig.de> wrote:

Am Sun, 05 Oct 2003 13:44:07 +0200, meinte Dirk Ruth
d.ruth@expressnet.info>:

Wie muß ich das Display auf 1x16-Display korrekt parametrisieren? Ich
Schau Dir mal auf http://www.lcd-module.de/deu/pdf/doma/2_20.pdf
die untere Tabelle auf Seite 5 an. Es kommt halt darauf an, ob Du ein
1x16 oder ein 1x16(8+8) Display hast.

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

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

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.
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 http://www.displaytech.com.hk/index.php da
kann man dann auch mal per Email nachfragen.

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

Tschö
Dirk
 
Am Sun, 05 Oct 2003 19:03:50 +0200, meinte Dirk Ruth
<d.ruth@expressnet.info>:

Verkauft werden beide als einzeilig, was sie ja auch sind. Und wenn
Optisch - ja.

sie laut Doku als zweizeilig angesteuert werden sollen, dann hast Du
Das ist gerade die Frage, ob sie auch als zweizeilig parametrisiert
werden sollen/müssen.

wohl ein 1x16(8+8) Display.

Reichelt verkauft die von http://www.displaytech.com.hk/index.php da
kann man dann auch mal per Email nachfragen.
Was Conrad verkauft ... Naja frag einfach mal Conrad.
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
D-65929 Frankfurt a.M. * Dalbergstraße 4
nospam@drkoenig.de [ersetze "nospam" durch "info"] * www.drkoenig.de
 
[1x16 LCD als 2x8]

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.
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
 
On Mon, 06 Oct 2003 16:37:21 +0200, RA Dr.M.Michael König
<nospam@drkoenig.de> wrote:

Am Sun, 05 Oct 2003 19:03:50 +0200, meinte Dirk Ruth
d.ruth@expressnet.info>:

Verkauft werden beide als einzeilig, was sie ja auch sind. Und wenn

Optisch - ja.

sie laut Doku als zweizeilig angesteuert werden sollen, dann hast Du

Das ist gerade die Frage, ob sie auch als zweizeilig parametrisiert
werden sollen/müssen.
Dürfte beim Ausprobieren nichts kaputt gehen.

wohl ein 1x16(8+8) Display.

Reichelt verkauft die von http://www.displaytech.com.hk/index.php da
kann man dann auch mal per Email nachfragen.
Was Conrad verkauft ... Naja frag einfach mal Conrad.

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.
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
 
On Mon, 6 Oct 2003 17:48:30 +0200, "Arne Rossius"
<ArneRossius@despammed.com> wrote:

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.

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.

Es gibt scheinbar aber auch andere.
http://www.lcd-module.de/deu/doma/standard.htm#01x16

Tschö
Dirk
 

Welcome to EDABoard.com

Sponsor

Back
Top