Zitat Zitat von m.a.r.v.i.n
Hi,

ich hab mir auch noch mal das Datenblatt angeschaut und komme auf das gleiche Ergebnis wie damaltor und raid_ox.

Hier noch mal mein Beispielcode für das EA T123. Initialisierung und Textausgabe in Subroutinen. Delay auf 1ms reduziert. Status LED sollte eine halbe Sekunde gelb leuchten, wenn Init erfolgreich war, dann grün. Rot bei Fehler.
Code:
#include <avr/io.h>
#include "i2cmaster.h"
#include "asuro.h"

#define Display   0x74      // device address of Display, see datasheet

int lcd_init(void)
{
  int ret=0;

   Msleep(500);
   ret = i2c_start(Display+I2C_WRITE); //hier wird der I2C bus gestartet und die adresse
   if ( ret )             //geschrieben
      {
      i2c_stop();         //sollte das nicht gehn, abbrechen
      return -1;
      }
   i2c_write(0x00);      //controll byte (muss gesendet werden laut datenblatt)
   Msleep(1);
   i2c_write(0x2C);      //die nächsten bitfolgen bzw werte sind aus dem daten-
   Msleep(1);         //blatt kopiert. sollte eigentlich das display
   i2c_write(0x0E);      //einschalten und den corsur nach oben
   Msleep(1);         //links setzen.
   i2c_write(0x06);      //einzige änderung: da nicht dual power sondern
nicht
               //+5V und -5V) habe ich das G-bit auf 1 geändert.
               //single supply genutzt wird (also nur +5V und gnd und    
  i2c_stop();         
  Msleep(10);
  return 0;
}

int lcd_write(char *text)
{
  int ret=0;
  unsigned char i = 0;
  
  ret = i2c_start(Display+I2C_WRITE); //hier wird der I2C bus gestartet und die adresse
   if ( ret )             //geschrieben
      {
      i2c_stop();         //sollte das nicht gehn, abbrechen
      return -1;
      }
   i2c_write(0x40);      //controll byte (muss gesendet werden laut datenblatt)
  while(text[i] != 0)
  {
     i2c_write(text[i++]);
     Msleep(1);         
  }
  i2c_stop();    
  return 0;     
}


int main(void)
{
   int ret;

   Init();
   i2c_init();
   
   ret = lcd_init();    // LCD Initialisieren
   if (ret == 0)
   {
      StatusLED(YELLOW);
      ret = lcd_write("Test");     // LCD Textausgabe
      if (ret == 0)
      {
        Msleep(500);
        StatusLED(GREEN);        
      }
      else 
        StatusLED(RED);           // Fehler beim LCD schreiben
   }
   else 
      StatusLED(RED);            // Fehler beim LCD init

   while(1);    
      
  return 0;
}
Ansonsten zur Hardware noch den Tip, am Kontrastregler drehen. Die Kontrastspannung VEE sollte ca 1V oder darunter betragen.

So weit kommt er nicht die LED wird grün und das wars die status LED wird nur gelb wenn ich den asuro an mache (leider)