Forum: Mikrocontroller und Digitale Elektronik 4Bit Modus beim LCD KS0073? Grundsatzfrage


von Alex Schmidt (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

habe hier nen LCD-Modul mit einem KS0073 Chip drauf. Dieser hat 4 Zeile
a 20 Zeichen.

Eines vorweg: Ich habe das Tutorial hier durchgemacht und das Teil
schon 5 man geprüft, habe alles so nach Vorschlag im Tutorial
angschlossen.

Wenn ich das beiliegende Test-Programm starte passiert nichts. Die
LCD-Anzeige zeigt immer nur 4 schwarze Balken. So, dann dachte ich mir,
schreib ich mir den ASM-Code selbst und bin nun an folgende 3 Punkte
gestoßen, die mir echt Kopfzerbrechen bereiten:

1. 4-Bit Modus einstellen:
Im Datenblatt heisst es, dass ich folgende Bitkette Übertragen soll und
dann befinde ich mich im 4-Bit Modus:

00100000

Ja ich verstehe aber nicht ganz. Das sind doch mehr als 4 Bit! Wie soll
ich den das senden, ich habe doch nur 4 Bit? nachher mit dem Swap ist
mir klar aaaber. Wie soll ich in den 4-bit modus mit einem 8-Bit Befehl
gelangen.. ?!?!?!


2. Im Beispiel hier im Tutorial sendet der Autor 3 mal irgendeinen
Init-Befehl, ganz am Anfang:

ldi temp1, 0b00000011        ;muss 3mal hintereinander gesendet
out PORTD, temp1             ;werden zur Initialisierung
usw...

Wie kommt der Autor auf sowas? Was soll dieser Befehl bewirken und vor
allem brauch ich das für den KS0073 überhaupt?!

3. Der KS0073 hat ne erweiterte Befehlskette, die man durch setzen
eines RE-Bits verwenden kann. Zum Beispiel würde ich gerne den 4-Zeilen
Modus einschalten. Diesen kann ich jedoch nur durch zusätzliches Setzen
dieses RE-Bits erreichen. Die Frage die mich Quält ist: Was soll das
für ein PIN sein?

Ich hab jetzt nur noch drei, die in Frage kommen:

Reset
und zwei für die Hintergrundbeleuchtung. Gut, bleibt ja nun noch Reset
aber das kommt mir auch komisch vor, ist das richtig so?

Anbei lade ich mal das Datenblatt hoch, vielleicht kann mich jemand
endlich erleuchten, ich mach hier schon seit 3 Tagen an dem Teil rum
:-(((((((((( und NIX


Danke

P.S. ich benutz hier nen STK500!

von Alex Schmidt (Gast)


Lesenswert?

Nachtrag:

Das mit dem RE-Bit hab ich jetzt kapiert.. mein Fehler!

Der Rest ist jedoch immer noch unklar :-(

von Thomas Forster (Gast)


Lesenswert?

Vielleicht hilft es dir:

http://www.mikrocontroller.net/forum/read-1-181750.html

Nimm das Datenblatt, welches ich dort gepostet habe.

von CaW (Gast)


Lesenswert?

Hallo,

Hab ähnliche Probleme gehabt ... so gings bei mir:
Verwendete Programme AVR Studio, yaap (alles wie im tutorial).
Eigentlich nur die 8bit Beispielinitalisierung im mitgelierferten
Datenblatt des LCDs (seite 3)
durch 4 bit Initalisierung ändern (DB4=DL in Function set auf Null
setzen)
eventuell an Kontrasteinstellung drehen :-)

Initalisierungsteil im tutorial durch folgende Initalisierung ersetzen



lcd_init:
             ldi  temp3,50
powerupwait:
             rcall delay5ms
          dec  temp3
             brne  powerupwait

    ldi temp1, 0b00100100          ; 4bit-Modus einstellen, RE = 1
           rcall lcd_command

             ldi temp1, 0b00001001    ; 4-Zeilen Modus
    rcall lcd_command

    ldi temp1, 0b00100000         ; 4bit-Modus einstellen, RE = 0
    rcall lcd_command

    ldi temp1, 0b00001111    ; Display ein, Cursor ein, Cursor blinken
    rcall lcd_command

    ldi temp1,0b00000001    ; Clear Display Cursor 1. Zeile 1. Spalte
    rcall lcd_command

    ldi temp1, 0b00000110    ; Cursort Auto-increment
    rcall lcd_command

    ret

von ??? (Gast)


Lesenswert?

zu 1.

00100000 = 0010 in 4-Bit! die restlichen (oberen) 4 Bits sind alle
0...
Das ist ja der Trick bei der Sache. Wo nix ist muss man nix senden.
Und ob ich nix sende oder garnix angeschlossen hab ist in diesem Fall
egal...

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.