Bonjour,
Alors voilà mon problème: je programme en c sur un module assez atypique (module rovin) et je suis en train d'essayer de coder la gestion d'un afficheur LCD.
Si je veux écrire un mot sur l'afficheur je doit envoyer les carratères les un après les autres.
Pour l'instant j'ai écrit une fonction bien bourrin qui fonctionne mais qui est très peu pratique à utiliser. Ça donne ça:
et j'utilise cette horreur ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void MotToLCD(unsigned char L1, unsigned char L2, unsigned char L3, unsigned char L4, unsigned char L5, unsigned char L6, unsigned char L7, unsigned char L8, unsigned char L9, unsigned char L10, unsigned char L11, unsigned char L12, unsigned char L13, unsigned char L14, unsigned char L15, unsigned char L16) { I2cStart(1); I2cOut(1,EcranADR); I2COut(1,L1); I2COut(1,L2); I2COut(1,L3); I2COut(1,L4); I2COut(1,L5); I2COut(1,L6); I2COut(1,L7); I2COut(1,L8); I2COut(1,L9); I2COut(1,L10); I2COut(1,L11); I2COut(1,L12); I2COut(1,L13); I2COut(1,L14); I2COut(1,L15); I2COut(1,L16); I2CStop(1); }
Ce qui est vraiment pas pratique du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MotToLCD('B','o','n','j','o','u','r',' ','a',' ','t','o','u','s','!',' ');
Au final j'aimerais donc avoir un truc du genreJe me suis dit que j'allais placer tout les carractères dans un tableau de 16 lignes (mon afficheur ne peut afficher que 16 carractères). puis envoyer tout ça via une boucle. J'ai donc bricoler un programme de test qui fonctionne bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part MotToLCD('Bonjour a tous!');
Je sens que je suis sur la bonne piste mais je n'arrive pas à trouver comment placer une chaine dans ce tableau. Une Idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 TableLCD[0] = 'c'; TableLCD[1] = 'o'; TableLCD[2] = 'u'; TableLCD[3] = 'c'; TableLCD[4] = 'o'; TableLCD[5] = 'u'; x=0; I2cStart(1); I2cOut(1,EcranADR); for (x=0; x<=15; x++) { I2cOut(1,TableLCD[x]); } I2CStop(1);
Partager