Afficheur LCD, LCD graphique GDM12864A
Publié : 20 févr. 2006 10:13
Salut !
Je me trouve confronté a un problème et je n'arrive pas a trouvé la solution.
Je pilote l'afficheur LCD avec un port parallèle:
8 bits de donnée (port parallèle) -> 8 bits de l'afficheur
/select in (17) = RS
Init (16) = CS2
/Autofeed (14) = CS1
/strobe (1) = E
R/W bloqué a l'etat bas
J'ai testé chaque broche du port parallèle avec un oscillo pour savoir si c'etait inversé.
J'ecris un programme en C++ grace a un driver. Resulat, j'ai bien un affichage parfois a l'endroit souhaité et parfois non, l'affichage est donc assez aléatoire.
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x3E; // Extinction du LCD
DLPortIO1->Port [0x37A] = 0xD9; // front descendant pour valider avec toujours CS2=0 CS1=1
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x40; // config de l'adresse
DLPortIO1->Port [0x37A] = 0xD9;
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0xB8; // config de la page
DLPortIO1->Port [0x37A] = 0xD9;
for (int i=0; i<5; i++)
{
DLPortIO1->Port [0x37A] = 0xD0;
DLPortIO1->Port [0x378] = 0xFF; // donnée
DLPortIO1->Port [0x37A] = 0xD1;
}
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x3f; //affichage ecran
DLPortIO1->Port [0x37A] = 0xD9;
}
J'essaye donc d'affiché 4 ligne De 1 donc noir.
Quelqu'un voit une erreur ?
Merci d'avance
Je me trouve confronté a un problème et je n'arrive pas a trouvé la solution.
Je pilote l'afficheur LCD avec un port parallèle:
8 bits de donnée (port parallèle) -> 8 bits de l'afficheur
/select in (17) = RS
Init (16) = CS2
/Autofeed (14) = CS1
/strobe (1) = E
R/W bloqué a l'etat bas
J'ai testé chaque broche du port parallèle avec un oscillo pour savoir si c'etait inversé.
J'ecris un programme en C++ grace a un driver. Resulat, j'ai bien un affichage parfois a l'endroit souhaité et parfois non, l'affichage est donc assez aléatoire.
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x3E; // Extinction du LCD
DLPortIO1->Port [0x37A] = 0xD9; // front descendant pour valider avec toujours CS2=0 CS1=1
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x40; // config de l'adresse
DLPortIO1->Port [0x37A] = 0xD9;
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0xB8; // config de la page
DLPortIO1->Port [0x37A] = 0xD9;
for (int i=0; i<5; i++)
{
DLPortIO1->Port [0x37A] = 0xD0;
DLPortIO1->Port [0x378] = 0xFF; // donnée
DLPortIO1->Port [0x37A] = 0xD1;
}
DLPortIO1->Port [0x37A] = 0xD8;
DLPortIO1->Port [0x378] = 0x3f; //affichage ecran
DLPortIO1->Port [0x37A] = 0xD9;
}
J'essaye donc d'affiché 4 ligne De 1 donc noir.
Quelqu'un voit une erreur ?
Merci d'avance