IPS-Nano-Terminal

Hallo Doc,

ist habe viele Displays erfolgreich und ohne Probleme getestet.
Wichtig: 10K Pull-Up’s und Achtung: D0 bis D3 vom Display werden wegen des 4Bit-Modus (Initalisierungsstring) nicht verwendet!

MST

Hallo Michael,

D0-D3 habe ich auf Masse gelegt, genau wie R/W.
Der verwendete Controller des Displays ist ein KS0073 wie in vielen neuen Displays, der soll HD44780 kompatibel sein, allerdings scheint hier der Init-String unterschiedlich zu sein.
Ich kann das PDF auf Grund der Grösse nicht anfügen, steht bei Reichelt unter EA DIP204-4, vielleicht kannst du mal wenn du Zeit hast hier reinschauen, ob dir evtl. hier ein Unterschied zum HD44780 auffällt.

Gruß,

Doc

… werde ich mir mal genauer ansehen.
Fast kompatibel, PDF hier: http://www.lcd-module.de/eng/pdf/zubehoer/ks0073.pdf

Ja, das hatte ich auch schon gefunden. Es scheint wirklich einen anderen Init-String zu benötigen. Habe das hier im Microcontrollerforum gefunden, allerdings weiss ich nicht, wie ich das in den Initstring verpacken muss, da das dann ja aus 2 Nibbles bestehen muss, oder?

delayus(50000);
lcdctrl(0x20);  
lcdctrl(0x24);	//B00100100   ; 4 Bit-Datenlänge, extension Bit RE=1	
lcdctrl(0x09);	//B00001001   ; Extendet Funktion Set (RE=1) 5Dot NW=1(4Line)	
lcdctrl(0x20);	//B00100000   ; 4 Bit-Datenlänge, extension Bit RE=0	
lcdctrl(0x06);	//B00000110   ; Entry Mode Set Cursor Auto-Increment	
lcdctrl(0x0C);	//B00001100   ; Display ein, Cursor aus, Blinken aus
lcdctrl(0x01);  //Clear Display
delayus(15000);

Der Controller schein auch gar nicht so untypisch zu sein und mitlererweile oft verbaut zu werden, oft auch als ersatz zum HD44780.
Nur wie schicke ich den jetzt einen 8-bit Code an einen 4-bit Controller zum initalisieren?
Doc

Hallo Doc,

es kann sein, dass die Character-Font Auswahl beim KS0073 anders geregelt ist. Wenn Du das von Paresy veröffentlichte Script verwendest, dann ändere bitte im Initialisierungs-String den folgenden Eintrag:

chr(12) —> chr(8)

Damit wird der Default-Font ausgewählt.

Falls es dann immer noch nicht geht, kann es auch am zu „großzügigen“ Timing des DS2408 liegen. Die 1-Wire Bausteine sind auf Stromsparen, nicht auf Geschwindigkeit ausgelegt. Laut Datenblatt benötigt der KS0073 beim E-Signal eine Flankensteilheit von max. 20ns. Dies ist eine sehr strenge Forderung, die der DS2408 nicht erüllen kann. Die meisten FeldWaldWiesen-LCDs fordern dies zwar auch, begnügen sich aber in der Realität auch mit flacheren Flanken.

Wenn Du ein solches FeldWaldWiesen-LCD zur Verfügung hast, kannst Du es ja mal damit ausprobieren. Im Erfolgsfall bedeutet dies leider, dass Dein Display ungeeignet ist.

Natürlich gilt immer wieder vorrangig: vorher Verdrahtung überprüfen!

Gruß
HJH

Hallo HJH,

werde ich heute Nachmittag mal testen, nachdem mein 1-Wire HUB fertig ist.
Was mich aber noch interessieren würde, wie ich den weiter oben genannten Init-String aus dem Microcontroller Forum umsetzten müsste, um dies auch nochmal zu testen. Da sind ja hex-Werte > 16 drin, wie setze ich die den für den 4bit Modus um?
HW denke ich ist ok, habe allerdings 15k pullups drin, sollte aber wahrscheinlich nicht das Problem sein. Nach unzähligen Versuchen habe ich auch schon mal eine Anzeige gehabt, konnte das Display dann mit den 2 Zeilen aus dem Testscript immer wieder beschreiben, allerdings dann nur im 6x7 Dot Modus. Nach trennen der Versorgungsspannung kam ich dann wieder nicht mehr ans Display ran, was ich dann auf das Init-String zurückschloss. Gleiche Probleme hatte ich auch zigfach im WWW gefunden, mit diesem Controllertyp, als Lösung wurde immer der o.g. Initstring benutzt. Würde das gerne mal testen, wenn ich auch wüsste, wie ich umsetzten muss.

Danke und Gruß,

Doc

Hallo Doc,

die Umsetzung eines 8bit-Wertes in zwei 4bit-Werte geht besonders einfach, wenn (so wie bei Deinem Init-String) die Daten bereits hexadezimal vorliegen.

Beispiel:
Das Präfix „0x“ kennzeichnet den Wert als hexadezimal. Dezimale Werte kannst Du leicht mit dem Windows Calculator umrechnen.

aus chr(0x24) wird chr(0x02), chr(0x04)
aus chr(0x09) wird chr(0x00), chr(0x09)
usw.

Gruß
HJH

Hallo HJH,

