|
Das monochrome 10,4 Zoll LCD-Modul LCM-5430-E (640x200 Pixel) ist für Bastler bestens geeignet. Geringer Preis und einfache Ansteuerung über einen ATMEGA 644P machen ihn zum idealen Versuchsobjekt für eigene Projekte. An dieser Stelle sollen erste Erfahrungen, einige Umbauten und die Software für die Ansteuerung vorgestellt werden. |
Inhaltsverzeichnis1. Das Display im Überblick2. Erste Testschaltung 3. Taktdiagramm 4. Test-Software 5. Hardware 6. Umbau der Hintergrundbeleuchtung von CCFL in LED 7. CP/M-Test 8. CP/M-Test 9. Lizenz |
Die Firma Pollin hat hin und wieder Displays älterer Bauform zu günstigen Preisen im Angebot. Das monochrome 10,4 Zoll LCD-Modul LCM-5430-E (640x200 Pixel) ist derzeit für nur 4,95 EUR unter LCD-Modul LCM-5430-E erhältlich.
Weiterhin gibt es im Forum des www.mikrocontroller.net einen Thred Pollin Display LCD-Modul LCM-5430-E der sich diesem Display widmet.
geringer Preis
Ansteuerung durch einen ATMEGA einfach möglich
mit etwa 10 Zoll (26,41 cm) Diagonale angenehm große Anzeigefläche
Anschluss der Daten- und Steuerleitungen einfach über eine Lötleiste möglich
spätestens mit diesem Projekt ist eine Open-Source-Lösung für die Ansteuerung verfügbar
Ideal für Retro CP/M-Projekte mit 80 Zeichen und 24 Zeilen geeignet
Hintergrundbeleuchtung über CCFL-Röhre
der dazu benötigte Inverter für die erforderliche Hochspannung ist nicht mit im Lieferumfang enthalten
es wird weiterhin eine Spannung von -22V für die Spalten- und Zeilentreiber des LC-Displays benötigt
im Lieferumfang sind keinerlei Anschlußbelegungen, Schaltpläne oder Datenblätter enthalten
auch im Internet sind nach längeren Recherchen keine Datenblätter oder Schaltungen für dieses Display auffindbar
Da bei diesem Display kein Inverter für die CCFL-Röhre im Lieferumfang enthalten ist, wurde bei der Bestellung bei der Firma Pollin ein entsprechender Inverter CCFL-Röhre mit Inverter für 2,50 EUR gleich mitbestellt. Der Anschluss ist unkompliziert und man muss nur die beiden Hochspannungsleitungen an die CCFL-Röhre im LCD-Modul anschliessen. Der Test für die Hintergrundbeleuchtung war sofort erfolgreich. Der einzige Haken an dieser Lösung ist,dass man jetzt für den Inverterter noch eine zusätzliche Spannung von 9,5...13,5 V bereitstellen muss.
In weiteren Schritten soll die CCFL-Röhre durch eine LED-Hintergrundbeleuchtung mit +5V (siehe unten) ersetzt werden (wie es auch schon einige Bastler vor mir getan haben).
Im Internet findet man an vielen Stellen die Anschlussbelegung für dieses Display.
Pin | Funktion |
---|---|
1 | Frame |
2 | NC |
3 | Load |
4 | CP |
5 | NC |
6 | D0 |
7 | D1 |
8 | D2 |
9 | D3 |
10 | NC |
11 | NC |
12 | NC |
13 | NC |
14 | VDD |
15 | GND |
16 | VEE |
17 | Poti/VEE |
18 | Disp. off |
Quelle: Ansteuerung des Pollin LCDs LCM-5430-E
Das erfolgreiche Projekt LCD-Controller verursachte eine positive Grundstimmung, die da heisst: "Das wird bestimmt schnell fertig".
Die Hintergrundbeleuchtung (siehe oben) war schnell aktiviert und die -22V konnten Versuchsweise auch von einem Netzteil bereitgestellt werden.
An solchen Stellen sollte man sich reumütig an den kürzesten Programmiererwitz erinnern: "Bin fast fertig."
Bei der Ansteuerung des Displays gab es größere Probleme. Trotz vieler Tests wollte sich die Anzeige einfach nicht regen. Es kam sogar soweit, dass das Projekt - vor Frust - ein paar Wochen in die Ecke gelegt wurde.
Obwohl viele Bastler das Display und ihre Erfolge im Internet präsentieren, hat leider nicht einer einen lauffähigen Quelltext ins Netz gestellt. Das war schon fustrierend. Langsam kamen Zweifel auf.
Aber dann endlich - nach einem ausgiebigen weiteren Anlauf und vielen Versuchen - zuckte das Display zum ersten Mal. Und nach weiteren kleineren Optimierungen war nun doch die erste, lauffähige Ansteuerung fertig.
Das folgende Taktdiagramm wurde aus den Unterlagen zu diversen LC-Displays und aus der eigenen Testschaltung (siehe unten) erstellt.
Für die Richtigkeit der Angaben wird keinerlei Garantie übernommen.
Während der Initialisierung werden alle Steuerleitungen auf 0 (Masse) gelegt (Anfangszustand).
Die Displayspannung (-22V an PIN 16 und POTI PIN 17) darf nur zugeschaltet weden, wenn das Display regelmäßig refresht wird (maximal 50 ms). Eine anliegende Displayspannung ohne Refresh zerstört das Display.
1. Disp_off einschalten - Mit beginnendem Refresh der Anzeigedaten kann die Displayspannung durch Disp_off zugeschaltet werden (die folgende Refresh-Schleife muss dann aber unbedingt folgen).
2. Frame aktivieren - Die Steuerleitung für die erste Zeile (bei anderen Displays auch FLM = First Line Marker genannt) wird aktiviert und kennzeichnet somit den Beginn der ersten Zeile.
3. Daten anlegen - Bevor die Daten später vom Display eingelesen werden können werden sie zu diesem Zeitpunkt angelegt. Das Display liest 4 Datenbits (D0..D3) gleichzeitig ein.
4. Load aktivieren - Das Laden der jeweiligen Zeile wird eingeleitet.
5. Load deaktivieren
6. CP aktivieren - CP steht für Copy. Mit der Aktivierung dieser Signalleitung werden die 4 Datenleitungen in das Display eingelesen.
7. CP deaktivieren - Die Daten wurden übernommen. Die minimale Taktdauer liegt etwa bei 125 ns. Mit >=3 Takten bei 20 MHz für die CP-Dauer (Notfalls 1-2 NOPs einfügen) liegt man auf der sicheren Seite.
8. Daten abschalten - Nach der Übernahme der Daten können die Daten abgeschaltet weden - oder noch besser gleich die nächsten Daten angelegt werden.
9. Daten anlegen - Punkt 8 und 9 können zusammengelegt werden (ist sicher auch meist so).
10. CP aktivieren
11. CP deaktivieren - Die Schleife aus Daten anlegen und CP aktivieren/deaktivieren wird 160 mal wiederholt. Die 160 ergeben sich aus den 640 Pixel pro Zeile, von denen jeweils 4 Datenbits (640 / 4 = 160) gleichzeitig übernommen werden.
12. Frame deaktivieren - Die Steuerleitung für die erste Zeile wird nach der Beendigung der Ausgabe der ersten Zeile zurück gesetzt.
13. bis 15. - Nun beginnt die Ausgabe der zweiten Zeile, wie oben (9. bis 11.) aber ohne aktive Frame-Leitung.
Die Ausgabe der weiteren Zeilen erfolgt äquivalent, bis alle 200 Zeilen ausgegeben worden sind.
Die Geschwindigkeit der Ausgabe der Daten (Bildwiederholfrequenz) kann in einem gewissen Bereich variiert werden. Die maximale Bildwiderholfrequenz ergibt sich aus der oben beschriebenen minimalen Taktdauer für das CP-Signal. Die minimale Bildwiederholfrequenz beginnt beim störenden Flachern des Displays. Erfahrungsgemäß muss diese hier beschriebene Refresh-Schleife in Assembler geschrieben werden um eine flackerfreie Anzeige des Bildwiederholspeichers zu gewährleisten. Nur in der folgenden Testschaltung wurde die Ausgabe eines einfachen Musters (mit einigen Tricks) in PASCAL erzeugt.
RONPAS Quelltext für ATMEGA644P nur Blinktest ohne Display: 10_Blinktest_ATMEGA_ok.zip
RONPAS Quelltext für ATMEGA644P Ansteuerung des Displays mit einem festen Muster: 18_Muster_ok.zip
RONPAS Quelltext für ATMEGA8 Ansteuerung des Displays mit einem festen Muster (nicht getestet): 18_Muster_ATMEGA8_ok.zip
RONPAS Quelltext für ATMEGA644P Displaytest mit einem kurzen Text: 27_Displaytest_ok.zip
Die Testschaltung ist recht simpel. Alle Steuer- und Datenleitungen werden direkt an den Mikrocontroller geführt.
Die vorhandene CCFL-Hintergrundbeleuchtung benötigt einen Inverter, der die Hochspannung für die CCFL-Röhre bereitstellt. Zusätzlich muß die Spannung für den Inverter von 9,5...13,5 V durch ein zusätzliches Netzteil bereitgestellt werden.
Daher ist es zu empfehlen, die CCFL-Röhre durch einige Leuchtdioden zu ersetzen.
Die CCFL-Röhre nebst Halterung läßt sich durch 2 kleine Schrauben schnell entfernen. Die LEDs werden mit etwa Isolierband (Gewebeband) und den entsprechenden Verbindungsleitungen zusammengelötet (siehe Bilder).
In diesem Beispiel wurden 6 LEDs installiert. Die Helligkeit reicht aus, um das Display ordentlich zu beleuchten. Als LED wurden folgender Typ gewählt:
Im Prinzip kann man alle 6 LEDs in Reihe schalten. Bei einer Flussspannung von etwa 3,5 V (bei 20 mA) und etwas Puffer für den Widerstand, benötigt man mindestens 25V. Dafür wird dann noch ein Netzteil benötigt.
Die Anforderung in diesem Beispiel war aber, mit einem 5V Netzteil das gesammte Display zu versorgen. Somit blieb nur, jede LED mit einem Widerstand von 100 Ohm in Reihe zu schalten. Das ergibt etwa 15 mA pro Leuchtdiode. Bei 6 Leuchtdioden sind das theoretisch 90 mA. Gemessen wurden knapp 93 mA (siehe Bild oben). Das ist ein sehr gutes Ergebnis.
Nachdem die Hintergrundbeleuchtung so einfach ersetzt werden konnte, soll nun als nächstes die Displayspannung ersetzt werden. Ziel ist - wie schon erwähnt - die Versorgung des Displays mit einem 5V-Netzteil.
Im vorhergehenden Projekt LCD-Controller für Display G648D wurde die Displayspannung mit dem MC34063 erzeugt. Prinzipiell funktioniert diese Schaltung auch zuverlässig. Es war doch aber etwas zeitaufwendig, die erforderliche Spannung zu erzeugen. Mit Spannungen von größer 20V kommt die Schaltung an ihre technischen Grenzen.
Seit einiger Zeit lag da so ein DC-DC-Wandler in meinen Bastelkästen, der eine schnelle Lösung versprach. Konkret handelte es sich um den:
SIM1-0524S DIL8 (DC/DC-Wandler 1 W SIM1 DIL8 HN Power SIM1-0524S-DIL8 In 5 V Out 24 V 50 mA 1 W)
(bestellbar z.B. bei: Reichelt oder Conrad).
Ein erster Test lief sehr erfolgreich. Die Ausgangsspannung (von etwa 25V) war sofort verfügbar. Und auch der zweite Test am Display brachte schnelle und unkomplizierte Resultate.
Daher wurde gleich eine kleine Erweiterung geplant, die die Displayspannung erst zuschaltet, nachdem der Mikrocontroller die Refresh-Schleife aufgebaut hat. Nach dem Reset des uC (z.B. beim Neuprogrammieren) sind alle Steuerleitungen als Eingang programmiert. Dann kann über R1 kein Strom fliessen, der Transistor ist gesperrt und am Ausgang liegt keine Spannung an. Wird dann die Steuerleitung auf Ausgang und High-Pegel gelegt, fliesst über R1 der norwendige Basisstrom und der Transistor öffnet. Der DCDC-Wandler läuft nun an und stellt am Ausgang die erforderliche Displayspannung von etwa -23V bereit.
Der DCDC-Wandler SIM1-0524S (oder ähnliche Modelle) ist zwar etwas teurer als der MC34063, ist aber sehr zu empfehlen und liefern schnelle und umkomplizierte Ergebnisse.
Die ersten CP/M-Tests mit dem Z80-Hardware-Emulator (Z80HWE) liefen erfolgreich.
Diese(s)
Werk bzw. Inhalt von Ronald Daleske steht unter einer
Creative Commons Namensnennung-Nicht-kommerziell 3.0
Deutschland Lizenz.
keine Mängelgewähr
DIESE SOFTWARE WIRD VOM URHEBERRECHTSINHABER "OHNE MÄNGELGEWÄHR" BEREITGESTELLT. ALLE AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN, EINSCHLIESSLICH DER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK (JEDOCH NICHT DARAUF BESCHRÄNKT), WERDEN AUSGESCHLOSSEN. DER URHEBERRECHTSINHABER IST IN KEINEM FALL UND NACH KEINER HAFTUNGSTHEORIE (SEI ES AUF VERTRAGSBASIS, AUF DER BASIS STRENGER HAFTUNG ODER UNERLAUBTER HANDLUNGEN, EINSCHLIESSLICH FAHRLÄSSIGKEIT) FÜR BELIEBIGE VERURSACHTE DIREKTE, INDIREKTE, ZUFÄLLIGE, BESONDERE, EXEMPLARISCHE SCHÄDEN ODER FOLGESCHÄDEN (EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF BESCHAFFUNG VON ERSATZPRODUKTEN ODER -LEISTUNGEN, NUTZUNGSAUSFALL, DATEN- UND GEWINNVERLUST ODER GESCHÄFTSAUSFALL) HAFTBAR, DIE AUFGRUND DER VERWENDUNG DIESER SOFTWARE ENTSTEHEN KÖNNEN. DIES GILT AUCH, WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.