Hilfe mit LCD Hitachi 44780!

OP #1449322
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!!!!
Gast #1449362
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.
OP #1449374
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.
Gast #1449468
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.
OP #1449494
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 :)
#1449528
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 ...

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