mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik falsche Zeichen auf LCD


Autor: Crush (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

Habe ein kleines Problem mit meinem neuen 2x20 Display. Das Display wird 
über einen SPLC780D Controller angesprochen. Der Befehlssatz scheint 
soweit aber zum HD44780 kompatibel zu sein. Angezeigt wird auch was, nur 
leider das Falsche.
Wenn ich mit dem Quellcode aus dem Tutorial arbeite, wird mir anstatt 
"Test" nur " !30" auf dem Display angezeigt. Habe schon sämtliche 
Zeichen durchprobiert, immer  werden andere Zeichen ausgegeben, als ich 
eingegeben habe. Wo ist hier das Problem.
Kann mir vielleicht nebenbei noch jemand erklären, was die letzten drei 
Befehle in den LCD Routinen aus dem Tutorial bezwecken, die nur mit dem 
Kommentar "noch was einstellen" versehen sind?

Gruß
Crush

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

finde in einem Tutorial auch ...naja... etwas sparsam kommentiert.
Im Zweifel immer das Datenblatt zum Controller befragen, da sind die 
Init-Abläufe normalerweise brauchbar kommentiert.

Aus meinem Init zum HD44780:

        ldi     TEMP_A,$38                  ; 8Bit - Mode, 2 Zeilen
        rcall   lcd_control

        ldi     TEMP_A,$06                  ; Increment, Not Shiftet
        rcall   lcd_control

        ldi     TEMP_A,$10                  ; Cursor Move, Shift off
        rcall   lcd_control

        ldi     TEMP_A,$0C                  ; Display an, Cursor aus
        rcall   lcd_control

        ldi     TEMP_A,$01                  ; Display löschen
        rcall   lcd_control

sollte etwa dem Tutorial entsprechen, sonst selber vergleichen. ;)

Gruß aus Berlin
Michael

Autor: Johannes A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mir die Hex-Werte ansehe:

T = $54 <-> (blank) = $20 (und kleiner)
e = $65 <-> ! = $21
s = $73 <-> 3 = $33
t = $74 <-> 0 = $30

kommt mir der Verdacht, dass die Datenbits 2 und 6 nicht bzw. immer als 
Null rüberkommen... Und wenn Du das 4bit Interface benutzt, reicht dafür 
schon eine einzige Leitung (D6 am LCD).

Gruß Johannes

Autor: Crush (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch beiden, habt mir sehr geholfen.

@Michael: Mit den Hinweisen kann ich mir den Rest jetzt zusammensuchen.

@ Johannes: Das war der entscheidende Hinweis. War kein Softwareproblem, 
sondern ein Kurzschluss zwischen zwei Pins. Den kurz behoben, jetzt 
läuft es.

Gruß
Crush

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 Michael U.

Könntest du deine LCD initalisierung mir vieleicht grad in Assambler 
code aufschreiben? oder einen Befehl übersetzen die andern sind ja fast 
gleich

"ldi     TEMP_A,$38                  ; 8Bit - Mode, 2 Zeilen
        rcall   lcd_control"


Das wäre nett ich bekomm nämlich mein LCD garnicht erst initialisiert :P


Danke


Ciao

Sebastian

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Sebastian:

das ist Assembler...
Ich habe mal das Projekt (WinAVR) komplett rangehangen.

Spiele ich zum Testen unbekannter Displays immer auf irgendeinen AVR, im 
Moment ein Mega8515, und stecke den Kram an mein STK200.

ldi     TEMP_A,$38                  ; 8Bit - Mode, 2 Zeilen
        rcall   lcd_control

Die Subroutine ist im besagten Archiv mit drin, schickt das Controlword 
aus TEMP_A zum Display.
TEMP_A ist ein beliebiges Reguster des AVR, meine benutzten Definitionen 
sind oben mit drin.

Die $38 (oder 0x38) oder die anderen Controlwords mal zerlegen, also als 
Binär aufschreiben (0b00111000) und mit den Displaybefehlen im 
Datenblatt des Controllers vergleichen.

Gruß aus Berlin
Michael

Autor: Michael U. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

grrrr, Anhang vergessen...

Gruß aus Berlin
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.