2x16 LCD PROBLEM

Gast #3148457
Lesenswert?

moin moin

hab ein 2x16 LCD programmiert, dass ich soweit im Griff hab.
Ein Problem bleibt ich muss das Programm immer zwei mal flashen bevor 
ich Zeichen auf dem Display sehe.
Beim ersten flashen sehe ich keine Zeichen auf dem Display, aber der uC 
arbeitet.
Ich schätze mal das dies an der Initialisierung liegt ,oder was meint 
ihr ?

Datenblatt und Initialisierungsfunktion im Anhang.
Angehängte Dateien:
Gast #3148604
Lesenswert?

>>Auf den 1. flüchtigen Blick fällt auf, dass zwischen den Aufrufen
>>'send_command()' keine Pausen sind. Ich kenne kein Diplay, wo nicht
>>einige ms gewartet werden muß.

Leider nicht ,den die Wartezeiten stecken in der Funktion Process().
Gast #3148629
Lesenswert?

CKoch schrieb:
> Leider nicht ,den die Wartezeiten stecken in der Funktion Process().

Aber ein bißchen knapp. Du möchtest auch den 4-Bit Modus nutzen. Dazu 
verwende ich:

void lcd_init_nibble(char c)    // 4-bit-Wert ausgeben LCD_INIT
{
  lcd_nibble(c);
  _delay_ms(10);                // genug Zeit lassen
}

void init_lcd(void)             // LCD initialisieren
{
  warten();                     // 50ms
  lcd_init_nibble(0x30);
  lcd_init_nibble(0x30);
  lcd_init_nibble(0x30);
  lcd_init_nibble(0x20);
  lcd_cmd(0x28);                // im 4-bit mode
  lcd_cmd(0xc);
  lcd_cmd(1);
  warten();

Probiere es einfach aus.
Gast #3148688
Lesenswert?

Ich hoffe, Du hast mittlerweile gesehen, dass zur Initialisierung des 
LCDs immer nur ein Nibble ausgegeben werden darf. Bei Deinem 
'send_command()' werden immer zwei Nibble direkt nacheinander ohne Pause 
ausgegeben.

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