Forum: Mikrocontroller und Digitale Elektronik LCD 16x1 4bit


von Hansi (Gast)


Lesenswert?

Hallo
Habe ein Problem ich will mein Lcd ansteuern aber es funktioniert nicht 
so richtig. Hier mal der Code:

//Pin description
/*
P1.3 to P1.6 is data bus
P1.0 is RS
P1.1 is E
*/

void writedata(char t)
{
   RS = 1;             // This is data

   P1 &= 0xE1;       // Make P1.3 to P1.6 zero
   P1 |= (t&0x1E);     // Write Upper nibble of data

   E  = 1;             // => E = 1
   delay(150);
   E  = 0;             // => E = 0
   delay(150);

   P1 &= 0xE1;       // Make P1.3 to P1.6 zero
   P1 |= ((t<<4)&0x1E);// Write Lower nibble of data

   E  = 1;             // => E = 1
   delay(150);
   E  = 0;             // => E = 0
   delay(150);
}

Kann man das mit den Null setzen so machen?
und kann ich die Pinbelegung so lassen?

von der_Alte (Gast)


Lesenswert?

Hallo Hansi,

tust Du das LCD-Modul auch initialisieren?

Warum nimmst Du nicht eine bewährte und fertige LCD-Library?

Tschau
Sepp

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hansi schrieb:
> Hier mal der Code:
Für welchen uC und welchen Compiler sollte der denn sein?

>   delay(150);
Was tut delay()?

>   P1 &= 0xE1;       // Make P1.3 to P1.6 zero
   Bit 76543210
0xE1 = 11100001
Da wird P1.4 bis P1.1 angesprochen.
Das passt also nicht so ganz zum Kommentar...

von Falk B. (falk)


Lesenswert?

Sieht nach MSP430 aus.

von Hansi (Gast)


Lesenswert?

Guten Morgen
Schon mal danke.
Hab leider keine fertige Libary für 8051er gefunden.
@lkmiller: Wenn ich das richtig verstehe müsste ich dann schreiben P1 &= 
0x87
mfg

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.