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?
k/a schau hier im AVR TUT mal nach LCD DIsplay sollte weiterhelfen und das ASM File LCD_ROUTINES sollte auch helfen ;)
ja, einfach an den uc funzt ja auch! ich wollte das ding ja jetzt über den pcf8574 an i2c hängen!
Hast du es denn erstmal ohne LCD getestet, also ob du Ausgangspegel am Schaltkreis nach belieben setzen kannst und auch Eingänge korrekt abfragen kannst?
ja, ich kann lesen und schreibend auf den pcf8574 zugreifen, wenn du das meinst.
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??
ich dreh noch durch!!! die initialisierung war falsch :-( wie wird so ein vermalledeites display im 4 bit mode initialisiert?
http://www.repairfaq.org/filipg/LINK/F_Tech_LCD2.html#TECHLCD_002 ich denk du hattest am direkt am µC am laufen????
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!!!
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.