je viens de terminer un projet en i2c permettant la gestion d'un afficheur lcd OEM par maitre pic 16f876a
je me sers du DS 16F876A
du DS pilote i2c fournis par lextronic
du DS Lcd GDM2004D
Le projet etant piloté en I2c, j'utilise la doc contenant les instrucions de cmd du pilote CLCD420C
Or, les commande sont tres limitées
- effacer l'ecran
curseur ON/OFF
retro -eclairage ON/OFF
Position curseur
en revanche:
lorsque j'ecris une chaine de caractere superieure à 20 caracteres, ma suite de texte ne s'affiche pas sur la ligne suivante de mon lcd
---> elle saute une ligne pour s afficher sur la suivante.
exemple:
puts("abcdefghij0123456789ABCDEFGH"
s'affichera sur mon LCD de la façon suivante;
1ere ligne: abcdefghij0123456789
2me ligne: rien
3me ligne ABCDEFGH
4me ligne: rien
1/j'ai essayé de trouver un lien logique entre les instructions de commande en hexa du pilote gerant le lcd et les commandes du lcd seul
2/j'ai essayé differente routine en c pour modifier la construction du puts()....RIEN Y FAIT
Dès que je depasse les 20 caracteres de mon texte balisé par '\0', les caracteres suivants jusqu'à la fin de mon texte ('\0'), saute d'une ligne et viennent se placer sur la suivante
voici mon code:
Code : Tout sélectionner
//----------Initialisation du port MSSP (16F876A )-----------------
i2c_Init(); // cette fct appelle le fichier "Mon_i2c.c"
//----------Initialisation & Parametrage du LCD OEM 4*20-----------
lcd_Init(); // pour initialiser le lcd
lcd_Clear(); // efface l'ecran durant 15ms
__delay_ms(500);
lcd_Posit(0x00,0x00);// Valeurs "Colonne,Ligne" du curseur à placer
//----------Programme Principale en Boucle------------------------
lcd_puts("abcdefghij0123456789ABCDEFG");
//lcd_Posit(0x00,0x01);// Valeurs "Colonne,Ligne" du curseur à placer
//lcd_puts("HIJKLMNO");
while(1);
}
//*****************************************************************
//--------------Fin du programme Principal-----------------------
//*****************************************************************
//*****************************************************************
//---------------STRUCTURE DES FONCTIONS LOCALES----------------
//*****************************************************************
//*****************************************************************************************
// Structure des fonctions permettant de traiter une chaine de caractere
//____________________________________________
// 1_Ecriture d'1 Donnée de caractere sur LCD
void lcd_putch(unsigned char c)
{
lcd_ecriture(c);// ici la variable de type char contient la valeur mise dans la fct putch
}
//____________________________________________
// 2_Ecriture d'une chaine de Donnée de caracteres sur LCD
void lcd_puts(const unsigned char *chaine)
{
for (int j=0;chaine[j]!='\0';j++)
{
lcd_putch(chaine[j]);
}
}
merci pour vos idées
(afin de ne pas rendre ce sujet indigeste, je n'ai volontairement pas mis l'ensemble du projet qui comprend 5 fichiers modulaire....par la suite, pour ceux et celles que ça intéresse, j'ouvrirai un tuto complet sur le projet en C)

