LCD (4bit-mode) am PCF8574

Gast #126653
Lesenswert?

hmm, ok, ich dorktore gerade rum!

aber es scheint nicht zu funktionieren :-(
so habe ich das verbunden (power(vcc/gnd)und kontrast sind auch
angeschlossen)

LCD     PCF8574
---------------
RS      P5
R/W     P6
E       P7
D4      P0
D5      P1
D6      P2
D7      P4


könnt ihr mir sagen, wo mein fehler liegt?
Angehängte Dateien:
Gast #126658
Lesenswert?

ok, initialisierung funktioniert jetzt(zumindest mal etwas)!
also disp anschließen -> ein schwarze balken sind in zeile 1 & 3
sichtbar. zeile 2 & 4 sind nicht mit balken versehen.

initialisierung -> dislplay löscht die schwarzen balken und alle zeilen
sind leer.

kann ich das als "funktionieren" im sinne einer initialisierung
werten??
Gast #126663
Lesenswert?

hmp :-(
ok, ich habe nochmal versucht, das display im 8 bit modus anzusteuern
:-( ich habe nur ein komisches verhalten gemerkt!!!

SOLL : 4  D  d  t  $
MACHT: <  L  `  |  ,

usw...
ich raf einfach nicht, warum es mir einige (nicht alle) zeichen einfach
zahlen abändert!!!
Gast #126664
Lesenswert?

ok, erst prüfen!!!!
ich habe den datenport des disp mal eben an einen anderen port des
uc's gehäng! jetzt geht es!!! mir scheint, als sei der uc so langsam
irgendwie "komisch drauf".
nach 3 monaten und zig flashvorgängen am tag sollte ich ihn eventuell
mal tauschen.
Gast #126666
Lesenswert?

Du schreibst, das LCD hängt wie folgt an dem PCF:

LCD     PCF-Pin
D4      P0
D5      P1
D6      P2
D7      P4

Ich unterstelle mal, daß die P4 ein Schreibfehler ist und P3 heißen
sollte. Trotzdem schiebst Du in LCDOutc das lower Nibble um 4 bit nach
oben. Dabei ist es doch schon dort, wo es hingehört. Das Upper Nibble
mußt du nach unten schieben!

Bei den defines am Anfang hast Du für RS E RW die Bitnummer und nicht
die Wertigkeiten angegeben. Richtig wäre:
E 128 ; oder 1<<7
RW 64 ; oder 1<<6
RS 32 ; oder 1<<5

Zum Setzen und Löschen von Bits in einem Byte solltest Du mit den AND
und OR Operatoren arbeiten und nicht mit + und -! Sonst bekommst Du ein
Problem, falls die bits aus irgendwelchen Gründen vorher schon gesetzt
waren...

z.B.:

byte = byte & E;

byte = byte | (255-E);

Was war mit meinem Code? Lief der nicht?

CU

Markus_8051

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren