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.
CKoch schrieb: > Ich schätze mal das dies an der Initialisierung liegt ,oder was meint > ihr ? 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ß.
>>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().
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.