I2C-Ansteuerung von LCD mittels PCF8574

Begonnen von Ottmar, 25.05.2025, 15:18:10 CEST

Vorheriges Thema - Nächstes Thema

Ottmar

Hi zusammen,
Immer wieder mal war in diesem Forum von I2C die Rede. Da ichmich auch mit  dem Arduino befasse, harrte nun ein Modul mit dem 8Bit-Portexpander PCF 8574 darauf, mit diesem in ein LCD per i2c Daten zu übertragen.

Da war es schon aus schierer Neugierde unvermeidlich, mich mal mit diesr Art von Datenübertragung zu befassen, allerdings per Assembler und PIC18F14K22 (war gerade auf dem Steckbrett).

Das Ergebnis zeige ich mal hier. Hat einige Arbeit erfordert, indem ich dazu meine LCD_Init und auch diverse Unterprgramme zur LCD-Ansteuerung und Datenausgabe modifizieren musst.

Allerdings mit dem Lesen von Daten hapert es noch. Mal sehen, was ich da mit einem EEPROM 24C16 erreichen kann. 

mfG Ottmar

Hier mal das kleine Erfolgserlebnis im Bilde:

pic18

Ich würde den MCP23017 gegenüber den PCF 8574 vorziehen, da dieser 16 Bit IO hat. Wo gibt es beim Lesen Probleme? Du mußt nach der Adresse einfach das Read-Bit setzen (write =0, read =1)

picass

Um meinen Kommentar, welcher sich mir spontan aufdrängte, möchte ich mich nicht drum rum drücken, auch wenn er wenig schmeichelhaft ausfällt (für mich):
Voll neidisch sein!

Aber ein Glückwunsch zum Erfolg passt auch noch rein! :)
Grüße, picass

Ottmar

Danke für den Hinweis, zum 16Bit-Expander dafür habe ich aber derzeit keine Verwendung. Überhaupt habe ich mich mit i2c nur befasst um das Protokoll, insbesondere aber die Umsetzung zurAnsteuerung eines LCD, zu verstehen und praktisch auszuführen.

Das ,,Lesen" - etwas unglücklich von mir formuliert - bezog sich auf das i2c EEPROM 24C16. welches ich als nächstes angehe. Da ist mir die Adressierung noch ein Rätsel. Das Datenblatt

https://www.st.com/resource/en/datasheet/m24c16-w.pdf zeigt mir Pin1:3 als ,,nc". Eigentlich müssten doch dies A2:A0 zum codieren der Slaveadresse sein?
Habe ich das ,,Device addressing so zu verstehen, dass ich diese ,,Chip enable address" als 3Bit-Wert selbst festlege (vgl. Datenblatt Table 2)? Merkt sich dann das EEPROM diese slaveadresse?
Ist wohl am Besten, ich probiere es einfach aus :-)


MfG Ottmar

Ottmar

Bin jetzt drauf gestossen, dass die individuelle Adresse beim 24C16 nicht codiert werden kann, indem nur 1 EEPROM 24C16 am Bus angeschlossen sein darf. Sieht bei den 24C64...256 wieder anders aus.
Ottmar


picass

Hallo Ottmar !
Dieses Projekt betreibst du ja wohl so wie etliche deiner anderen auch quasi als Fütterung der grauen Zellen. So wie sich das liest, scheint das Projekt ja erfolgreich abgeschlossen zu sein. Die von dir verwendeten Stichwörter "Assembler" und natürlich "PIC18F14K22! weckten wieder meine Neugierde: würdest du den Code hier einstellen, damit man sich das mal ansehen könnte. Verwendung hätte ich auf absehbare Zeit nicht, da ich ja das Assemblen in eine Ecke geschobe hatte. Aber anschauen würde ich gerne.
Grüße, picass

Ottmar

Hi picass
anbei die Software zu meinem "Erstlingswerk" mit i2c-interface. Beachte, dass der Code mit MPLAB 8.92 erstellt worden ist. Auch sind einige Eigenheiten von mir enthalten, welche ich wohl kaum noch ablegen werde ;-).

Hilfreich ist vor allem eine microchip-Druckschrift AN735 (von 2000!) in der i2c Schritt für Schritt erklärt wird und dazu noch mit ASM-Code Beispielen versehen ist. Das Setup des MSSP-Moduls für i2c ist daher höchst einfach. Ebenso die erforderlichen Codes für die i2c-Aktionen wie z.B. Stop, Adressierung, Daten sende, Stop. Nun ja, ich habe da auch bei anderen abgeguckt ;-)

Meine bisherigen Routinen zur LCD-Initialisierung und -Ausgabe mussten angepasst werden. Der Text im Lcd wird aus einer LUT gelesen. Verwendet wurde ein 4zeiliges LCD. Soll ein anderes LCD verwendet werden, muss dies im Abschnitt "LABELS & CONSTANTS" angepasst werden.

