Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung kleine Probleme


von Marcus Welzel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab jetzt nach langem probieren endlich mein Displaytech 162 am
laufen.
Hab allerdings zwei Probleme die mich etwas stutzig machen. Ich kann
nur kleine Buchstaben ausgeben, sobald ich einen Großen schreiben will
schreibt er nur ein Leerzeichen.
Hab schon probiert die Register binär zu füttern, aber auch da
übernimmt er nur Kleinbuchstaben und keine Großen.

Habt ihr einen Tipp wodran das liegen könnte?

Angehangen ist das Datenblatt


Eine Frage hätt ich noch: Gibt es irgendwo ein Tutorial oder so etwas,
das beschreibt wie man in die 2. Zeile wechselt?
Hab dadrüber leider nichts gefunden.

Hab allerdings auch den Eindruck als ob das Display die 2. Zeile nicht
initialisiert hat, da wenn ich den Kontrast ganz hoch schiebe nur die
obere Zeile schwarz wird.

Könnte dieses Fehlerbild auch auf einen defekt hindeuten?

gruß Marcus

von Wodran ;) (Gast)


Lesenswert?

Also ich tippe mal darauf, dass die 2.Zeile nicht initialisiert ist.
Falls du das Display im 8-bit mode betreibst (Info fehlt, genau wie der
Code), bekommst du laut deinem Datenblatt den Cursor folgendermaßen in
die 2.Zeile. --> siehe SET DD RAM ADDRESS

Datenregister = 0xC0;
gefolgt von einer fallenden Flanke am E Pin (Timing einhalten!)

Und such dir mal das Datenblatt vom HD44780 raus, da erhälst du ein
paar mehr Infos.

Gruß

von Cristian Grigoruta (Gast)


Lesenswert?

Du musst beim Initialisieren im SET FUNCTION ABSCHNITT DAS DB3 = 1
setzen um in den zweizeiligen Modus zu wechseln!!!!
Probiers mal und sag bescheid wennst noch probs hast!!!

von Cristian Grigoruta (Gast)


Lesenswert?

SET
FUNCTION
L L L L H DL N F X X

Das N muss für einen zweizeilen - Betrieb auf HIGH gesetzt werden.

von Marcus Welzel (Gast)


Lesenswert?

Initialisiert hab ich bis jetzt so:

           ldi temp1, 0b00110000
       out PORTD, temp1
           rcall lcd_enable             ;init fs
           ldi temp1, 0b00110000
       out PORTD, temp1
           rcall lcd_enable             ;init fs
           ldi temp1, 0b00110000
       out PORTD, temp1
           rcall lcd_enable             ;init fs
           ldi temp1, 0b00111000
                   out PORTD, temp1
           rcall lcd_enable             ;function set
           ldi temp1, 0b00001000
       out PORTD, temp1
           rcall lcd_enable             ;aus
           ldi temp1, 0b00000001
       out PORTD, temp1
           rcall lcd_enable             ;clear
           ldi temp1, 0b00000110
       out PORTD, temp1
           rcall lcd_enable             ;entry mode set

ich betreibs im 8bit modus
eigentlich sollte das doch stimmen oder?
wieso übernimmt er das nicht?

und habt ihr ne idee wieso das display nur kleine buchstaben schreibt?
buchstaben übergeb ich ihm mit:

           ldi mp, 'h'
           rcall lcd_data

lcd_data:
     sbi PORTC, 4
     rcall delay5ms
     rcall delay5ms
           out PORTD, mp
     rcall delay5ms
     rcall delay5ms            ;ausgeben
           rcall lcd_enable
     rcall delay5ms            ;Enable-Routine aufrufen
           rcall delay5ms
     cbi PORTC, 4
           ret


Mag sein das paar Pausen überflüssig sind, war um auf Nummer sicher zu
gehen weil es anfangs nicht funktioniert hatte.
Aber wieso schreibt er nix großes?


gruß

von Marcus Welzel (Gast)


Lesenswert?

Ach ich hab alles richtig gemacht. Hab grade mal alle Leitungen
durchgemessen, da war ein winziger Lötzinnspritzer zwischen 2
Leiterbahnen.
Aber jetzt gehts :)
Das wird auch der Grund gewesen sein wieso meine 4-Bit Ansteuerung am
Anfang nicht funktioniert hat...
Achja kleine Ursache große Wirkung

Trotzdem danke an alle die mir geantwortet haben.

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.