Bonjour,
J'essai de programmer un LCD à l'aide d'un PIC 16F84.
Pour cela, j'utilise MPLAB IDE et IC-Prog. Ils fonctionnent tres bien lors de l'essai pour faire clignoter une LED par contre et malgrés les aides trouvées sur internet, je suis perdu pour arriver à afficher qq chose sur mon LCD.
Le fonctionnement retenu est en 4 bits sur un LCD 2 x 16 caractéres et j'ai retenu, pour l'instant :
RA2 = RS (sera apres RB2)
RA3 = E (sera apres RB3)
RB4 ... RB7 = DB4 ... DB7
Lors de mes essais, j'ai l'ecran du haut qui est "tout noir" et rien d'autres.
Mon code est :
// ****************************** **************
//
// programme de gestion Affichage LCD
//
// ****************************** **************
#define entree PORTA
#define sortie PORTB
#define rs RA2
#define en RA3
// délai en ms ------------------------------
void delay_ms(char millisec)
{
char TMR;
OPTION = 2;
do
{
TMR = 0; clrwdt();
while (TMR0 < 125); // limité à 255
}
while (-- millisec >0);
}
// validation envoie sur LCD ----------------
void lcd_valid()
{
delay_ms(1); en=0; delay_ms(1); en = 1;
}
// ecrit sur le LCD en mode 4 bits -----------
void lcd_write(unsigned char c, bit d)
{
rs = d; // choix entre donnée (d=1) et instruction (d=0)
sortie &=0b00001111;
W=c & 0b11110000;
sortie |=W;
lcd_valid();
sortie &=0b00001111;
c=swap(c);
W=c & 0b00001111;
sortie |=W;
lcd_valid();
}
// *******************
// programme principal
// *******************
void main(void)
{
entree = 0; sortie = 0;
TRISA = 0B0000000; // tout le port A en sortie
TRISB = 0B0000000; // tout le port B en sortie
// initialisation LCD
lcd_write (0x28, 0); // mode 4 bits
lcd_write (0x06, 0); // pas de scrolling
lcd_write (0x0C, 0); // affichage sans curseur
lcd_write (0x01, 0); // efface ecran
// affichage valeur essai
lcd_write(0b10000000, 0); // positionnement premier caractére
lcd_write(0b00110000, 1); // affiche "0"
}
J'ai essayé de le faire sous différentes manières avec toujours les codes indiqués ci-dessus, mais rien à faire.
Merci de m'indiquer ou je me suis trompé
le "lcd_write" n'est pas de moi (thank)
-----