Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere LCD am I2c
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, 12:09
Naja... man könnte die Busleitungen zu den LCDs halt nacheinander schalten - nicht sehr elegant, aber geht bestimmt.
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, 12: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
Könnte man nicht z.B. einen Controller vor jedes LCD schalten. Mit dem sollte es ja gehn oder nicht? oO
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, 12: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
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
Hi, dann nimm doch statt der Konstante eine Variable, die kannst du dann hochzählen und die LCD's am selben BUS nacheinander ansprechen.
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, 01:25
mach doch mehrere constanten für jedes display eine
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, 08: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, 17:58
Hallo,
geht nich gibbs ned :-)
schau ma mal
https://www.roboternetz.de/phpBB2/viewtopic.php?p=311947#311947
Elektro-Jack
19.09.2007, 16: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.
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 ??
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.