Das Besondere beim DOGM im 8-bit Modus bei 3.3V Betriebsspannung ist das Timing beim Schreiben.
Das sieht dann beispielswweise so aus:

Code:
void LCD_Write(unsigned char data, int8 rs) 
{
        if(rs)
            RS_BIT = 0x0001;
        else
            RS_BIT = 0x0000;
        PMDATA = data;

        RW_BIT = 0;
        delay_us(4);    // Tb
        E_BIT = 1;
        delay_us(10);    // Tm
        E_BIT = 0;
//        delay_us(1);    // Te

        delay_us(30);
        Nop();
        Nop();
        Nop();
        Nop();
}
Die kritischen Zeiten sind die delays "um das Enable Bit herum". Ein standard 44780-basiertes Display ist da scheinbar toleranter. Das DOGM jedenfalls braucht diese Delays jedoch. (Generell wäre auch empfehlenswert, eine Abfrage-Routine für sein "Busy-Flag" zu nutzen, anstatt delays zu verwenden.)
Ein Workaround wäre auch, entweder das Display mit 5V zu betreiben, oder mit 3.3V die SPI-Ansteuerung zu benutzen. Dort gibt es dieses Problem nicht.

Viel Erfolg,
Hartwig