Wintek LCD

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 11 8 2024  06:18:37      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
Wintek LCD
Suche nach: lcd (4677)

    







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&auml;ndert von: DonComi am &nbsp;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

:D




_________________

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

_________________


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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 13 Beiträge im Durchschnitt pro Tag       heute wurden bisher 2 Beiträge verfasst
© x sparkkelsputz        Besucher : 181817854   Heute : 558    Gestern : 3778    Online : 417        11.8.2024    6:18
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0708367824554