Forum: Mikrocontroller und Digitale Elektronik LCD WH2004A HD44780 o. KS0066 Ansteuerungsproblem


von Joel J. (array)


Angehängte Dateien:

Lesenswert?

Hallo Mikrocontroller.net Forum,

nachdem ich mich durch euer AVR ASM Tutorial gekämpft habe und mich 
schon relativ gut mit den AVR µCs und ASM zurechtfinde, stehe ich nun 
vor meinem ersten großen Problem, und hoffe das mir hier jemand helfen 
kann.

Ich versuche mit ASM im 8bit modus ein 4x20 LCD WH2004A anzusteuern, 
wenn das gut klappt möchte ich auf den 4 bit modus umsteigen. Allerdings 
stehe ich hier bereits vor mehreren Problemen.
Das Display ist richtig angeschlosssen, DB0-DB7 an PB0-PB7
von meinem ATtiny2313. RS hängt an PD0 und E an PD1. RS liegt an GND.
Ich füge in den Anhang meinen ASM code, ich habe versucht die 4bit 
Version aus dem Tutorial in eine 8 bit Version umzuändern. Da sind 
bestimmt noch fehler drinn, aber ich finde im Moment keine mehr...

Nun zu meinem Problem:

Das Display zeigt nur in zeile 1 und 3 gelbe Balken an. Der 
Shop(sureelectronics) in dem ich das Display erstanden habe schreibt 
HD44780 aber das Datenblatt zu der Produktbezeichnung die auf einem 
sticker auf der Rückseite war sagt KS0066.
Was ist warscheinlicher? KS0066 oder?

Kann mir jemand ein paar Lösungsvorschläge geben? Oder einen Denkanstoß 
oder soetwas? Danke im Vorraus...

ArRaY

edit
Ich habe ganz vergessen hinzuzufügen, dass ich mich durch so alle 
threads mit betreff lcd gekämpft habe, aber irgendwie scheint nirgendswo 
die richtige lösung zu sein... Kontrastpoti vorhanden...

von Joel J. (array)


Lesenswert?

Keiner der nen Tipp geben könnte? :-(

von Klaus2 (Gast)


Lesenswert?

KS0066 muss imho bei 4 Zeilen anders init. werden - schau dir mal die 
lcd lib von perter fleury an, ist zwar C, aber da stehts drin...

die gelben balken sind übrigens ein gutes zeichen, wenn es ein 
invertiertes disp ist!

Klaus.

von Benedikt K. (benedikt)


Lesenswert?

Schau mal ins Datenblatt der Controller. Da steht was von Wartezeiten 
während der Initialisierung. Ich kann sowas in deinem Code nicht 
erkennen.

Irgendwie ist der ganze Code etwas merkwürdig:
1
      ldi    temp3,25
2
powerupwait:
3
4
        rcall    delay5ms
temp3 = r18 und das wird in delay5ms überschrieben.

1
        dec    temp3
2
        brne   powerupwait
Die Schleife wird daher endlos laufen.

1
    ldi  temp1,0b00011110
2
    out   lcdport,temp1
3
    rcall  lcd_enable      ;1
4
    rcall  lcd_enable
Hier fehlen die oben angesprochenen Wartezeiten.

1
    ldi  temp1,0b00000001
2
    rcall  delay5ms           <- Hier fehlt wohl ein rcall lcd_cmd
3
    ldi  temp1,0b00000110
4
    rcall  lcd_cmd

von Joel J. (array)


Lesenswert?

Vielen Dank für die Antwort, werde mich nun schnellstens daranmachen 
diese Fehler auszubügeln... Die Standart-4bitInit vom HD44780 in der 
Version aus dem Tutorial funktioniert schoneinmal, ich habe 
entsprechende c routinen gefunden, die funktionieren, und ich hoffe, 
dass nach den paar Änderungen auch die 8bit Methode geht.
Vielen Dank nochmal,
Joel

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
Noch kein Account? Hier anmelden.