Wintek LCD Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Wintek LCD Suche nach: lcd (4684) |
|
|
|
|
BID = 447499
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
|
Hallo liebe Forumuser!
Ich versuche verzweifelt ein LCD (Typ: WINTEK WD-C2704M-1HNN) von Pollin anzusteuern.
Ein Testskript habe ich von hier.
Das Problem ist, es tut sich absolut nichts, nur zwei schwarze Balken am Display.
Meine Frage nun, hat schon einmal jemand mit diesem Display oder mit dem Testcode gearbeitet?
Ich weiß nicht mehr, wo ich noch nach dem Fehler suchen soll.
Anschluss und Taktfrequenz habe ich schon überprüft.
Vielleicht hat ja auch jemand ein Testprogramm passend für einen ATmega8 herumliegen und mag es mir geben
mfg
elektroluchs
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein) |
|
BID = 447504
Benedikt Inventar
Beiträge: 6241
|
|
Das Display ist ein normales HD44780 LCD, und sollte daher auch mit jedem normalen HD44780 Code laufen. Der einzige Unterschied: Das LCD hat 2x Enable Pins, für die obere bzw. untere Hälfte. Lege mal einen von beiden fest auf GND, dann sollte zumindest die andere Hälfte laufen.
Ich habe es schon mehrfach verwendet, und hatte noch nie Probleme. |
|
BID = 447528
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Dito.
Meins läuft auch problemlos.
Wie Benedikt gesagt hat, die Standard-LCD-Routinen funktionieren hier wunderbar, aber man muss die Ansteuerung beider E-Leitungen selbst vornehmen. Wird E1 benutzt, wird nur das obere, wird E2 benutzt, wird das untere Display angesprochen.
_________________
|
BID = 447611
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
Mir ist grad aufgefallen, dass ich die nicht benutzten Datenleitungen nicht mit einem definierten Potential versehen habe. Das werde ich mal ändern.
Eine Frage habe ich noch, ich habe ja ein 27x4LCD, die Testprogramme waren aber für andere Formate, kann das auch ein Grund für die Fehlfunktion sein? Ich dachte, wenn für ein 16er initialisiert wird, kann ich halt nur 16 von 27 Feldern nutzen.
mfg
elektroluchs
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 447631
Benedikt Inventar
Beiträge: 6241
|
Zitat :
elektroluchs hat am 3 Aug 2007 10:27 geschrieben :
|
Mir ist grad aufgefallen, dass ich die nicht benutzten Datenleitungen nicht mit einem definierten Potential versehen habe. Das werde ich mal ändern.
|
Das ist nicht notwendig, der Controller sollte intern Pullups haben. Ich lasse die immer unbeschaltet und hatte noch nie Probleme.
Zitat :
|
Ich dachte, wenn für ein 16er initialisiert wird, kann ich halt nur 16 von 27 Feldern nutzen.
|
So ist es.
Der Controller selbst ist nur zwischen 1 und 2 Zeilen umschaltbar. Wie groß eine Zeile ist, hängt lediglich davon ab, wie voll man eine Zeile schreibt.
|
BID = 447683
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ja, außerdem hat das Display zwei Controller, einmal für die untere, einmal für die obere Hälfte. Wie man das mit fertigen Treibern ansteuert, weiß ich daher nicht. Ich hatte damals ne Routine, die die E-Leitungen je nach gewünschter Zeile benutze. Ich hatte damals das etwa so gemacht:
locate(zeile1+offset); //oder zeile2: E1 wird benutzt
locate(zeile3+offset); //oder zeile4: E2 wird benutzt
Allerdings habe ich den C-Kode nicht mehr da, der ist irgendwann mal verschwunden...
War aber selbstgemacht.
Für andere Displays benutze ich eine etwas andere Routine, die eben nur für ein E geschrieben ist.
_________________
|
BID = 447687
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
Naja, wenn diese zwei Möglichkeiten als Fehler ausscheiden, dann stehe ich wieder am Anfang.
Zitat :
| Für andere Displays benutze ich eine etwas andere Routine, die eben nur für ein E geschrieben ist.
|
Hast du die zufällig noch Ich würde die wirklich nur zu Testzwecken benötigen, wenn ich einmal mehr Zeit habe, will ich mir die dann selbst schreiben, bin ja wissbegierig
mfg
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 447690
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ja, ich kann dir den packen. Ist aber in C.
_________________
|
BID = 447695
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
So, habs mal gezippt und angehängt.
In der Headerdatei wird die Hardware angepasst, musste sehen, ob du da durchsteigst, aber ist eigentlich sehr gut kommentiert.
Weiterhin muss man beachten, dass das das zweite war, was ich mit C geschrieben habe .
Ich kann nicht garantieren, dass der Kode läuft. (Wobei es keinen Grund gibt, dass er es nicht tun sollte )
Wenn du Optimierung -Os einstellst, wird er sehr klein, da Sachen wie
io_rs |= 1<<st_rs;
dann nur zwei Bytes belegen, nicht 6 Bytes, wie es in anderen Optmierungen der Fall war.
(in, ori, out)
Jetzt macht der Compiler daraus dann sbi PORT, BIT.
_________________
Edit:
Den Teil "unsigned char get_current_pos()" entferne mal aus der lcd_drv.c. Das sollte mal eine Routine zum Lesen der aktuellen Position im RAM des Controllers werden... Da ist noch alles voll von Verzögerungen und von schlichtem Debug-Kode... .
Schmeiß' am besten raus, kostet nur Flash und du ersparst mir damit eine Peinlichkeit...
[ Diese Nachricht wurde geändert von: DonComi am 3 Aug 2007 14:26 ]
[ Diese Nachricht wurde geändert von: DonComi am 3 Aug 2007 14:30 ]
|
BID = 447711
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
Danke, DonComi, dass du mir das zur Verfügung stellst. Das es in C ist, ist kein Problem, da kenn' ich mich schon aus.
Ich werde jetzt nochmal von A-Z alles überprüfen und dann Bericht erstatten.
Hoffentlich klappt das einmal
mfg
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 447713
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
BID = 447722
Benedikt Inventar
Beiträge: 6241
|
Nett.
Ist das das 2x40 LCD mit EL Backlight ?
|
BID = 447732
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Exakt.
_________________
|
BID = 449770
elektroluchs Gesprächig
Beiträge: 194 Wohnort: Austria
|
So, ich habe deinen Code jetzt ausprobiert und... es tut sich was, am LCD. Jedoch nicht das, was ich will.
Ich habe das folgendermaßen verdrahtet:
RS --- Port D, 0
R/~W --- Port D, 1
E1 --- Port D, 2 (ich benutze nur die obere Hälfte zum Testen)
D4 --- Port D, 3
D5 --- Port D, 4
D6 --- Port D, 5
D7 --- Port D, 6
Ich habe die Header-Datei leicht verändert (von PortA auf PortD) und da ist mir aufgefallen, dass das Busyflag und D7 sich überdecken, ist das richtig so?
Taktfrequenz: 1MHz
zur Funktion:
Das LCD startet, und hat dann zwei schwarze Balken. Wenn ich dann am Controller das Programm starte, dann verschwindet in der oberen Hälfte der schwarze Balken. In beiden oberen Zeilen kann man dann graue Kästchen erkennen, in denen einmal etwas stehen soll. Danach taucht der schwarze Balken in der ersten Zeile wieder auf und die zweite verliert den Kontrast, wie am Anfang halt.
Buchstaben tauchen leider keine auf.
Ich habe im Anhang mein Testprogramm und den Teil der veränderten lcd.h angehängt.
mfg
elektroluchs
_________________
So einfach wie möglich, aber nicht einfacher! (Albert Einstein)
|
BID = 449773
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
das sieht so ok aus.
Irgendwo im Header ist so eine Kombination, die eine Zahl zwischen 0 und 4 erzeugt, die benutzt wird, um die Daten zu verschieben. Da es im 4bitmodus läuft muss erst ein Nibble, dann das andere übertragen werden.
Dazu müssen die Bits einmal nach links und einmal nach rechts geschoben werden. Ich werde mal eben überprüfen, ob das so stimmt.
OK, habe das auch mal mit deinen Werten simuliert, klappt.
Zitat :
|
Ich habe die Header-Datei leicht verändert (von PortA auf PortD) und da ist mir aufgefallen, dass das Busyflag und D7 sich überdecken, ist das richtig so?
|
Ja, Daten-Bit7 gibt im Lesemodus das Busyflasg aus.
Zitat :
|
Das LCD startet, und hat dann zwei schwarze Balken. Wenn ich dann am Controller das Programm starte, dann verschwindet in der oberen Hälfte der schwarze Balken.
|
Genau so muss das sein.
Zitat :
|
In beiden oberen Zeilen kann man dann graue Kästchen erkennen, in denen einmal etwas stehen soll.
|
Perfekt :super:
Zitat :
|
Danach taucht der schwarze Balken in der ersten Zeile wieder auf und die zweite verliert den Kontrast, wie am Anfang halt.
|
Das ist schlecht.
Bist du dir ganz sicher, dass du E2 nicht doch ausversehen irgendwo angeschlossen hast?
Oder das im Programm was nicht stimmt?
Der Kode von mir ist zwar schon älter und als ich ihn eben durchgesehen habe sind mir spontan ein paar Sachen aufgefallen, die man hätte schöner machen können aber er funktioniert inzwischen mit 5 Displays.
Ich werde jetzt mal das Wintek anschließen.
Dauert jetzt vermutlich etwas
_________________
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 6 Beiträge verfasst © x sparkkelsputz Besucher : 182422566 Heute : 1606 Gestern : 5459 Online : 275 29.11.2024 11:15 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0453600883484
|