2xLCD Beide mit PCF8574 - 2Adressen Bascom Ansteuern wie?

Thorsten_Sch

Mitglied
31 Okt 2010
152
0
16
45
HH
Sprachen
  1. BascomAVR
Hallo Liebe Gemeine und Bastler

Habe schon die liebe suchmaschiene angeschmiesen aber finde nichts darüber lol.

Wie mache ich das in Bascom das ich 2 x LCD Beide mit PCF8574 und 2 Adressen ansteuern kann?

Beispiel: LCD1 - nur Ausgänge ob an oder aus. LCD2 - Nur Uhr und Temparatur:


Ich bitte um rat und tipps
Vielen dank
Thorsten Sch.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,487
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Der PCF8574 ist ein bidirektionales Schieberegister, genauer: seriell TWI/I²C zu parallel.
Du kannst also damit ein parallel anzusteuerndes Display an den HW-TWI eines AVR hängen.
Mit mehreren PCF...(mit unterschiedlichen Adressen) halt auch mehrere Displays.
Wo ist jetzt Dein konkretes Problem?
Welche Daten parallel(byte- oder nibbleweise) an das Display zu übertragen sind -> Datenblatt des Displays
Wie der PCF entsprechende Daten überträgt -> Datenblatt des PCF
Wie Du einen/mehrere PCF via TWI ansteuerst -> Datenblatt des AVR/Bascom-Hilfe

Vielleicht hilft Dir Cassios Thread weiter, inwiefern dort gut dokumentierter Qellcode bereitgestellt wird, hab ich jetzt nicht überflogen. Generell sollten sich die dort verwendeten Routinen um einen Parameter zur Übergabe der SLA-veadresse erweitern lassen, denk ich mal...
 

Thorsten_Sch

Mitglied
31 Okt 2010
152
0
16
45
HH
Sprachen
  1. BascomAVR
Hallo LotadaC

Wie gesagt im einen LCD Anzeige ( 1 ) Soll Ausgänge stehen
( LCD 16 x 2 ) PCF8574 Adresse &h70
Zeile1 1-0 2-0 3-0 4-0
Zeile2 5-0 6-0 7-0 8-0

Im 2 LCD Uhr Datum
( LCD 16x2 ) PCF8574 Adresse &h72
Zeile1 Uhrzeit: 01:00:00
Zeile2 Datum: 22.05.17

Wie sagt man Bascom wer was zu welche anzeige kommt???


Wie gesagt das sind Beispiele....
danke
zum einfachen testen des PCF8574 Nehme ich diesen code:


CodeBox BascomAVR
$lib "Lcd_i2c.lib"       'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40

Const Pcf8574_lcd2 = &H72
Config I2cdelay = 15     'delay von 15=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5     'I2C SCL Pin
Config Sda = Portc.4     'I2C SDA Pin

Dim _lcd_e As Byte      'Daten LCD
_lcd_e = 64

Dim A As Byte
Dim B As Byte
A = &B10000000           'LCD Hintergrund AUS
B = &B00000000

I2cinit
Cursor Off
I2csend &H70 , B

Cls
i2csend &h70 , Locate 1 , 1
i2csend &h70 , "I2C-LCD TEST"
Wait 2

Do
  Wait 2
  I2csend &H70 , B
  Cls
  Locate 1 , 1
  Lcd "Reihe1 Zeile1"
  Wait 2

  Cls
  Locate 2 , 1
  Lcd "Reihe2 Zeile1"
  Wait 2

  Cls
  Locate 1 , 1
  Lcd "Hintergrund Aus"
  wait 1
  I2csend &H70 , A
Loop



Vielen dank für die Tipps
Gruß
Thorsten Sch.
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4,321
159
63
Mittelhessen, Giessen
Sprachen
  1. ANSI C
  2. C++
  3. C#
  4. Java
  5. Kotlin
  6. Pascal
  7. Assembler
  8. PHP
Wie sagt man Bascom wer was zu welche anzeige kommt???
Das machst du über die I2C Slave Adresse.

So ganz genau verstehe ich deine Frage oder dein Problem auch nicht.

Hast du allgemein Probleme bei der Ausgabe auf einem Display?
Funktioniert das Display mit PCF8574 und Slave Adresse &H70?

Dirk :ciao:
 

Thorsten_Sch

Mitglied
31 Okt 2010
152
0
16
45
HH
Sprachen
  1. BascomAVR
den code den ich zum testen nehme ist völlig okay.
mein proplem ist nochmal anders dahrgestellt.

atmege8 <---I2C-BUS ---> zu 1.LCD(PCF8574/&h70) --->zum 2.LCD(PCF8574/&h72)

Im 1 LCD Ausgänge 2x16LCD
Im 2 LCD Uhr & Datum 2x16LCD

So wenn jemand einen Hilfreichen tipp geben kann wunderbar......
Gruß Thorsten Sch.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,487
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Wenn (falls) die von Dir verwendete (und in Zeile eins eingebundene) Bibliothek gleichzeitig zwei unterschiedliche Adressen unterstützt, sollte auch irgendwo dokumentiert sein, wie Du die Adresse an die Routinen weitergibst.
Ob und wie die Bibliothek dokumentiert ist, ob Du sie ggf modifizieren kannst, weiß ich nicht.
In dem von mir oben verlinkten Thread ist der Quellcode einsehbar, und von Cassio sogar weitgehend erklärt.

Cassio definiert zu begin eine Konstante für die (eine) Adresse des PCF/Displays. Es wird also so nur eine Adresse unterstützt. Du müßtest also die drei Subroutinen um einen zu übergebenden Adress-Parameter ergänzen, und dann in den Routinen selbst statt der Konstante den Parameter verwenden.
Dann kannst(mußt) Du bei jedem Routinenaufruf den konkreten PCF festlegen.

So wenn jemand einen Hilfreichen tipp geben kann
Genau den Tip hatte ich Dir oben bereits gegeben...
 

Thorsten_Sch

Mitglied
31 Okt 2010
152
0
16
45
HH
Sprachen
  1. BascomAVR
Soory übersehen endschuldige mich hierfür.........
Danke
Thorsten Sch.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)