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