www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik HD44780 LCD - Keine Anzeige


Autor: P. M. (dot)
Datum:

Hallo,

ich vermute mal, dass dies ein besonders nerviges Thema für euch ist.
Leider finde ich zu meinem Problem in der Vielzahl der Threads keine
Lösung.

Vorhandene Hardware:
- Pollin Atmel Evaluation-Board V2.0.1
- Atmega16
- HD44780 LCD (Pollin: LCD-Modul YL162-90 / Best.Nr. 120 060)
  -> http://www.pollin.de/shop/downloads/D120060D.PDF

Leider scheitert es schon daran, dass ich keinen "Balken" im LCD sehe,
was ja im Normalfall der Fall sein sollte, wenn man die nötigsten Pins
(GND, 5V und die Spannung vom Kontrast) anschließt. Die
Hintergrundbeleuchtung funktionier indess ohne Probleme, aber da gibt es
ja keinen Zusammenhang.

Bis jetzt ist das Display so angeschlossen:
PIN
1  Vss  GND
2  Vcc  5V
3  Vee  10K-Poti an 5V
15      HB      5V (2x 250 Ohm Widerstand parallel)

So wie es auch unter
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
beschrieben wird.

Egal wie ich den Poti einstelle, ich sehe den besagten "Balken" nicht.
Leider ist im Pollin Datenblatt für das Display keine genaue
Spannungsgrenzen für den Kontrast genannt. Benötigt dieses eventuell
eine völlig Andere oder was mache ich falsch? Oder ist das LCD eventuell
sogar defekt?
Danke im Voraus.

mfg
Autor: Gast (Gast)
Datum:

Du schreibst dass du das Poti "an 5V" angeschlossen hast.
Liegt der Schleifer also auf Pin 3 vom Display und die beiden anderen
Anschlüsse einmal auf GND und einmal auf 5V?
Autor: P. M. (dot)
Datum:

Gast wrote:
> Du schreibst dass du das Poti "an 5V" angeschlossen hast.
> Liegt der Schleifer also auf Pin 3 vom Display und die beiden anderen
> Anschlüsse einmal auf GND und einmal auf 5V?

