LCD WH2004A HD44780 o. KS0066 Ansteuerungsproblem

OP #1050596
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...
Angehängte Dateien:
Gast
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.
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
OP
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.