PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ein PC8574 für LCD und Taster?



highbeta
27.07.2005, 15:17
kann man eigentlich jeden Pin eines I2C-I/O- Expander unabhängig als Input und Output benutzen?

Wenn ich zum Beispiel ein LCD im 4-bit-Modus mit einem PCF8574 betreibe, habe ich folgende Belegung.

P0 - D4
P1 - D5
P2 - D6
P3 - D7
P4 - RS
P5 - RW (not used, set to 0 to ground for write)
P6 - E2 (on 1 or 2 line display nc)
P7 - E1

das heisst bei einem 2 zeiligen LCD sind Pin 5 und 6 frei. Können dort z.B.2 Taster angeschlossen werden, um Eingaben zu machen? Wenn ja, hat jemand vielleicht einen Codeschnippsel an dem man erkennt, wie es in Bascom aussehen könnte?

Danke

albundy
27.07.2005, 16:31
kann man eigentlich jeden Pin eines I2C-I/O- Expander unabhängig als Input und Output benutzen?

Ja, kann man.


Wenn ich zum Beispiel ein LCD im 4-bit-Modus mit einem PCF8574 betreibe

Wenn ja, hat jemand vielleicht einen Codeschnippsel an dem man erkennt, wie es in Bascom aussehen könnte?


Mit einem Schnipsel ist es nicht getan, du musst dir dann eine eigene Routine zum Ansteuern des LCD schreiben.
Nimm für das LCD besser Portpins des Controller.

highbeta
27.07.2005, 20:17
Das LCD läuft schon über den PCF8574. Ich verwende dafür die Lcd_i2c.lib.

Die Ansteuerung funktioniert einfach über den Befehl "LCD "text"".

Es gibt auch eine Lib für die Eingabe über ein Keypanel aber das eben nur mit einem zweiten PCF8574.

Wie der direkte Lesezugriff auf den Chip mit Bascom funktioniert, weiss ich leider nicht.

Grund für die Verwendung des I2C ist, dass Anzeige und Bedieneinheit von der Steuerungseinheit (mit AVR) getrennt werden und über ein möglichst einfaches Kabel verbunden werden sollen.

Mein Plan B sieht die Verwendung von 2 Tastern mit Widerständen vor. Die Auswertzung geht über einen ADC (wie auf dem RN-Board). Das ist eine Ader mehr und sollte bis zu einer gewissen Kabellänge gut funktionieren. Die zwei ungenutzten Pins am PCF8574 erscheinen mir aber als eine elegantere Lösung.

albundy
28.07.2005, 10:37
i2creceive $H40 , X '1 Byte vom PCF in X einlesen
X=X And &B01100000 'Zustand von Pin5 und 6 rausfiltern

Angenommen deine Taster mit Pullup schalten gegen GND:
X=96 - beide Taster offen
X=64 - Taster Pin5 geschlossen
X=32 - Taster Pin6 geschlossen

highbeta
28.07.2005, 10:53
genau das habe ich gesucht.
vielen Dank

09.10.2005, 23:03
Hallo,

meine Schaltung I2C--> LCD läuft nicht, ich frage mich nur, warum im Anschlussplan der Pin INT nicht belegt ist und das Beispielprogramm darauf zugreift, kann mir mal jemand sein funktionierendes Prog mailen ?

Gruss
A. Arndt

10.10.2005, 08:47
Das Beispielprogramm läuft schon. Habe meinen Code daraus destilliert. Überprüfe nochmal alle Deine PINs am PCF 8574, LCD und auch SDA und SCL am Controller.
Am Interrupt arbeite ich gerade, natürlich muss er dazu angeschlossen sein. Für das Testprogramm am LCD hat er aber keine Bedeutung.

Gruß und viel Glück
Higbeta