LCD I2Ansteuerung
Verfasst: 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
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