LCD Initialisierung Mikrocontroller

Gast #4229080
Lesenswert?

Hallo,

ich lese und versuche den Code zur Initialisierung des LCDs zu 
verstehen.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

hierbei verstehe ich die folgenden Codes nicht:

powerupwait:

1)Warum bzw. was bedeutet 00000011?? Bedeutet das, dass an den Pins D0 
und D1 5V anliegen??
--------------------------------------------------------------
--------------------------------------------------------------
 ldi   temp1,    0b00000011   ; muss 3mal hintereinander gesendet
 out   PORTD, temp1        ; werden zur Initialisierung
---------------------------------------------------------------
---------------------------------------------------------------

2) Woher weiss ich das hier der 4 Bit Modus eingestellt ist??
 ldi temp1, 0b00000010        ; 4bit-Modus einstellen
 out PORTD, temp1

Bin echt am verzweifeln. Danke für jede Hilfe
Gast #4229118
Lesenswert?

Danke..


das mit den Funktionen (aus dem Dantenblatt) setzen oder 
Anzeigenkontrolle ein und aus, habe ich verstanden. Jedoch weiß ich 
nicht wo im Datenblatt die Einstellung des 4-Bot Modus bzw 3 mal 
hintereinander gesendet steht.
Kann mir jemand eventuell sagen auf welcher Seite ich gucken soll?

Lieben Dank
Gast #4229147
Lesenswert?

Oft steht es nirgends, aber man nutzt es, wenn man nicht weiß, in 
welchem Modus das Display sich gerade befindet, nicht nach einschalte, 
aber wenn der μC ge-resettet wird. Es kann sich, auch ungewollt, im 
8-Bit-Modus befinden oder im 4-Bit-Modus vor dem ersten oder zweiten 
Nibble. Letzteres macht jede Befehlsübertragung zum Glücksspiel.
  Nach 3x "4-Bit-Mode" ist das Display tatsächlich in diesem Modus. Alle 
anderen zu lesenden Verfahren führen zu Problemen, die man dann durch 
"abschalten" lösen muß.
Gast #4230577
Lesenswert?

Danke für die Antworten..

Ist dieser Code (aus: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD)  auch aus dem 
Datenblatt ableitbar? Zum Beispiel ich weiß nicht, warum der 4te Bit 
(1)*) im Register temp1 gesetzt wird .


lcd_data:
           mov temp2, temp1             ; "Sicherungskopie" für
                                        ; die Übertragung des 2.Nibbles
           swap temp1                   ; Vertauschen
           andi temp1, 0b00001111       ; oberes Nibble auf Null setzen
        -->  1)* sbr temp1, 1<<4              ; entspricht 0b00010000 
(Anm.1)
           out PORTD, temp1             ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
                                        ; 2. Nibble, kein swap da es 
schon
                                        ; an der richtigen stelle ist
           andi temp2, 0b00001111       ; obere Hälfte auf Null setzen
           sbr temp2, 1<<4              ; entspricht 0b00010000
           out PORTD, temp2             ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
           rcall delay50us              ; Delay-Routine aufrufen
           ret                          ; zurück zum Hauptprogramm

viele Grüße

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren