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 :
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
Les fonctions que j'utilise :
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);
}
Puis la fonction d'initialisation qui est la première fonction que je lance dans le programme principal :
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++;
		}
	}
}
Si l'un de vous à déjà fait marcher ce type d'écran, je suis prenant la procédure à suivre.
Merci de votre aide.