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-Tutorial#Anschluss_an_den_Controller 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
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?
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. :-(
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
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.
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
Jeder der noch alle Tassen im Schrank hat klickt nicht auf ein Word Dokument. Geht das nicht als Textdatei?
Ist halt noch ein Screenshot mit drin. Aber hier auch nochmal nur der Quellcode als Textdatei:
Habt ihr keine Idee? Auch Vermutungen könnten mich auf die richtige Spur bringen! Danke
stimmt der Anschluss, sind die richtigen Ports im Programm und stimmt die Taktfrequenz? Otto
@ 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?
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
Hier noch das Bild mit der Frontansicht. Die schwarzen Blöcke kommen leider schlecht raus.
Bei "schwarzen Klötzchen" stimmt die Initialisierung nicht..... Otto
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.
1 | // erzeugt den Enable-Puls
|
2 | void lcd_enable(void) |
3 | {
|
4 | // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers einfügen
|
5 | // http://www.mikrocontroller.net/topic/81974#685882
|
6 | LCD_PORT |= (1<<LCD_EN); |
7 | _delay_us(1); // kurze Pause |
8 | // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers verlängern
|
9 | // http://www.mikrocontroller.net/topic/80900
|
10 | LCD_PORT &= ~(1<<LCD_EN); |
11 | }
|
Ich musste diese Pause _delay_us(1) schon mal auf das vierfache verlängern (http://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard#Z.C3.A4hler_mit_LCD-Anzeige)
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.