LCD mit KS0066 Controller Ansteuerung

OP #2374551
Lesenswert?

Hallo,

ich versuche mittlerweile schon den ganzen Tag ein LCD Display mit einem 
Atmega 88 anzusteuern. Funktioniert leider nicht wie ich mir das 
vorstelle, würde mich freuen wenn mal jemand über den Code drüberschauen 
könnte (siehe Anhang).

Das Display hängt an Port D. R/W ist auf GND. Auf Seite 4 in dem pdf 
findet sich die Initialisierungsbeschreibung.

Ich bin mittlerweile mit meinem Latein am Ende. Das Display zeigt 
während der Initialisierung kurzzeitig die erste Zeile komplett an, 
danach ist wieder dunkel. In jedem Fall werden aber keine Zeichen 
ausgegeben, obwohl ich keinen Fehler finden kann.

Grüße
OP #2374681
Lesenswert?

Ich habe den Code von Peter Fleury bereits ausprobiert und auch die 
entsprechenden Änderungen in der Header Datei vorgenommen. Allerdings 
konnte ich das LCD so nicht zum Laufen bringen, sodass ich einen 
einfacheren Code gewählt und angepasst habe, der für mich etwas 
übersichtlicher, da kürzer, ist.

R/W ist dauerhaft mit GND verschaltet, DB4-DB7 sind an den Pins 0-3 von 
Port D, RS an Pin 4 und EN an Pin 5, ebenfalls jeweils an Port D.

Zum Thema SAU, ich will nochmal versuchen den Fehler genauer zu 
beschreiben: Während der Initialisierung leuchtet die erste Zeile des 
Displays (2*8 Zeichen) kurz auf, anschließend bleibt das Display dunkel. 
Ich gehe davon aus, dass der Fehler in der Initialiserung liegen muss.

Selbstverständlich erwarte ich nicht, dass hier jemand den gesamten 
Sourcecode auseinander nimmt. Ich hatte gehofft, dass sich vielleicht 
jemand mit mehr LCD Erfahrung mal die Initialisierung anschauen 
könnte...
#2374734
Lesenswert?

R. S. schrieb:
> Ich habe den Code von Peter Fleury bereits ausprobiert und auch die
> entsprechenden Änderungen in der Header Datei vorgenommen. Allerdings
> konnte ich das LCD so nicht zum Laufen bringen, sodass ich einen
> einfacheren Code gewählt und angepasst habe, der für mich etwas
> übersichtlicher, da kürzer, ist.

Dann drängt sich der Verdacht auf, daß es auch an etwas anderem liegen 
könnte.

- Schaltung?
- Wie sicher bist du dir mit dem Takt?

In deiner lcd_init steht das hier:
1
  LCD_PORT=((1<<LCD_DB5)|(1<<LCD_DB5));
Es könnte vielleicht helfen, aus einer der Fünfen eine Vier zu machen?



BTW: die Definition von LCD_DB... in deinem Header ist für die Katz, 
weil du eh festverdrahtet die untersten Bits des Ports nutzst. Nicht das 
Problem hier, nur zur Sicherheit.
#2374735
Lesenswert?

R. S. schrieb:
> Ich gehe davon aus, dass der Fehler in der Initialiserung liegen muss.

Wenn es dann immer noch nicht läuft, kann man nach der Initialisierung 
ein paar Sekunden warten, bevor man etwas ausgibt - dann sieht man ob 
der Umschlag der Anzeige noch in der lcd_init kommt oder erst beim 
Schreiben.

Warum gibt man eigentlich 0b00110000 statt '0' aus? Damit jeder erst in 
der ASCII-Tabelle nachschlagen muß?
OP #2375008
Lesenswert?

Danke Leute!! Funktioniert :-) Besonders dir, Klaus, herzlichen Dank. 
Hilft immens, wenn nochmal jemand anderes drüber schaut.

Habe den Fehler mit LCD_DB5 behoben, die Delayzeiten verlängert und nach 
der Init noch eine Wartezeit eingefügt.

Dank und Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren