I2C Anzeige bringt keine Anzeige

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • I2C Anzeige bringt keine Anzeige

      Ich habe mir ein I2C LCD_Modul gekauft(8574), und kann es nicht ansteuern.
      Die Angaben zum Modul:
      LiquidCrystal_I2C
      lcd(0x20,2,1,0,4,5,6,7,3,POSITIVE);//Addr,En,RW,RS,d4,d5,d6,d7,backlighpin,
      polarity. Weiterhin steht I2C Adress:0x27.
      Ich versuche die Ansteuerung mit einem Atmega 8a und diesem Programm.
      Was mache ich falsch?
      ----------------------------------------------------------------------------
      $regfile = "m8adef.dat"
      $crystal = 1000000 '1 MHz
      $lib "YwRobot_Lcd_i2c.lib"

      $hwstack = 64
      $swstack = 10
      $framesize = 40
      '******************* Deklarationen ************************

      Const Pcf8574_lcd = &H27 'Adresse des I2C-LCDs
      Dim Lcd_backlight As Byte '

      '****************** Initialisierung ***********************

      Ddrc = &B11111111 'Port B als Ausgangsport

      Config Scl = Portc.5 '
      Config Sda = Portc.4

      Config Lcd = 16 * 2 'nicht unbedingt nötig
      Config I2cdelay = 1

      Waitms 300 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init!

      '******************** Hauptprogramm ***********************
      Cls
      Lcd "Hello world!"
      Wait 1
      Lcd_backlight = 0
      Locate 2 , 1
      Lcd "2. row..."
      Wait 2
      Lcd_backlight = 1
      Locate 1 , 1 'Damit Backlight-Zustand an LCD übermittelt wird
      End
    • Warum nutzt Du nicht die Hardware- Variante da ja die Pins genutzt werden.

      Beispiel:

      $lib "i2c_twi.lbx "' Für Hardware TWI
      $lib "Lcd_i2c.lib "'ersetzt die Standard LCD Library
      Config Twi = 100000 ' Init TWBR und TWSR
      Config Lcd = 16 * 2
      Dim _lcd_e As Byte 'LCD im 4-Bit Modus betreiben

      _lcd_e = 128

      Sehe auch nicht wo und wann Du den Bus startest.
      Ist Adresse &H27 richtig. Sollt immer als erstes mit kleinem Code getestet werden.

      Gruß
    • Kleines Programm:

      BASCOM-Quellcode

      1. Config Lcd = 16x2
      2. $lib "YwRobot_Lcd_i2c.lib" 'YwRobot Treiber für LCD
      3. Const Pcf8574_lcd = 126 'Adresse des I2C-LCDs
      4. 'Pcf8574_lcd = 78
      5. 'Pcf8574A_lcd = 126
      6. Dim Lcd_backlight As Byte '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt!
      7. Config I2cdelay = 1 '1=1Mhz,5=200Khz,10=100Khz,15=66,66Khz
      8. 'Wenn in Lcd keine Anzeige muß der Delaywert erhöht werden.Mit Wert 15 beginnen und dann langsam verringern.
      9. Waitms 300 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init!
      10. Display On
      11. Cursor Off , Noblink
      12. Cls
      Alles anzeigen
    • ftelektro schrieb:

      Deine PCF8574 Adresse wird wohl nicht stimmen.Siehe zB.PCF8574 und PCF8574A in Dezimal.
      Bei Config I2Cdelay mit Wert 15 beginnen und Schrittweise auf 1 verringern.Erspart viel Frust.
      Bin mir auch sicher das PCF8574 mit Dezimal 112 beginnt und mit 126 endet. Config I2cdelay = 1 ist mit diesen IC kaum möglich.
      Sicher bist Du immer mit 100kHz Bus-Takt. Wenn nur ein Bus- Teilnehmer und kurze Leitung dann bis 400kHz noch sicher.
      Gruß
    • ftelektro schrieb:

      Mit einem I2C-Scanner nach Stefan Hamburg ermittelt man schnell die Adresse.
      bascomforum.de/index.php?thread/11-i2c-scanner/
      Ja Scanner ist klasse aber wenn ein I²C LCD genutzt wird, dass nichts anzeigt, ist meine Variante mit Terminal- Anzeige auch nicht schlecht.

      ftelektro schrieb:

      Diverse PCF8574 funktionieren auch mit 1Mhz Busfrequenz .Habe ich selbst schon getestet
      und auch teilweise im Einsatz.Versuch macht Klug.
      Habe ich nicht bestritten aber da liegst Du mit Sicherheit im Grenzbereich.

      Hallo stappe,
      kenne diese $lib "YwRobot_Lcd_i2c.lib" nicht, somit habe ich auch nicht die Möglichkeit zu schauen ob und wo TWEN gesetzt wird.

      Mit freundlichen Grüßen
    • Ich tippe da auch mal, dass die Chip-Adresse nicht passt.
      Ich habe hier idente Adapterplatinen wo mal der PCF8574 und mal der PCF8574A verbaut wurden.
      Auch bei den fertigen LCD-Anzeigen (wo ebendiese Adapter aufgelötet werden) hatte ich inzwischen beide Bausteine gefunden.
      Hat mich auch ein paar Schweißperlen gekostet, da ich nicht gleich auf die Idee kam, dass die in China die Bauteile "mischen".
    • ftelektro schrieb:

      Die Lib kann hier runtergeladen werden.
      Danke.

      Nun ist alles klar. Dieses I²C- LED- Modul ist eine “Sonderanfertigung”.
      Na klar wenn die Nibbles vertauscht sind benötigt man schon diese spezielle Lib für Anzeige.
      Sehr eigenwillig finde ich, dass diese Lib, direkt den I²C – Bus „lenkt“.
      Eins würde mich schon interessieren. Was passiert wenn noch andere unterschiedliche
      Bus- Teilnehmer angeschossen sind.
      Da die Lib offen ist kann man natürlich vieles auf seine Zwecke anpassen um I²C wieder zu dem zu machen zu was er einmal erfunden wurde.

      Zitronenfalter schrieb:

      Ich tippe da auch mal, dass die Chip-Adresse nicht passt.
      Na ja wir wissen nicht mal ob LCD überhaupt und wie reagiert.

      Viel Erfolg stappe.
    • @stappe zeig doch mal ein Bild von deinem Modul
      es gibt ja verschiedene Module und die lib enthält ja auch, welche LCD-pins an welche PCF-pin verschaltet sind. Das muss ja zusammen passen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich habe das selbe Problem...habe mir beim Reichelt ein Modul gekauft das via I2c Wandler auf dem LCD Modul angesteuert
      wird. Laut Datenblatt benutzt das Modul die "LiquidCrystal_i2c" Lib....Ich habe für Bascom die "YwRobot_i2c" lib eingebunden.
      Und habe schon alles mögliche ausprobiert...Chipadresse....Takt...geändert....ich schaffe es nicht mit Bascom das Modul mit
      einem Arduino Uno anzusprechen. Hat jemand noch eine Idee....VG
    • Cabrioloewe schrieb:

      Ich habe das selbe Problem...habe mir beim Reichelt ein Modul gekauft das via I2c Wandler auf dem LCD Modul angesteuert
      wird.
      Ja und wir auch wieder das selbe Problem.
      Was für ein I²C ist auf Modul. Die genaue Bezeichnung und mit welchem Modus wird LCD angesteuert. Kommen Zeichen oder nix oder was.
      Gruß
    • Cabrioloewe schrieb:


      Laut Datenblatt benutzt das Modul die "LiquidCrystal_i2c" Lib....Ich habe für Bascom die "YwRobot_i2c" lib eingebunden.
      Und habe schon alles mögliche ausprobiert...Chipadresse....Takt...geändert....ich schaffe es nicht mit Bascom das Modul mit
      einem Arduino Uno anzusprechen. Hat jemand noch eine Idee....VG
      In der Lib sind die Pinbelegungen des Displays festgelegt. Wenn Du eine andere als für das Modul vorgesehene Lib nimmst mußt Du Prüfen ob die Pinbelegung des Displays die gleiche ist oder die Pinbelegung in der verwendeten Lib anpassen.

      Gruß Harald
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Das seltsame ist mit einem "PCF 8574AT" Wandler funktioniert es einwandfrei...beim Reichelt gab es eben diese LCD Display schon komplett mit diesem Wandler aufgelötet...die Frage ist wodurch sich diese Bausteine unterscheiden...kann eigentlich nur Adressierung und oder Takt sein...aber aus dem Datenblatt werde ich nicht recht schlau...alle 3 Adresseingänge sind auf high...ich finde aber nirgends welche Adresse das ist....Gruß
    • Cabrioloewe schrieb:

      ich finde aber nirgends welche Adresse das ist...
      Auch nicht im Datenblatt zum PCF8574?

      Mein Datenblatt sagt dazu
      PCF8574 0 1 0 0 A2 A1 A0 0
      PCF8574A 0 1 1 1 A2 A1 A0 0
      Das "T " sagt nur aus, dass es sich um ein SO16 Gehäuse handelt (wäre an der Stelle ein "P" ist es ein DIP16 Gehäuse).
      Die beiden Bausteine sind eben bis auf die Adresse ident, es gibt nur den "A"-Typ zusätzlich um insgesamt 16 derartige Bausteine verwenden zu können.