das Umrechnen ist kein Problem, das aufsplitten in 2 Nibbles habe ich nun auch verstanden, aber woher weiss das Display denn, das 4bit Daten kommen, wenn der erste Befehl schon 0x20 ist und erst dann in den 4bit Modus umgeschaltet wird. Ich kann doch nicht einfach 8bit Daten in der Mitte trennen und davon ausgehen, das das Display das versteht, oder? :confused:

Gruß,

Doc

Ohne genau zu wissen worum es geht:

Schlimmstenfalls, wenn alles andere versagt, könntest du die betreffenden 8 Eingänge mit Dioden so beschalten, dass der „Umschaltbefehl“ erzeugt wird. Du brauchst dann nur noch einen einfachen Schaltimpuls, der dann über die Dioden einmal kurz ein Signal an die Eingänge legt. Danach weiss der Controller, dass er in 4 Bit weiterarbeiten soll.

Zunächst reicht dort ja ein Taster. Sinnigerweise sollte der Schaltimpuls dann aber auch über 1-Wire kommen. Wenn du ein DS2408 benutzt hast du doch noch Pins frei, oder?

Toni

Hallo Doc,

der Befehl chr(0x20) dient beim 8bit-Interface nach einem Reset zum Umschalten in den 4bit-Modus.

Wenn Du dieses Byte aufsplittest, wie beschrieben (also chr(0x02) und chr(0x00), erfüllt es genau diesen Zweck.

Gruß
HJH

Hallo zusammen,

ich habe folgende Zeile nun zum Init des Display mit dem KS0073 (EDIP204 usw) hinzugefügt und das initalisieren funktioniert jetzt tadelos. Probleme mit dem Timing gab es bis jetzt noch keine.


TMEX_F29_WriteBytes($id, chr(0x02).chr(0x00).chr(0x02).chr(0x04).chr(0x00).chr(0x09).chr(0x02).chr(0x00).chr(0x00).chr(0x06).chr(0x00).chr(0x0C).chr(0x00).chr(0x01));

Da ist mit Sicherheit noch der eine oder andere Parameter überflüssig.

Was ich bis jetzt noch nicht lösen konnte ist das die 2. u. 3. Zeile beim Beschreiben mit Daten vertauscht ist.
Hat hier vielleicht noch jemand eine Idee?

Gruß,

Doc

Hallo Doc,

du betreibst Dein LCD im 4-Line Modus. Diese Betriebsart kennt der Standard-Controller nicht, sondern es ist eine zusätzliche Eigenschaft des KS0073.

Das Script unterstützt nur den Standard-Controller.

Versuche mal das LCD im 2-Line Modus zu betreiben. Dazu musst Du den Wert chr(0x09) in chr(0x08) ändern. Das Script sollte dann alle 4 Zeilen korrekt ansteuern.

Gruß
HJH

Hallo HJH,

dann werden anscheinend nur die beiden ersten Zeilen initalisiert. Ich sehe dann Zeile 1 und 2 , dann sofort 3 und 4 auch in der ersten und zweiten Zeile.

Ich kann zwar mit den vertauschen Zeilen als kleinen Fehler leben, mich wurmt es aber, das ich es nicht finde.

Als Initstring verwende ich den hier veröffentlichten plus den, den ich oben gepostet habe. Einzeln funktionieren die leider nicht. Habe noch nicht gefunden, was vom alten String noch unbedingt erforderlich ist.

Gruß,

Doc

Hallo Doc,

dann geh doch den einfachsten Weg: ändere das Script so ab, dass die beiden Zeilen 2 und 3 vertauscht werden.

Nach dieser Zeile:
$lines = explode("|", $text);
drei weitere einfügen:
$tempbuf = $lines[2];
$lines[2] = $lines[1];
$lines[1] = $tempbuf;

Gruß
HJH

Hallo HJH,

hatte ich mir auch schon überlegt, mir fehlte jedoch auf Grund meiner wenigen PHP-Kenntnisse der Ansatzpunkt.
Funktioniert prima, danke.
Das einzige was jetzt noch etwas störend wirkt ist nun der ungleichmäßige „Bildaufbau“, da jetzt Zeile 1-3-2-4 beschrieben wird, was ein wenig unruhig wirkt. Aber damit kann man gut leben.

Danke für die Hilfe,
Doc

Zschmelz es funzt.
Wo kanne ich kaufen ?

Hi Fredje,

Displays gibt’s bei IP-Symcon oder Reichelt. Die liefern beide bestimmt auch nach Belgien :smiley:

Werde mir auch mal eines der DOG LCD Module mit dem ST7036 Kontroller bestellen. Diese Displays passen evtl. dann direkt im meine UP Dosen mit passendem Rahmen.

Gruß,

Doc

… passende Platinen kosten bei uns € 7,-
Leider sind die 2408 zur Zeit knapp – wenn sie wieder lieferbar sind,
werden wir (oder Torro) im Shop die bestückte Platine anbieten.

MST

@Doc,

ich warte auf den „Testbereich“ – für meine nächste Bestellung bei R

…habe ich jetzt nicht ganz verstanden, was du meinst?

Doc

Testbericht: „DOG LCD Module mit dem ST7036 Kontroller“
und ob sie in „UP Dosen mit passendem Rahmen“ passen,
dann bestelle ich auch ein paar bei „R“

MST