Forum: Mikrocontroller und Digitale Elektronik falsche Zeichen auf LCD


von Crush (Gast)


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

von Michael U. (Gast)


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

von Johannes A. (Gast)


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

von Crush (Gast)


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

von Sebastian (Gast)


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

von Michael U. (Gast)


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

von Michael U. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

grrrr, Anhang vergessen...

Gruß aus Berlin
Michael

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.