LCD Display testen .. ?

Gast #362639
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
#362640
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.
Gast #362642
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.