Genau, also wenn nur die erste Zeile "dunkler" ist, und die 2. total blass, dann hat die Initialisierung nicht hingehauen.

Weiterer Trick: Der Controller läuft ja der Angabe nach mit den 1MHz intern?
Wenn das stimmt, änder die $Crystal-Angabe mal auf 2 bzw. 4 MHz, ohne den internen Takt zu ändern. Dann läuft die Software langsamer. Wenn das Display jetzt reagiert, stimmt das Init-Timing nicht.

Welches Display ist das denn eigentlich? Schon HD44780-Kompatibel?