Mein Display war anscheinend kaputt. Jetzt hab ich ein neues laufen und
tatsächlich kann ich die erste Zeile im Kontrast steuern.
Jetzt hab ich mir auch ein Programm in den Controller (R8C13) geladen
aber ich bekomm nix angezeigt. Da Programm wurde um die LCD Routine
erweitert, und der Rest des Programms funktoniert auch, nur bekomm ich
nix am Display angezeigt,
Es handelt sich um ein 2 * 16 Zeilen Display mit diesem HD 44xxxx Chip.
Angeblich unterscheiden sich die Displays aber in der Initialisierung.
Kann mal jemand über den Code schauen und mir sagen, ob was
wesentliches fehlt ??
Danke !!
>void delayus (unsigned int micros)
{
unsigned int i;
for (i = 0; i < micros; i++)
{
asm("nop");
}
}
void lcddata(unsigned char data)
{
delayus(100);
Port0 = data & 0xF0;
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}
void lcdctrl(unsigned char data)
{
Port0 = data & 0xF0;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x01;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}
void initlcd (void)
{
delayus(15000);
lcdctrl(0x28);
delayus(5000);
lcdctrl(0x28);
delayus(1000);
lcdctrl(0x28);
delayus(1000);
lcdctrl(0x0c);
delayus(1000);
lcdctrl(0x01);
delayus(5000);
}
initlcd(); //hier sollten die folgenden Buchstaben erscheinen ..
lcddata (65); //A
lcddata (66); //B
lcddata (67); //C