mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur Displayinitialisierung


Autor: Bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chriss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für welchen display controller ist der Code?

HD44780 ?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bastian (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian Amthor (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/LCD...


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

viel spaß
Stefan

Autor: Bastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian Amthor (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.