Hilfe beim LCD

Gast #1377405
Moin Moin und Mahlzeit,
ich habe ein LCD vom Typ: YM-1602C.
Wie man auf dem Anhang sehen kann, zeigt es nicht das was ich sehen 
will.
Laut Datenblatt ist es wohl nicht richtig inizialisiert.
Aber wir finden den Fehler im C Code nicht.
Das Display hat einen SPLC780 und soll HD44780 kompatibel sein.
Daher haben wir den Code aus dem Tutorial genommen und die Portpins 
angepasst.
Weiß jemand einen Rat?
Angehängte Dateien:
#1377412
Hallo,

Hellseher befragen?

Ich befürchte, hier im Forum hat keiner eine so gut funktionierende 
Galskugel, daß er sowohl Deinen Schaltplan als auch den geänderten Code 
erkennen kann...

Was erhoffst Du also bei der Fragestellung?
Die Bestätigung, daß das Display wohl nicht initialisiert wird, kann ich 
Dir geben.

Gruß aus Berlin
Michael
Gast #1377414
Kommt mir irgendwie bekannt vor...
Hast du sicher richtig initialisiert? So vom Gefühl her sieht das aus 
nach nur 1 Zeile initialisiert und dann der Kontrast viel zu hoch. Hast 
du ein Poti am Kontrasteingang?
Gast #1377578
Noch eine Idee: Im Bild sind nur 4 Datenleitungen zu sehen. Wenn der 
Code aber für 8 bit Busbreite ist, geht im 1. Init.-Schritt u.A. die 
Information "2 Zeilen" verloren.
Gast #1377764
Anbei erst ein mal der C-Code. Schaltplan folgt.

@Florian: Ich habe ein Poti am Kontrasteingang und auch wenn ich es 
runter drehe ändert sich nichts.

@Stefan: Ich nehme den ATMega32. Die Konstillation ist identisch mit der 
des E-Blockdisplaymoduls. Wenn ich dieses verwende, läßt es sich 
initialisieren.

@Florian 2ter Eintrag: Der Code ist für den 4Bit Betrieb gedacht. Siehe 
Dateianhang
Angehängte Dateien:
Gast #1377810
Anbei Schaltplan. Kontakte habe ich schon zig mal überprüft, man ist ja 
auch nur eine Mensch.

In der C Datei sind auch die #Defines angepasst.

Schon mal Danke für Eure Antworten, geht ja ratzfatz hier.
Angehängte Dateien:
#1377823
Hallo,

nicht alles durchgeschaut, aber in der Init:

   LCD_PORT &= 0xF0;          //löscht P0..3 => 0bxxxx 0000
   LCD_PORT |= 0x03;          //             => 0bxxxx 0011
   LCD_PORT &= ~(1<<LCD_RS);        // RS auf 0 =INSTRUKTION
//   LCD_PORT &= ~(1<<LCD_RW);        // RW auf 0 =INSTRUKTION

Wer setzt hier wo RW auf 0 für schreiben?

Gruß aus Berlin
Michael
Gast #1377836
Hallo Michael,

danke für deine schnelle Antwort. Aber RW ist immer konstant auf GND, da 
ich nur auf das Display schreiben möchte und nichts auslesen muss. Dies 
wird auch im Schaltplan deutlich.

MfG auch Michael
Gast #1377860
void lcd_init(void)
{
   // ben�tigte PortPins auf Ausgang schalten
   LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN);

   // Initialisierungsroutine 4Bit-Modus 0x3, muss 3mal hintereinander 
gesendet werden
   _delay_ms(15);


Geh da mal mit dem Delay höher auf 50 oder mehr.
Obwohl ich bei dem Aufbau eher auf Hardwarefehler tippe.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.