Forum: Mikrocontroller und Digitale Elektronik LCD ansteuern via I2C mit Channaa Adapter


von Peter (Gast)


Lesenswert?

Hallo,

ich versuche derzeit ein LCD Display (EA W204-BNLED 
-https://www.distrelec.com/distrelec/datasheets.nsf/WebAttachments/192B6E55ACF6E94BC12570E9005D942A/$File/661340-661341.pdf) 
mithilfe des I2C-LCD Adapters von Channaa 
(http://www.channaa.com/html/i2c_lcd_adapter.html) anzusteuern.

Ich arbeite mit Avrstudio, habe die Library von Peter Fleury 
implementiert und in dieser auch die Pinbelegung auf meine Hardware 
umgestellt.

Mit meinen bescheidenen I2C Kentnissen, dem Demofile von P. Fleury und 
dem Channaa Manual habe ich mal folgendes Prog zusammengebastelt:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <i2cmaster.h> 
4
5
#define LCD  0xFE      // Adresse I2C-LCD Adapter
6
7
int main(void)
8
{
9
    i2c_init();                             // I2C library initialisieren
10
11
    i2c_start_wait(LCD+I2C_WRITE);         // I2C Adresse und "Schreib Modus" setzen
12
    i2c_write(0x6C);                        // Schreib Adresse 0x6C
13
    i2c_write(0x0F);                        // Wert 0x0F in Adresse schreiben
14
    i2c_stop();                             // I2C Stop
15
16
    for(;;);
17
}

Ziel ist es den Adapter auf seiner Werkadresse 0xFE anzusteuern und den 
Befehl Display_On zu senden.

Das ganze erscheint mir etwas komisch, klappt das so oder muss man die 
Befehle so senden wie sie im Manual stehen (ClrDisplay/ReturnHome,....)?
Gibt es nirgends ein Demofile oder ähnliches zu dem Channaa Modul?

Besten Dank

von Peter (Gast)


Lesenswert?

Da es ein 4x20 Zeichen Display ist muss diese Einstellung (Display Typ) 
nicht vorgenommen werden da 4x20 Standart ist.

von Peter (Gast)


Lesenswert?

Hier mein Hello World File, leider tut sich auf dem Display nichts :(
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <i2cmaster.h> 
4
5
#define LCD  0xFE                  // Adresse I2C-LCD Adapter
6
7
int main(void)
8
{
9
  i2c_init();                             // I2C library initialisieren
10
      i2c_start_wait(LCD+I2C_WRITE);         // I2C Adresse und "Schreib Modus" setzen
11
      i2c_write(0x6C);                        // Display ON
12
  i2c_write(0x61);            // Display löschen
13
  i2c_write(0x64);            // Schreib Adresse 0x64
14
  i2c_write(0x48);            // H
15
  i2c_write(0x45);            // E
16
  i2c_write(0x4C);            // L
17
  i2c_write(0x4C);            // L
18
  i2c_write(0x4F);            // O
19
  i2c_write(0x20);            // Space
20
  i2c_write(0x57);            // W
21
  i2c_write(0x4F);            // O
22
  i2c_write(0x52);            // R
23
  i2c_write(0x4C);            // L
24
  i2c_write(0x44);            // D
25
      i2c_stop();                             // I2C Stop
26
}

von Peter (Gast)


Lesenswert?

Ich habe nun noch ein Blinklicht (Port C) ans Ende des Programmes 
gehängt und das ganze in ne While Schlaufe gepackt. Wenn ich nun das 
Port C mit dem KO anschaue dauert es ziemlich genau 5 sec für einen 
Programmdurchlauf ohne das Blink Delay. So langsam sollte das doch nicht 
sein?

von Peter (Gast)


Lesenswert?

Schaue ich die beiden I2C Pins an (PB 0 und 1)so habe ich dauerhaft 5V 
die beiden Leitungen sind via 4k7 auf VCC gehängt, das ist doch richtig 
so?

von Peter (Gast)


Lesenswert?

Ich habe nun mal das Kontrast Poti etwas verändert und bemerkt das 
immerhin ein blinkender Cursor vorhanden ist jedoch auch wenn ich den 
Atmega lösche. Der Cursor erscheint einfach sobald das Display gespiesen 
wird.

von Peter (Gast)


Lesenswert?

Mal allgemein gefragt: die I2C_master.s Datei kann ich doch änder ohne 
das ich jedes mal eine neue *.o datei compilieren muss?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.