mfG Ottmar

^Cobra

Moin Ottmar,

ich erlaube mir bei Gelegenheit mir das auch mal anzuschauen.
Zwar bin ich im moment wieder stark am Garten machen aber die Hoffnung besteht mal wieder Zeit zu finden. 

Ich habe einige I2C Chips hier rumfliegen welche ich mal Testen wollte. Aber die Zeit ist gegen mich.
Bei der Gelegenheit: sagt euch NRF24L01 etwas? Wurde mir mal vorgeschlagen als "Könnte dich auch interessieren". Ein Funk Modul welcher sowohl sender als auch empfänger wohl sein kann.
Natürlich gibt es dafür Libs für Arduino und CO. Mein gedanke war es meine Spinne damit irgenwann mal versteuern zu können. *träum*

Schöne Woche euch

picass

#9
Zitat von: ^Cobra in 02.06.2025, 07:35:24 CEST....im Moment wieder stark am Garten machen, aber die Hoffnung besteht mal wieder Zeit zu finden......
....Ein Funk Modul, welches sowohl sender als auch empfänger wohl sein kann......
.....meine Spinne damit irgenwann mal versteuern zu können. *träum*
Träume weiter, Cobra, und lass dich nicht von Realisierungs-Versuchen abhalten. Vielleicht für den Anfang immer nur in kleinen Schritten, die sich irgendwie und irgendwo zwischen schieben lassen. Zwar mag ich deine Spinne nicht, aber wenn du mit der Fernsteuerung eines Krebses weiter kämst, wäre das auch was für meine Ketten-Raupe. Da versuche ich gerade mal was, zur Zeit läuft das alles noch händisch.

Zeit......:  jammer, klag und so weiter: der Garten im alten Haus ertrinkt im Natur-Grün und gerade eben hat der neue Niu-Händler verkündet, dass mein neu gekaufter E-Roller eingetroffen ist und angemeldet werden könnte. Der Alte ist aber noch nicht verkauft, da sind z.Z. nur Abstauber unterwegs... grrrrrr! Und Zeit......., wäre schön, wenn....
Grüße, picass


Ottmar

Hi Cobra,
aus Erfahrung mit meinem RoboCar kann ich sagen, dass die Steuerung Deines Fahrzeuges wohl am Besten per Bluetooth gelingen könnte, insbesondere wenn dafuer eine Handy-App verwendet wird (spart den HF-Code-Kram).
Die Verwendung eines Funkmoduls erscheint mir doch etwas aufwendiger, wenn ich mir das Datenblatt eines RFM12 betrachte, welches bei mir immer noch auf seinen Einsatz wartet. Tolle Features, unbestitten - na ja, aufgeschoben ist nicht aufgehoben... :-)
mfg Ottmar

pic18

Hat das Modul NRF24L01 den ESP8266, dann habe ich es hier herumliegen. Damit kann man über WLAN eine Verbindung herstellen. Der Nachfolger ist der ESP32. Damit wollte ich schon länger ein Projekt machen, bin aber nicht dazugekommen.

^Cobra

Moin Pic18, 
ich würde auf die schnelle sagen das  NRF24L01 und ESP82662 unterschiedliche ICs sind.
ersterer ist ein Modul für eine Funkverbindung auf 2,5Ghz, zweiteres ist ein uC mit HW für eine WLAN verbindung. Mag aber auch sein das ich auf die schnelle falsch geschaut habe.
Wäre vermutlich auch möglich 2 von den mit einander reden zu lassen aber dann braucht man eig. auch kein pic mehr  :-\ . 

erstmal muss ich mein 3D Drucker wieder ans laufen kriegen. Seit dem Umzug wurder der nicht mehr eingeschaltet  :-[

pic18

du hast recht, die Platinen sehen ähnlich aus, haben aber unterschiedliche Prozessoren. Dann würde ich Wlan - Modul für meinen Zweck vorziehen.

picass

Zitat von: ^Cobra in 03.06.2025, 15:28:59 CEST.....erstmal muss ich mein 3D Drucker wieder ans laufen kriegen.
Das klingt verdächtig nach Tintenstrahldrucker. Der Meinige war jüngst nur gut 2 Wochen vom Stromnetz getrennt (Urlaub) und das hat er mit Misachtung gestraft: er wollte partou kein Gelb mehr ausgeben. Mehrere einfache Reinigungsprozeduren ließen ihn unbeeindruckt. Erst das zweimal Düsenreinigen auf die harte Tour bracht wieder Gilb auf das Papier. Also hartnäckisch sein und hoffen, dass der Auffang-Tank für Resttinte nicht voll ist.
Grüße, picass


Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

🡱 🡳