mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HD44780 LCD - Keine Anzeige


Autor: P. M. (dot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
Vieleicht braucht das Display eine negative
Kontrastspannung.

Autor: P. M. (dot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
Hi

1 min gurgeln: Anhang.

LCD braucht -2,5V.

MfG Spess

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

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
Ist halt noch ein Screenshot mit drin. Aber hier auch nochmal nur der 
Quellcode als Textdatei:

Autor: Heiko H. (mail23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt ihr keine Idee? Auch Vermutungen könnten mich auf die richtige Spur 
bringen! Danke

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt der Anschluss, sind die richtigen Ports im Programm und stimmt 
die Taktfrequenz?

Otto

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch das Bild mit der Frontansicht. Die schwarzen Blöcke kommen 
leider schlecht raus.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei "schwarzen Klötzchen" stimmt die Initialisierung nicht.....

Otto

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.