Exakt, der Schleifer liegt auf Pin 3. Die Spannung lässt sich auch schön
zwischen 0V - 5V regeln und mit einem Voltmeter nachmessen. :-(
Autor: holger (Gast)
Datum:

Vieleicht braucht das Display eine negative
Kontrastspannung.
Autor: P. M. (dot)
Datum:

holger wrote:
> Vieleicht braucht das Display eine negative
> Kontrastspannung.

Danke für den Tipp. Da hätte Pollin aber bessere Arbeit im Datenblatt
walten lassen können. Gerade als Anfänger doch etwas, wo man mit solchen
Spannungen nichts falsch machen möchte, um nicht das LCD zu beschädigen.
Gut das das Eva-Board noch einen RS232 Anschluss bestitzt, an dem man
sich -9V abgreifen kann. Bei knappen -2V sehe ich auch endlich den
"Balken". Na dann kann ja das Spielen losgehen.

mfg
Autor: Stefan B. (stefan) Benutzerseite
Datum:

Unter LCD wurde im Abschnitt FAQ eine Liste angefangen, in der
derzeit zwei LCDs mit negativer Konstrastspannung stehen. Die Liste
bitte erweitern, wenn euch solche LCDs begegnen. Danke.
Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Hi

1 min gurgeln: Anhang.

LCD braucht -2,5V.

MfG Spess
Autor: Heiko H. (mail23)
Datum:
Angehängte Dateien:

Hallo,

ich habe ein 2x24 Display aufgetrieben und versuche dieses nun mit dem
Programm aus dem AVR-GCC-Tutorial ans laufen zu bringen.
Leider bekomme ich keine Ausgabe, sondern nur alle dots der ersten Zeile
leuchten. Das Programm befindet sich im Anhang. Ich habe lediglich die
Datei lcd-routines.h auf Port C umgeschrieben. (Der Code befindet sich
im Anhang)
Ich verwende das STK500 mit einem Atmega8 Prozessor.

Ich verstehe nicht so richtig, was dieser Kommentar im Hauptprogramm
bedeuten soll?
//    Anpassungen im makefile:
//    ATMega8 => MCU=atmega8 im makefile einstellen
//    lcd-routines.c in SRC = ... Zeile anhängen

Die Datei lcd-routines.h hat sich von selbst unter External Dependencis
eingetragen. Die Datei lcd-routines.c musste ich unter Source Files
einfügen. (siehe Anhang)

Mit den LCDs das scheint zwar ein leidiges Thema zu sein, aber
vielleicht findet sich ja trotzdem jemand, der mir helfen kann. Vielen
Dank schon mal,

Gruß Heiko
Autor: dummy (Gast)
Datum:

Jeder der noch alle Tassen im Schrank hat klickt
nicht auf ein Word Dokument. Geht das nicht als Textdatei?
Autor: Heiko H. (mail23)
Datum:
Angehängte Dateien:

Ist halt noch ein Screenshot mit drin. Aber hier auch nochmal nur der
Quellcode als Textdatei:
Autor: Heiko H. (mail23)
Datum:

Habt ihr keine Idee? Auch Vermutungen könnten mich auf die richtige Spur
bringen! Danke
Autor: Otto (Gast)
Datum:

stimmt der Anschluss, sind die richtigen Ports im Programm und stimmt
die Taktfrequenz?

Otto
Autor: Stefan B. (stefan) Benutzerseite
Datum:

@ Heiko

Der Kommentar bezieht sich auf die Anwender, die ohne AVR-Studio
arbeiten und deshalb die lcd-... Dateien und den µC-Typ in ihrem
Makefile eintragen müssen.

Benutzer des AVR-Studios müssen nur die lcd-routines.c Datei ins Projekt
aufnehmen. Die dazugehörende lcd-routines.h wird dann anhand des
#include beim Kompilieren (Build) automatisch gefunden. Das Eintragen
des µC macht man beim AVR-Studio beim Anlegen eines neuen Projekts.

Deine Anpassung in der lcd-routines.h, die man in dem Screenshot sieht,
kann kritisch sein.

Du definierst LCD_PORT auf PORTC und LCD_DDR auf DDRC. RS und EN werden
auf PC4 bzw. PC5 gelegt. Direkt darunter steht noch der alte Kommentar,
dass die Datenleitungen auf PD0 bis PD3 liegen. Wenn das so auch in
Hardware verdrahtet wurde, geht das nicht. Die Datenleitungen müssen an
PC0 bis PC3 angeschlossen werden. Sinnvoll wäre hier ein Anhang mit dem
Schaltplan deines Aufbaus. Man kann die Steuerleitungen und die
Datenleitungen an verschiedenen Ports betreiben, das erfordert aber eine
Anpassung in den lcd-... Sourcen.

In der lcd-... Source steht auch noch der F_CPU Wert von 8000000, um das
Programm passend für 8 MHz zu übersetzen. Hast du deinen µC auch auf 8
MHz eingestellt, damit die physikalisch vorhandene Taktquelle auch
benutzt wird (Stichwort Fuses)?

Ansonsten:

Gibt es ein Datenblatt des Displays oder wenigstens ein Foto von der
Platinenseite mit lesbaren Beschriftungen der ICs?

Hast du schon am Kontrast gespielt, um zu sehen, ob sich unter den
schwarzen Blöcken auf der Anzeige Zeichen verbergen?
Autor: Heiko H. (mail23)
Datum:
Angehängte Dateien:

Hallo Stefan,

also ich habe auch alles entsprechend auf PortC verdrahtet. Den
Contoller lasse ich auch auf 8 Mhz laufen. Ich habe jetzt auch noch ein
Poti zum Kontrast einstellen hinzugefügt. Hinter den schwarzen Blöcken
verstecken sich leider keine Zeichen.

Ein Datenblatt von dem Display habe ich leider nicht. Habe allerdings
mal zwei Bilder von dem Display gemacht.
Auf der Platine steht unten: HDM-24108H 24111H 24216HA
Auf zwei der drei ICs steht: KS0065
Autor: Heiko H. (mail23)
Datum:
Angehängte Dateien:

Hier noch das Bild mit der Frontansicht. Die schwarzen Blöcke kommen
leider schlecht raus.
Autor: Otto (Gast)
Datum:

Bei "schwarzen Klötzchen" stimmt die Initialisierung nicht.....

Otto
Autor: Stefan B. (stefan) Benutzerseite
Datum:

Der wichtige Chip ist der LCD-Controller. Der Kontrast ist ziemlich weit
aufgedreht. Und das LCD scheint nur einzeilig initialisiert zu sein, so
wie es der Power-Up Reset des LCDs macht. Das spricht dafür, dass der
Software-Init von deinem Programm aus nicht funktioniert hat.

Der LCD-Controller ist bei deinem Display ein SED1278F und dafür gibt
es ein ausführliches Datenblatt:
http://www.lcd-module.de/eng/pdf/zubehoer/sed1278.pdf

Der SED1278F ist lt. Datenblatt kompatibel mit dem "Standard" HD44780,
aber du kannst in Foren nachforschen, ob sich beide in Feinheiten
unterscheiden. Und du kannst Programm und die Datenblätter von
HD44780 und SED1278F Seite an Seite bzgl. Kommandos und Timing
vergleichen.

In der lcd_init() des AVR-GCC-Tutorials ist z.B. eine erste Pause von
15ms drin. Laut Datenblatt sollte die aber mind. 30ms betragen. In dem
Beispielcode im AVR-GCC-Tutorial ist auch ein Kommentar zur Länge des
Enable drin.

// erzeugt den Enable-Puls
void lcd_enable(void)
{
   // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers einfügen
   // http://www.mikrocontroller.net/topic/81974#685882
   LCD_PORT |= (1<<LCD_EN);
    _delay_us(1);                   // kurze Pause
   // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers verlängern
   // http://www.mikrocontroller.net/topic/80900
   LCD_PORT &= ~(1<<LCD_EN);
}


Ich musste diese Pause _delay_us(1) schon mal auf das vierfache
verlängern
(http://www.mikrocontroller.net/articles/Pollin_Fun...)
Autor: Heiko H. (mail23)
Datum:

So, jetzt funktioniert das ganze. Fragt mich aber nicht warum.

Auf einmal lies sich das Programm nicht mehr übertragen. Es wurde
angemahnt, das die ISP-Frequenz zu niedrig ist. Daraufhin habe ich die
ISP-Frequenz von 1,21 kHz auf 115,2 kHz hochgesetzt und nun funktioniert
das ganze. Hat jemand eine Idee, was da los war?

viele Grüße, Heiko
Autor: Michael W. (Gast)
Datum:
Angehängte Dateien:

Hallo ich habe da ein Problem,

ich soll den HD44780 an einem Mikrocontroller 80C517A der Firma Infinion
zum laufen bringen.

Nun mein Problem wie ihr im Quellcode lesen könnt habe ich so einiges an
Wartezeiten eingefügt ich denke sogar sehr viel mehr als reichlich.

Nun passiert folgendes ich starte mein Programm in dem ich einen
Schalter am Port 5.0 betätige. Daraufhin wird das Display initialisiert
das kann ich sehen die schwarzen blöcke verschwinden der Cursor
erscheint. Dann soll er laut meinem Programm ja das Wort "HALLO"
ausgeben. Doch dort stimmt dann irgendetwas nicht. Der Dursor springt
von Stelle zu Stelle auch so viele Stellen wie das Wort Hallo hat. Nur
erscheint kein einziger Buchstabe.
Dann beginnt der Cursor wieder von vorn.

Bitte um Hilfe

Vielen Dank schonmal im Vorraus

Micha

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net