Guten Tag
Ich habe ein Projekt bei dem das Pollin-LCD WD-C2704 verbaut ist.
(27x4 Textbasierend)
Die Anzeige funktioniert soweit.
Ich wollte jetzt Benutzerdefinierte Zeichen hinzufügen.
Leider wird beim Benutzerdefinierten Zeichen nur Datenmüll angezeigt.
Diese Zeichen sehen nach jedem Resetten des Mikrocontrollers anders aus.
Weis jemand ob beim WD-C2704M überhaupt benutzerdefinierte Zeichen
unterstützt werden?
Mikrocontroller:
ATmega32L
Programierumgebung:
AVR Studio7
LCD-Bibleothek:
LCD-Bibleothek von Steffan Seegel
Beitrag "lib für Pollin LCD (WINTEK2704)"
;o) schrieb:> Ich habe ein Projekt bei dem das Pollin-LCD WD-C2704 verbaut ist.> Ich wollte jetzt Benutzerdefinierte Zeichen hinzufügen.> Leider wird beim Benutzerdefinierten Zeichen nur Datenmüll angezeigt.
Dir ist bewußt, daß dieses LCD von zwei unabhängigen HD44780
Controllern angesteuert wird? Je einem für die beiden oberen respektive
die beiden unteren Zeilen? Wenn du ein benutzerdefiniertes Zeichen in
einem dieser Controller anlegst, ist es auch nur in dessen
Displayhälfte verfügbar.
Ja, mir ist dies durchaus bewusst.
Desswegen habe ich ja die Funktion um die Auswahl des
Prozessor-Enablepins erweitert.
(active_e / uchLCD_Enable_Nr)
Es kann natürlich sein das ich da bei der Enable Auswahl einen Fehler
gemacht habe.
Hi,
sieht stark nach HD44780 aus von der Initialisierung her.
Wie @Axel schon sagte:
2 Controller. 2 Initalisierungen.
2 Enable Impuls-Eingänge. Zuordnung zu den Zeilen. Bei Locate-Anweisung
also auch noch den "richtigen" Enable Impuls senden.
Beispielprogramm für e i n e n HD44780 kommt gleich.
Die "User defined characters" verlangen 8 Schreiboperationen jeweils.
Das wird oft vergessen.
ciao
gustav
;o) schrieb:> Ja, mir ist dies durchaus bewusst.> Desswegen habe ich ja die Funktion um die Auswahl des> Prozessor-Enablepins erweitert.
Nur reicht das allein halt nicht aus. Warum testest du nicht damit, daß
du deine benutzerdefinierten Zeichen einfach in beide Controller
schreibst? Danach müssen sie dann in jeder Position auf dem Display
funktionieren. Und wenn nicht, ist wirklich was kaputt. Wäre das nicht
deutlich zielführender und vor allem schneller, als in einem Forum zu
fragen? Noch dazu für Hardware, die Pollin mal vor 10 Jahren verkauft
hat?
Ich habe auch schon testweise an beide Controller die selben Daten
geschrieben.
Das war das Erste was ich versucht habe nachdem es nicht funktioniert
hat.
Ich habe versucht:
In Beide Controller die Zeichen zu schreiben.
Nur ein Sonderzeichen, alle 8 Sonderzeichen, lauter gleiche, lauter
unterschiedliche, alle Punkte schwarz, alle Punkte weiß,
unterschiedliche Timings, Beide Controller unterschiedliche Zeichen,
beide Controller gleiche Zeichen.
Das hat leider auch nicht funktioniert.
Ich weis das das LCD schon etwas betagter ist.
Ich wollte nur nicht nur wegen einer Spielerei das LCD & Frontblende
austauschen.
Da ich bis jetzt noch nie benutzerdefinierte Zeichen verwendet habe, war
mein Verdacht, das ich beim Erweitern der Funktionen Fehler gemacht
habe.
Ich hatte schon überlegt die Beispiel-LCD Funktionen der Artikel zu
verwenden.
Da ich aber die Daten & Steuerpins an unterschiedlichen Ports habe
müsste ich erst die Funktionen umschreiben was auch wieder
Fehleranfällig ist.
(Da das LCD fest verlötet ist wollte ich das Zerlegen nur für eine
Spielerei vermeiden. Vor allem weil passender Ersatz nicht mehr so
leicht zu finden ist.)
Da alle meine Debug-Versuche nichts gebracht haben, habe ich mich an
dieses Forum gewendet.
Es hätte ja sein können das jemand dieses alte LCD verwendet und
Erfahrungen damit hat.
;o) schrieb:> Da ich bis jetzt noch nie benutzerdefinierte Zeichen verwendet habe, war> mein Verdacht, das ich beim Erweitern der Funktionen Fehler gemacht> habe.
Das kannst du als gesichert annehmen, auch wenn ich beim Überfliegen
deines Codes keine offensichtlichen Fehler feststellen konnte.
Das einzige, was mich wundert: Wozu dient dient eigentlich der zweite
Parameter von lcd_write()? Da es ja offensichtlich auch eine Funktion
lcd_write_command gibt, scheint mir lcd_write keinen zweiten Parameter
zu benötigen.
Dieses Display hat jedenfalls zwei stinknormale HD44780-kompatible
Controller drinne, bei denen sich auch die Custom-Chars auf die übliche
Weise definieren lassen. Auch für beide Controller gleichzeitig.
Natürlich nur, wenn man das Timing einhält und nicht BUSY benutzt, um
dies zu tun. Sprich: für die von dir benutzten "Befehle" musst du eine
Mindestzeit von 37µs zwischen den einzelnen Operationen sicherstellen.
Da ich selber noch exakt so ein Display habe (wenn auch mit mittlerweile
leicht zerkratztem Deckglas), kann ich bestätigen, dass es nicht nur in
der Theorie, sondern auch in der Praxis funktioniert.
bingo schrieb:> Du hast das Datenblatt gelesen:>> * acht benutzerdefinierte Zeichen je Displayhälfte
Hi,
hatte auch Probleme damit.
Es sind acht Schreiboperationen nötig pro Character. Nicht nur eine für
die vorgefertigten im Charakter-ROM gespeicherten ASCII-Zeichen.
Also Bildchen.
Und nach Power off sind die Dinger wieder weg.
Die Routine muss bei jeder Initialisierung wieder durchlaufen werden.
Und die Adressen immer um 8 erhöhen. nicht um eins.
Steht auch im Code oben so:
ascii_00: ; Charakters zuordnen
ldi temp, 0x40 ;
rcall kommando ; fuer ASCII-Code hex00
; dann Pixel definieren aus zugehöriger Tabelle
ascii_01:
ldi temp, 0x48 ; "Set CGRAM address"-Steuerbefehl
rcall kommando ; fuer ASCII-Code hex01
; und wieder Pixel definieren aus Tabelle
ascii_02:
ldi temp, 0x50 ; "Set CGRAM address"-Steuerbefehl
rcall kommando ; fuer ASCII-Code hex02
; und immer 8 dazuzählen bis man sonst im anderen Kommando-Befehlssatz
landet. Mehr ist nicht drin. Also Befehl 40 plus Adresse
ciao
gustav
@C-Hasser
lcd_write() hatte ich für eine Fehlersuche etwas umgeschrieben und
vergessen wieder auf den Ursprungszustand zurückzustellen.
Aber in dieser Version unterscheidet sich die Funktion nicht von der
ursprünglichen Arbeitsweise.
Danke für die Information.
Ich werde den ganzen Quellcode & Schaltung noch einmal genauer
durchackern.
Und danke für die Bestätigung das die Funktion bei diesem speziellen LCD
zur Verfügung steht.
Ich habe da aber den bösen Verdacht, das das LCD einen Hau weg hat.
Denn ich habe jetzt das LCD testweise als 27x2 LCD angeschlossen und die
verschiedensten LCD Funktionen aus verschiedenen Quellen durchgetestet.
Dabei ist mir aufgefallen das die obersten 4 Zeilen im Sonderzeichen mit
einem zufälligen Muster gefüllt wird und die unteren 4 Zeilen des
Zeichens sind immer gleich bleiben.
@Bingo
Den Schmierzettel von Pollin hatte ich in der Projektmappe abgeheftet
und auch noch einmal durchgelesen.
Da diese Pollin-Datenblätter immer wieder etwas von der Wirklichkeit
abweichen, wollte ich nachfragen bevor ich nach Dingen suche die es
nicht gibt.
@All
Danke für eure Hinweise.
Ich werde jetzt noch einmal alles sorgfältig durchgehen und überprüfen.
Falls ich dabei nichts finden kann werde ich den Urzustand wieder
herstellen.
Denn das Ganze ist jetzt die letzten 10+ Jahre ohne Sonderzeichen
gelaufen und wird das dann auch noch länger ohne Sonderzeichen tun.
Es war halt nur eine Spielerei die mehr Probleme bereitet hat als
erwartet.