Bonjour à tous.
Je cherche à piloter un écran LCD Displaytech 64128C avec un PIC16F87 mais je n'arrive pas à initialiser l'écran. J'ai déjà réalisé l'opération avec le 64128A mais pour celui-ci, impossible. J'ai vérifier les connexions une par une. J'ai aussi réalisé la procédure pas à pas avec MPlab mais rien a faire(Je n'utilise pas le PORTB pour l'écran afin de pouvoir utiliser le debugger).
Voila donc ma configuration :
Les fonctions que j'utilise :Code:#define DB PORTC //DATA BITs #define TRISDB TRISC //Set DATA BITs #define CS1 RD7 //Chip select signal for IC1(Seg 0-63) #define CS2 RD6 //Chip select signal for IC1(Seg 64-127) #define RST RD5 //Reset signal #define RW RD4 //H : Read mode L : Write mode #define DI RD3 //H : Data L : Instruction code #define E RD2 //H : Output ata L : Latches Data #define SUPPLY RD1 //suply voltage for logic 4mA
Puis la fonction d'initialisation qui est la première fonction que je lance dans le programme principal :Code:void LatchData(void) { asm("nop"); E=1; asm("nop"); asm("nop"); asm("nop"); E=0; } void Tempo(char NbNop) { char Tmp=0; while (Tmp<NbNop) { Tmp++; asm("nop"); } } void DisplayOn(void) { CS1=1; CS2=0; TRISDB=0x00; DI=0; RW=0; DB=0x3F; LatchData(); CS1=0; CS2=1; TRISDB=0x00; DI=0; RW=0; DB=0x3F; LatchData(); CS1=0; CS2=0; Tempo(250); }
Si l'un de vous à déjà fait marcher ce type d'écran, je suis prenant la procédure à suivre.Code:void InitLcd(void) { char tmp=0; char Page=0; char Address=0; SUPPLY=1; Tempo(250); Tempo(250); TRISD=TRISD&0x00; E=0; DI=0; RW=0; CS1=0; CS2=0; TRISDB=0x00; DB=0x00; Tempo(250); RST=0; Tempo(250); RST=1; Tempo(250); DisplayOn(); CS1=1; CS2=0; while(Page<=7) { SetPage(Page); Page++; DisplayStartLine(0x00); while(Address<=63) { WriteDisplayData(0x0F); Address++; } } }
Merci de votre aide.
-----