Forum: Mikrocontroller und Digitale Elektronik LCD Display testen .. ?


von Andi Borg (Gast)


Lesenswert?

Ich hab ein LCD Display aber bis auf die Beleuchtung tut sich nix.

Ab wann bekomme ich was zu sehen ? Sollte es schon genügen, Wenn + und
- und der Kontrast mittels Poti angeschlossen ist ? In dem Zusammenhang
ist häufiger von einer negativen Spannung für den Kontrast die Rede ..
aber laut Plan liefert der Mittelabgriff des Potis doch positive
Spannung ??? Geht das Display schon kaputt, wenn man mal 5 Volt + auf
den Kontrast gelegt hat ?

MFG

von Christoph W. (christoph)


Lesenswert?

keine Angst. Das verträgt die Kontrastspannung.

Steuer mit deinem Poti die Kontrastspannung richtung 0V. dann müsste
die erste zeile komplett dunkel erscheinen. Wie groß ist denn dein Poti
? 10 K sollten angebracht sein. sonderlich größer darf es aber nich
sein.
Danach (wenn das klappt) musst du das Display über die Schnittstelle
initialisieren und du kannst es verwenden.

von Christoph W. (christoph)


Lesenswert?

Wichtig noch : +5V an Vcc. 0V (masse) an GND und Kontrast per
Spannungsteiler zwischen +5V und 0V. nicht Vcc und Kontrast miteinander
durch ein Poti regeln lassen. Das wäre dann recht witzlos.

von Andi Borg (Gast)


Lesenswert?

Mein Display war anscheinend kaputt. Jetzt hab ich ein neues laufen und
tatsächlich kann ich die erste Zeile im Kontrast steuern.

Jetzt hab ich mir auch ein Programm in den Controller (R8C13) geladen
aber ich bekomm nix angezeigt. Da Programm wurde um die LCD Routine
erweitert, und der Rest des Programms funktoniert auch, nur bekomm ich
nix am Display angezeigt,

Es handelt sich um ein 2 * 16 Zeilen Display mit diesem HD 44xxxx Chip.
Angeblich unterscheiden sich die Displays aber in der Initialisierung.
Kann mal jemand über den Code schauen und mir sagen, ob was
wesentliches fehlt ??

Danke !!

>void delayus (unsigned int micros)
{
unsigned int i;
for (i = 0; i < micros; i++)
{
asm("nop");
}
}

void lcddata(unsigned char data)
{
delayus(100);
Port0 = data & 0xF0;
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}

void lcdctrl(unsigned char data)
{
Port0 = data & 0xF0;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x01;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}

void initlcd (void)
{
delayus(15000);
lcdctrl(0x28);
delayus(5000);
lcdctrl(0x28);
delayus(1000);
lcdctrl(0x28);
delayus(1000);
lcdctrl(0x0c);
delayus(1000);
lcdctrl(0x01);
delayus(5000);
}


initlcd();     //hier sollten die folgenden Buchstaben erscheinen ..
lcddata (65);  //A
lcddata (66);  //B
lcddata (67);  //C

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.