Bonsoir a tous,
voila, je suis en galere depuis une semaine et j'arrive pas a afficher qqu chose sur mode afficheur LCD. Apres la sequence d'init je ne vois même pas le curseur.
J'ai controlé a l'oscillo, le pic envoi bien les commandes mais rein.
voici la sequence d'init du display:
void LCD_Init(void)
{
char temp_data;
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
delay_ms(5);
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
LCD_Send(temp_data);
temp_data = 0x38; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
LCD_Send(temp_data);
temp_data = 0x08;//0x0E; //Display on, curseur on, blink off
LCD_Send(temp_data);
temp_data = 0x0C;//0x0E; //Display on, curseur on, blink off
LCD_Send(temp_data);
LCD_Clear();
temp_data = 0x04; // entry mode, deplace le curseur vers la droite apres affichage caractere.
LCD_Send(temp_data);
LCD_Clear();
peux-tu préciser le compilateur C que tu utilises, et joindre l'ensemble de ton programme pour avoir une vue plus globale de l'usage de ta fonction d'init.
As-tu réglé le contraste de ton afficheur, c'est souvent une bonne raison de "non fonctionnement".
"Le temps met tout en lumière." Thalès
20/07/2007 - 22h54
HULK28
Date d'inscription
janvier 2006
Localisation
IDF
Messages
10 256
Re : Driver LCD 2*16 avec PIC 16F877
Envoyé par misstik
Bonsoir a tous,
voila, je suis en galere depuis une semaine et j'arrive pas a afficher qqu chose sur mode afficheur LCD. Apres la sequence d'init je ne vois même pas le curseur.
J'ai controlé a l'oscillo, le pic envoi bien les commandes mais rein.
voici la sequence d'init du display:
void LCD_Init(void)
{
char temp_data;
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
delay_ms(5); // ici une tempo de 25ms
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7 // insérer ici une tempo de 100µs
temp_data = 0x30; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7 // insérer ici une tempo de 5ms
LCD_Send(temp_data);
temp_data = 0x38; //D 0011 1000 mode 8 bit, 2 ligne,font 5*7
LCD_Send(temp_data);
temp_data = 0x08;//0x0E; //Display on, curseur on, blink off
LCD_Send(temp_data);
temp_data = 0x0C;//0x0E; //Display on, curseur on, blink off
LCD_Send(temp_data);
LCD_Clear();
temp_data = 0x04; // entry mode, deplace le curseur vers la droite apres affichage caractere.
LCD_Send(temp_data);
LCD_Clear();
}
merci a tous.
Il faudrait également que tu précises le type de l'afficheur (notamment son controleur) ainsi que le quartz que tu utilises pour les tempos.
Attention d'ailleurs à bien placer ces tempos aux bons endroits.
Voici avec HitechC comment je gère l'init en mode 8 bits, essaye de l'adapter à ton programme:
void init_lcd(void)
{
LCD_RW=0;
LCD_RS=0;
LCD_EN=0;
DelayMs(25);
lcd_write(0x30);
Delay100Us();
lcd_write(0x30);
DelayMs(5);*/
lcd_write_instr(0x38); // Mode 8 bit, 2/16, font 5x7
lcd_write_instr(0x08); // affichage off
lcd_write_instr(0x01); // effacement et position d'origine
lcd_write_instr(0x0C); // Affichage on, curseur clign off
lcd_write_instr(0x06); // pas de décalage
}
Dernière modification par HULK28 ; 20/07/2007 à 23h00.