PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere LCD am I2c



feitzi
05.09.2007, 04:50
Ich möchte gerne 6 Stk LCD am I2c-Bus ansteuern.
Komme aber leider nicht dahinter wie das funktioniert.
Mit 1 Stk LCD klapt´s wunderbar. aber bei mehreren ist die Pcf adresse das problem, da ich die constante nicht verändern kann.
Programmauszug in Bascom
'--------------------------Für I2C LCD -----------------------------------------

Const Pcf8574_lcd = 112 'PCF Adresse für LCD (original Pcf8574_lcd =70)
$lib "Lcd_i2c.lib" 'I2C Treiber für das LCD
Dim _lcd_e As Byte
_lcd_e = 128 'Für LCDs mit 1 Controler

Waitms 300
Config Lcd = 16 * 2

Danke schon mal für Eure Hilfe
feitzi

stefan_Z
05.09.2007, 11:09
Naja... man könnte die Busleitungen zu den LCDs halt nacheinander schalten - nicht sehr elegant, aber geht bestimmt.

feitzi
05.09.2007, 11:19
Hallo stefan_Z

Wie meist Du das ?? Busleitungen hintereinander schalten

Ich möchte auf jedem LCD etwas anderes ausgeben.

Gruß feitzi

pctoaster
05.09.2007, 11:20
Wenn Du die Adresse des I2C Bus am LCD selbst nicht ändern kannst, hast Du Pech gehabt.
Mehrere Geräte mit gleichen Adressen an einem Bus geht eben nicht.

Gruß
pctoaster

M@tes
05.09.2007, 11:29
Könnte man nicht z.B. einen Controller vor jedes LCD schalten. Mit dem sollte es ja gehn oder nicht? oO

feitzi
05.09.2007, 11:39
Das ganze soll ein Datenlogger werden. Ich bekomme über den CAN-Bus Werte, die ich über 6 LCD´s ausgeben soll (Damit der Benutzer keine Knöpfe drücken oder drehen muss)

gruß feitzi

pctoaster
05.09.2007, 11:52
Du hast nur 3 Möglichkeiten:
a) LCDs verwenden, die in der Adresse änderbar sind.
b) die I2C Schnittstellen softwareseitig nachbilden und damit über 12 Ports 6 verschiedenen I2C Schnittstellen zur Verfügung stellen.
c) mehrere MCs mit 2 I2C verwenden, die jeder ein LCD ansteuern und mittels des 2. I2C mit den Haupt MC kommunizieren.

Gruß
pctoaster

feitzi
05.09.2007, 11:57
Ich steuere die LCD´s über einen PCF8574 an. Die Anzeigen haben also jeder seine eigene Adresse. Es ligt also in der Software. Ich muß die Adresse im Programm ändern. aber wie mach ich das ??

Gruß feitzi

Tido
05.09.2007, 13:00
Hi, dann nimm doch statt der Konstante eine Variable, die kannst du dann hochzählen und die LCD's am selben BUS nacheinander ansprechen.

feitzi
05.09.2007, 19:14
Auf die Ide statt einer Constante eine Variable zu nehmen binn ich auch schon gekommen. jedoch funktionierts nicht mit einer Variable

Grüß feitzi

chill-flo
06.09.2007, 00:25
mach doch mehrere constanten für jedes display eine

feitzi
06.09.2007, 05:16
Hab ich scon versucht. aber in der lcd_i2c.lib ist eine constante hinterlegt(Pcf8574_lcd ), die muss ich im Programm definieren (Const Pcf8574_lcd = 112). statt 112 (Adresse des PCF) eine Variable einsetzen geht leider auch nicht.

Gruß
feitzi

pctoaster
06.09.2007, 07:11
Tja, ein Grund, kein Bascom zu verwenden. :-(
Machs in C oder Asm.
(Ich weiß, das ist nicht sehr konstruktiv..) Aber ich habe auch mal eine kurze Zeit MCs in Basic (C-Control) programmiert und bin dann ganz schnell wieder davon abgekommen. Vor allem, wenn es etwas anspruchsvoller werden soll.
Und ich bin froh drüber. ;-)

Gruß
pctoaster

linux_80
06.09.2007, 16:58
Hallo,

geht nich gibbs ned :-)

schau ma mal
https://www.roboternetz.de/phpBB2/viewtopic.php?p=311947#311947

Elektro-Jack
19.09.2007, 15:45
Hallo,

ich habe eine Anwendung mit mehreren pcf8574 gemacht.
Da konnte man sie aber über die A0-2 Leitungen unterschiedlich adressieren.

Ich würde Sie über die A0-2 Leitungen so ansteuern dass sich nur einer
zur Zeit die "richtige" Adresse hat und die anderen dadurch inaktiv.
z.B 3 Ausgänge vom Atmel auf einen 3zu8 Decoder (z.B. 74HCT138 glaub ich) und dann diese Ausgänge auf eine Adressleitung von jedem PCF8574.

Den I2C Bus irgendwie zu schalten hate ich für gefährlich.

feitzi
21.09.2007, 18:59
die Adressleitungen zu schalten hab ich schon probirt. Aber da fängt das LCD zu spinnen an.
Wie hast Du dein Projekt realisiert ?? Hast Du eine Lib gehabt, oder hast Du die LCD´s direkt angesteuert ??