LCD I2Ansteuerung

Alles zum Thema I2C
Antworten
stappe
Beiträge: 1
Registriert: Sa 23. Sep 2017, 17:46

LCD I2Ansteuerung

Beitrag von stappe » So 24. Sep 2017, 12:56

Ich habe mir ein I2C LCD_Modul gekauft, und kann es nicht ansteuern. Das Problem scheint die Adresse zu sein. 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 Ihrem geänderten Programm.


' Datei für Attiny-Platine 2.0 mit I2C-LCD von E. Eube, G. Heinrichs und U. Ihlefeldt
' Hello-World-Programm für I2C-LCD von YwRobot
'
' Die in der Deklaration benutzten Bezeichner werden von der Library benutzt und dürfen
' nicht verändert werden.
'
' Die Hintergrundbeleuchtung kann mithilfe der Variablen lcd_backlight ein- und ausgeschaltet werden;
' allerdings wird der Zustand dieser Variablen erst durch einen folgenden LCD-Befehl
' (z. B. locate, lcd "...") an das LCD übermittelt.
' Standardmäßig wird lcd_backlight beim Initialisieren des LCDs durch die Library
' auf 1 gesetzt, so dass die Hintergrundbeleuchtung beim Start automatisch eingeschaltet wird.
'----------------------------------------------------------------------------

$regfile = "m8adef.dat" 'ATMEGA8A
$crystal = 1000000 '1 MHz
$lib "YwRobot_Lcd_i2c.lib" 'YwRobot Treiber für LCD

$hwstack = 64
$swstack = 10
$framesize = 40

LyquidCrystal

'**********************************************************
'******************* Deklarationen ************************

Const Pcf8574_lcd = 78 'Adresse des I2C-LCDs
Dim Lcd_backlight As Byte '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt!

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

Ddrc = &B11111111 'Port B als Ausgangsport
'Ddrd = &B01110000 'D4, D5, D6 als Ausgang; Rest als Eingang
'Portd = &B10001111 'Eingänge auf high legen

Config Scl = Portc.5 'Konfigurieren von I2C
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

Heinrichs
Beiträge: 173
Registriert: Do 21. Okt 2010, 18:31

Re: LCD I2Ansteuerung

Beitrag von Heinrichs » Fr 21. Sep 2018, 12:04

Hallo stappe,

leider habe ich mich lange Zeit nicht mehr so richtig um mein Forum kümmern können; deswegen habe ich auch Deinen Beitrag erst heute gelesen. Nun, besser spät als nie; vielleicht hilft Dir meine Antwort doch noch:

1. Die Adressenangabe ist m. E. korrekt: I2C-Adressen werden häufig im 7-Bit-Format angegeben: Die Angabe des Herstellers/Händlers lautet $27, das ist dezimal 32+7 = 39. BASCOM benutzt eine 8-Bit-Adresse; diese besteht aus der 7-Bit-Adresse, an welche das Richtungsbit angefügt wird: 0 für Schreiben, 1 für Lesen. In diesem Fall ist die Schreibadresse daher 39*2 + 0 = 78. Und dieser Wert steht auch unten im Programm.

2. Auffällig ist der Befehl LyquidCrystal. Es handelt sich hier nicht um einen BASCOM-Befehl; deswegen kommt es auch zu einem Kompilationsfehler. Ich verstehe auch nicht, welchen Zweck dieser Befehl hier haben sollte. Ich rate dazu, ihn einmal wegzulassen.

Liebe Grüße
Georg

Antworten