Hallo!!! Ich habe ein Problem mit meinem LCD. Weil ich keine buchstaben oder zahlen darstellen kann. Ich habe schon alles was ich konnte ausprobiert. Denn Cursor hin-und herbewegen klappt alles aus -und einschalten..... Aber wenn ich möchte das was angezeigt wird, dann führt er anstatt was anzuzeigen lieber ein commando aus. Meiner Meinung nach, muss es mit diesem Code klappen. Das schema ist aus dem Datenblatt. Aber er schreibt nicht sondern springt in die zweite zeile und 8en platz. _delay_ms(200); //Vor dem start ein bisschen warten e_enable(); LCD=0x38; // 8-Bit-Modus, zwei zeilen, 5x8 e_disable(); _delay_ms(5); e_enable(); LCD=0x0E; //Display an, Cursor an, kein Blinken e_disable(); _delay_ms(5); e_enable(); LCD=0x06; //Entry Mode e_disable(); _delay_ms(5); e_enable(); // E aktivieren LCD=0x01; // Display löschen e_disable(); // E deaktivieren _delay_ms(5); // 5ms Warten rs_enable(); //RS aktivieren e_enable(); // E aktivieren LCD=0x48; // Hier sollte ein buchstabe 'H' angezeigt werden e_disable(); // E deaktivieren Ich hoffe ihr könnt mir helfen. Danke im Vorrraus!!!!
>Aber wenn ich möchte das was angezeigt wird, dann führt >er anstatt was anzuzeigen lieber ein commando aus. Meiner Meinung nach, >muss es mit diesem Code klappen. Das schema ist aus dem Datenblatt. Aber >er schreibt nicht sondern springt in die zweite zeile und 8en platz. Dann könnte man glatt auf die Idee kommen das mit dem RS Pin etwas nicht stimmt.
Danke für die schnelle Antwort. Aber am RS-Pin liegt es nicht, auf jedenfall nicht in der Verdrahtung. Kann natürlich intern kaputt sein. Und was ist mit dem Code? Ist doch eigentlich richtig oder? Ich hab jetzt leider keinen anderen LCD da, um es auszuprobieren.
>Aber am RS-Pin liegt es nicht, auf >jedenfall nicht in der Verdrahtung. Dann wird es wohl die Software sein die den RS Pin steuert.
Ich hab aber keine Ahunug, was an der software falsch sein könnte. Den RS pin hab ich mit nem Spannungsmesser gemessen und er funktioniert.
Problem gefunden. Hab jetzt den RS-Pin per hand ( Drahtbrücke) geschalten. Und es ging. Der Controller setzt den pin wieder auf 0 obwohl ich es ihm nicht befohlen habe. Vielleicht braucht der LCD so viel strom, dass deshalb der Controller abstürzt.
>Der Controller setzt den pin wieder auf 0 >obwohl ich es ihm nicht befohlen habe. Buhaha ;) >Vielleicht braucht der LCD so >viel strom, dass deshalb der Controller abstürzt. Nö, du setzt den Pin vermutlich selber wieder auf 0. An welcher Stelle des Programmes musst du noch rausfinden.
ich würde mal tippen... rs_enable(); //RS aktivieren e_enable(); // E aktivieren *<--- hier*
Danke stimmt. Aber warum?? Bei mir war es so definiert: #define rs_enable() PORTB |=(1<<PB1); #define rs_disable() PORTB &=~ (1<<PB1); #define e_enable() PORTB |=(1<<PB0); #define e_disable() PORTB &=~ (1<<PB0); und jetzt hab ichs so geschrieben und es funktioniert: _delay_ms(5); PORTB=(1<<PB0)|(1<<PB2); PORTD=0x48; // Jetzt kommt ein 'H' heraus PORTB &=~(1<<PB0); _delay_ms(300); Vielen Dank!!! Ich glaub ich wäre nie draufgekommen. oder erst in ein paar jahren :)
Alex L. schrieb: > Danke stimmt. Aber warum?? Bei mir war es so definiert: > #define rs_enable() PORTB |=(1<<PB1); > #define rs_disable() PORTB &=~ (1<<PB1); > .[..] > PORTB=(1<<PB0)|(1<<PB2); Fällt Dir was auf? Der funktionierende Code verwendet PB2, nicht PB1. Hättest Du
1 | #define LCD_RS PB2
|
2 | ...
|
3 | #define RS_ENABLE PORTB |= 1<<LCD_RS
|
genommen, wäre das nicht passiert ...
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.