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