Frage zur Displayinitialisierung

Gast #89930
Hallo,
ich will ja nicht eure Zeit verschwenden aber ich habe da mal eine
Frage. Und zwar zur LCD intialisierung. Ich habe daheim alles mal
aufgebaut (funktioniert auch alles). Ich kann jetzt Text am LCD
darstellen. Das Programm kann ich auch nachvollziehen. Nur eben den
Teil mit der Displayinitalisierung nicht. Irgendwie stimmen die Bits
doch mit dem LCD-Datenblatt nicht überein? Könntet ihr mir vielleicht
ein paar Kommentare an den unteren Text schreiben?


lcd_init:
           ldi  temp3,50
powerupwait:
           rcall  delay5ms
           dec  temp3
           brne  powerupwait
           ldi temp1, 0b00000011        ;muss 3mal hintereinander
gesendet  ???
        ?  out PORTD, temp1             ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall delay5ms
           rcall lcd_enable             ;2
           rcall delay5ms
           rcall lcd_enable             ;und 3!
           rcall delay5ms
        ?  ldi temp1, 0b00000010        ;4bit-Modus einstellen
           out PORTD, temp1
           rcall lcd_enable
           rcall delay5ms
        ?  ldi temp1, 0b00101000        ;noch was einstellen...
           rcall lcd_command
        ?  ldi temp1, 0b00001100        ;...nochwas...
           rcall lcd_command
        ?  ldi temp1, 0b00000100        ;endlich fertig
           rcall lcd_command
           ret
Gast
Hallo Bastian,

habe selber noch kein LCD angesteuert und weis auch nicht welcher
controller drauf ist aber so vom gefühl her

du schaltest in den 4bit mod

       > ?  ldi temp1, 0b00000010        ;4bit-Modus einstellen
       |    out PORTD, temp1
       |    rcall lcd_enable
       |    rcall delay5ms
       > ?  ldi temp1, 0b0010 ??? 1000        ;noch was einstellen...

           und dann     4bit  u. 4bit

auf welche 4bit hört dein LCD da ????
würds einfach mal tauschen die beiden einstellung!
denke einen Test ist´s wert??

Gruß Stefan
Gast
Hallo Bastian,

meinte nur das du das disp nicht mit einem 8bit wort ansprechen kannst
da du es ja vorher schon in den 4bit modus hast ????
rein von der logik her

stimmt das so ?? hab selber noch nie mit einem lcd gespielt :-))

ich würde einfach diese beiden teile mal zum test tauschen im quell

                       rcall delay5ms
auf 4bit umgestellt>?  ldi temp1, 0b00000010   ;4bit-Modus einstellen

                       out PORTD, temp1
                       rcall lcd_enable
                       rcall delay5ms
8bit ausgabe >>     ?  ldi temp1, 0b00101000   ;noch was einstellen...

                       rcall lcd_command

gruß stefan
Gast
Achso,
also in dem Unterprogramm LCD_command werden anhand von dem Befehl
`swap´ die beiden Nipples also die unteren und die oberen 4 Bits
einzeln nacheinander ausgegeben.

Guckst du hier:
lcd_command:
           mov temp2, temp1
           swap temp1
           andi temp1, 0b00001111
           out PORTD, temp1
           rcall lcd_enable
           andi temp2, 0b00001111
           out PORTD, temp2
           rcall lcd_enable
           rcall delay50us
           ret

Mein Problem ist, dass ich die Bits die nacheinander an das LCD
geschickt werden, anhand von dem LCD-Datenblatt nicht nachvollziehen
kann.
Gast
0b00000010 = Clear Dislplay
Bei den Anderen sind schon die Parameter für 4/8 bit Modus,
Cursor, Shift links, Schriftgröße usw.

Guck mal bei displaytech
z.B. Cmd Function Set

RS = 0
RW = 0
Daten byte
0b0011NFXX

N = Anzahl Zeilen vom LCD (also 1 oder 2... 2 zeilen auch wenn es 4
sind)
F = Font 5x7 =0 Font 5x10 = 1

usw. steht eigentlich alles drin
Gast
Hy Sebastian,
also Clear Display ist doch schon mal 0b00000001.
Ich hab ja auch die Instruction Tabelle vor mir liegen, aber ich wüsste
gerne was bei dem Assemblertext nacheinander passiert.
Am besten wäre es wenn mir jemand grat mal neben den A.Text die
Kommentare dazuschreiben könnte.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.