Forum: Mikrocontroller und Digitale Elektronik LCD Pins einzeln Ansteuern?


von marco (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

hab ein Prob mit meinem LCD. Ist ein 2x16 mit HD44780 im 4-Bit-Mode.
Und zwar ist es bei mir nicht möglich dem LCD einen eigenen Port zu
spendieren. Also, ich kann´s nicht an PortA Bit0..5 hängen sondern muss
es über die Ports verteilen (Data an PortA 0..3; RS an PortC 0; E an
PortD 0; oder so).

Testweise hab ich es erstmal an einen Port gehängt, um die Ansteuerung
klar zu kriegen.

Problem: Wenn ich die Daten in einem Rutsch mit "out" an den Port
gebe funzt alles wunderbar. Aber wenn ich die Portpins einzeln setze
kommt nur Müll raus.

Den SourceCode hab ich mal drangehängt.

MfG
marco

von Beeblebrox (Gast)


Lesenswert?

Hm, 2 Möglichkeiten. Entweder Du versuchst Dein Datennibble erst mit
0x0f zu verunden, dann den Porta mit 0xf0 zu verunden und dann noch das
Datenbyte mit dem Port zu verunden. In diesem Fall liegen die 4
Datenleitungen ganz kurz gemeinsam auf 0. Sollte das nicht gehen kannst
Du noch ein Latch dazwischenschalten, mußt dann aber einen weiteren Pin
für die Latch-Freigabe opfern. Dummerweise gibt es beim LCD keine
Clock-Leitung, CS-Leitung oder dergleichen. Soweit ich weiß ist die
Busy-Leitung ReadOnly.

von Peter D. (peda)


Lesenswert?

Das LCD ist quasi ein Latch, welches mit E die Daten übernimmt.

Alle anderen Pins müssen stabil bleiben, während E = 1 ist.

Oder anders gesagt, der Pin E muß als letztes auf 1 gesetzt werden,
dann min 1µs warten und E als erstes auf 0 setzen.

Solange E = 0 ist, kannst du die anderen Pins setzen wie Du lustig
bist.


Peter

von Malte Bayer (Gast)


Lesenswert?

Eben so sieht es aus. Dein E-Pin am LCD verändert seinen Status nicht
und ist anscheinend immer HI. (oder immer LO)

Müsste so aussehen

Init: E= Low

Zeugs ans LCD senden:
-RS und RW setzen wie du sie brauchst
-4bit Daten anlegen
-5ns Pause
-E = HI
-5ns Pause
-E = LO
-zweite 4bit Daten anlegen
-5ns Pause
-E = HI
-2-5ns Pause
-E = LO

Gruss Malte

von Beeblebrox (Gast)


Lesenswert?

Oh yeah. Den E-Pin habe ich voll vergessen. SChon lange her, daß ich den
Display-Treiber geschrieben habe :)

von marco (Gast)


Lesenswert?

das Enable kommt schon rüber so wie´s aussieht. Zumindest hüpft der
Cursor ab und zu durchs Display ( hab im Programm ne
Display-Shift-Schleife).

Ich denke mit der "LcdSet"-Routine muss irgendwas nicht stimmen.
Wenn ich die Schieberei überspringe und die Daten mit

;  out LcdPort,lcd ; Byte auf Ausgabeport

rüberschicke funzt es ja. Nur wenn ich mein Register "lcd" bitweise
nach links schiebe und jeweils entsprchend das Lcd-Bit setze (oder halt
nicht) gibt´s porbleme.

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.