Forum: Mikrocontroller und Digitale Elektronik Frage zur Displayinitialisierung


von Bastian (Gast)


Lesenswert?

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

von Chriss (Gast)


Lesenswert?

Für welchen display controller ist der Code?

HD44780 ?

von Stefan (Gast)


Lesenswert?

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

von Bastian (Gast)


Lesenswert?

Also der Controller ist ein KS0070B.
Stefan: Auf welche 4 Bits soll denn mein LCD hören? Die werden doch
grat getauscht?!

von Stefan (Gast)


Lesenswert?

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

von Bastian (Gast)


Lesenswert?

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.

von Sebastian Amthor (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

Hallo,

google war mein freund "hd44780 initialisierung" und auch auf
deutsch
ein kleine zusammenfassung ist da zu finden

http://www.the-starbearer.de/Roboterelektronik/LCDDisplays/LCD.htm


muss doch noch mal mit einem LCD spielen :-))

viel spaß
Stefan

von Bastian (Gast)


Lesenswert?

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.

von Sebastian Amthor (Gast)


Lesenswert?

guck dir das mal an
http://www.displaytech.com.hk/pdf/char/164a series-v10.PDF


auf seite 6 ist sowas wie ein struktogramm

ich weiß du hast sicherlich nen anderen conrtroller... darum bestimmt
auch der unterschied mit CLS, aber im grunde sind die funktionen und
reihen folge identisch

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.