Forum: Mikrocontroller und Digitale Elektronik Hilfe mit LCD Hitachi 44780!


von E. L. (robo-man)


Lesenswert?

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!!!!

von holger (Gast)


Lesenswert?

>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.

von E. L. (robo-man)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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.

von E. L. (robo-man)


Lesenswert?

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.

von E. L. (robo-man)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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.

von hownottobeseen (Gast)


Lesenswert?

ich würde mal tippen...


rs_enable();           //RS aktivieren
e_enable();            // E aktivieren *<--- hier*

von E. L. (robo-man)


Lesenswert?

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 :)

von Hc Z. (mizch)


Lesenswert?

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 ...

von E. L. (robo-man)


Lesenswert?

Oh man bin ich blöd!!!

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.