Hallo,
ich habe das Display auch schon in Gang gebracht, aber im 4 Bit Modus.
Das lief auch SEHR schwer anfangs....
Hast Du den Kontrast richtig eingestellt und die Kondensatoren dran.
Bei der 3,3 Volt Versorgung gibt es wohl eine Follower, der auch eingestellt werden muss.
Hab auch schonmal ewig gesucht und dann stellte sich heraus, dass ich nur nix gesehen hatte, weil der Kontrast falsch eingestellt war.
Der CSB und PSB Pin auch richtig ? und nicht vergessen die Datenleitungen, obwohl nicht benutzt festzulegen..
Ich weiss nicht wie schnell deine Pins toggeln, aber mein Prozessor war zu schnell und ich musste delays einbauen.
2-3 Mikrosekunden.
Ganz wichtig war die Initialisierung, da hat jedes "ähnliche" Display seinen Eigenheiten.
Wobei die DOGM Serie sich doch von anderen Displays unterscheidet
Zudem gibt es ja auch 2 Instruction Tables, die richtig hin und hergeschaltet werden müssen.
Am Anfang darf man ja auch nicht das Busy Flag abfrage, weil es noch nicht funktioniert.
Wie das genau beim SPI Modus läuft, hab ich aber nicht ausprobiert.
Schau Dir mal die Zeiten an, beim Initialisieren von mir:
Code:
/* initialize LCD 4 Bit mode FOSC 380 KHz */
/* Power Up need ca. 40ms internal Power on reset ST7036 */
Wait_us(50000);
LCD_DataOut8(0x30); /* Function set */
Wait_us(2000); /* wait > 1,6ms */
LCD_DataOut8(0x30); /* Function set */
Wait_us(50); /* wait > 26,3 us */
LCD_DataOut8(0x30); /* Function set */
Wait_us(50); /* wait > 26,3 us */
LCD_DataOut8(0x20); /* Function Set 4 BIT DL=0 */
Wait_us(50); /* wait > 26,3 us */
/* !!!! erst ab jetzt ist der 4 Bit Modus aktiv */
LCD_WaitBusy();
/* DL = High= 8 Bit DL=Low = 4 Bit */
/* N=1=2 Zeilen N=0=1Zeile */
LCD_DataOut4(0x29); /* Function Set 4 Bit N=1 DH=0 IS2=0 IS1=1 DH=1=Double Height*/
LCD_WaitBusy();
LCD_DataOut4(0x14); /* BIAS Intern OSC frequency BS= 1 0 FX=1 */
LCD_WaitBusy();
LCD_DataOut4(0x78); /* Contrast set C3 C2 C1 C0 */
LCD_WaitBusy();
LCD_DataOut4(0x55); /* 0x5E Power Ion=1 Bon=1 C5=1 C4=1 */
LCD_WaitBusy();
LCD_DataOut4(0x6D); /* Follower control Fon Rab2 Rab1 Rab0 */
LCD_WaitBusy();
/* LCD_DataOut4(0x28); */ /* switch back to instruction table 0 */
/* LCD_WaitBusy(); */
LCD_DataOut4(0x0F); /* Display On/off D= C= B= */
LCD_WaitBusy();
LCD_DataOut4(0x01); /* Clear Display, Cursor home */
LCD_WaitBusy();
LCD_DataOut4(0x06); /* Cursor auto increment Entry Mode set ID= S= cursor move dir */
LCD_WaitBusy();
Lesezeichen