Forum: Mikrocontroller und Digitale Elektronik Ininitaliasierung LCD AVR Tutorial


von K_H (Gast)


Lesenswert?

Moin,

im Tutorial ist das LCD folgendermaßen initalisiert:

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

ich verstehe nicht warum dreimal hintereinander gesendet wird? Was wird 
da an das LCD gesendet?


Mfg

von Carl D. (jcw2)


Lesenswert?

Wie schon oft zu lesen, wird 3mal "8-Bit-Mode" gesendet, da man weder 
weiß ob 4 oder 8 aktive ist, noch ob sich der LCD-Controller bei 4-Bit 
in "warten auf 1. oder 2. Nibble" befindet. Mit der Sequenz kommt man 
garantiert in 8-Bit-Mode und kann dann initialisieren wie man's braucht.

Nachtrag: zum Mode-Umschalten reichen die oberen 4 Bit.

von AVRBastler (Gast)


Lesenswert?

K_H schrieb:
> Was wird da an das LCD gesendet?

Das was im Port geschrieben steht.

von Carl D. (jcw2)


Lesenswert?

AVRBastler schrieb:
> K_H schrieb:
>> Was wird da an das LCD gesendet?
>
> Das was im Port geschrieben steht.

An die an PD0..3 hängenden D4..7 des LCD-Controllers der Wert '0011' 
binär, was im 8-Bit-Mode der Initialisierung "8-Bit-Mode" entspricht und 
wenn 3mal hintereinander ausgegeben zuverlässig den 8-Bit-Mode 
einschaltet.

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.