mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe beim LCD


Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Controller nimmst du denn?
Bei den AVR gibt es eine fertige Bibliothek für die Ansteuerung eines 
Alpha- numerischen Display mit 2x16 oder 2x24 Zeichen.

Autor: Florian K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns das nicht war, leg mal die anderen 4 Datenleitungen auf GND.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> Wenns das nicht war, leg mal die anderen 4 Datenleitungen auf GND.

Das ist unnötig bzw. kontraproduktiv: Die Pins haben einen internen 
Pullup. Wenn schon, dann also an Vcc.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist unnötig bzw. kontraproduktiv: Die Pins haben einen internen
> Pullup. Wenn schon, dann also an Vcc.

Hat leider auch nicht geholfen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der Pause hat holger schon erwähnt, davon abgesehen sieht die 
init gut aus.
Der SPLC ist etwas zickig, das war der einzige Controller der mit meiner 
Standardsoftware nicht ohne weiteres laufen wollte (von getesteten >20 
LCDs).
Hier gibts z.B. einen Thread dazu:
Beitrag "LCD --> klappt nur bei DB7 anfassen"

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

danke für Eure so zahlreichen Antworten. Es scheint aber am Display zu 
liegen, da ein Baugleiches, was ein Kollege besorgt hat, funktioniert.
Werde das Display umtauschen.

MfG Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.