13
01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC… 1/13 soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm S'identifier | S'inscrire | Aide Mot : Pseudo : Filtrer Rechercher Posté le 27-01-2010 à 22:22:29 FORUM Jacky-PC - Syndrome-OC Programmation Microcontrolleur &co Exercice de programmation MikroC sur PICs Rechercher 1 utilisateur anonyme et 28 utilisateurs inconnus Bas de page Auteur Sujet : Exercice de programmation MikroC sur PICs Hearty Bonsoir, Voilà un mois maintenant que je tente de démystifier la programmation de µcontroleur. Beaucoups de lecture, de recherche... Comme tout le monde je présume, en premier lieu en tentant de décrypter des codes existants, puis quelques modifications, et enfin tenter de partir de zéro sur un code fait maison. J'ai comme outils de travail, MikroC, Proteus VMS quelques Labdec, des PIC divers. Je suis actuellement sur un exercice basé sur les reflexions de Vede, utilisateur de ce présent forum. affichage sur matrice de LED. j'utilise pour cet exercice un PIC 16F876A. Voici le code transcrit du sien en MikroC: Code : 1. /* ********************************************************** 2. Exercice d'affichage multiplexé sur une matrice 3. de 8x8 LEDs. PIC16F876A 4. - Anodes communes sur le portB et Cathodes sur PortC 5. 6. ***********************************************************/ 7. 8. int colonnes[8]; // Tableau de huits entiers (8x8) 9. int i; // variable de comptage 10. int v; // variable de fréquence de scrolling 11. unsigned short IncCol; // Variable d'incrémentation de colonne 12. 13. void main() // Programme principal 14. { 15. debut: 16. // Préparation du caractère affichable 17. colonnes[0]=0b11111111; //00000000 18. colonnes[1]=0b10000001; //0------0 Motif codé 19. colonnes[2]=0b10111101; //0-0000-0 sur 8 bits, 20. colonnes[3]=0b10100101; //0-0--0-0 8 colonnes, ici 21. colonnes[4]=0b10100101; //0-0--0-0 un carré dans 22. colonnes[5]=0b10111101; //0-0000-0 un carré. 23. colonnes[6]=0b10000001; //0------0 Annonces Google Pic Programmer Kit Edit Pic Pic 16F877A Pic Programmer

Exercice de Programmation MikroC LCD

Embed Size (px)

Citation preview

Page 1: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

1/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

S'identifier | S'inscrire | Aide

Mot : Pseudo : Filtrer Rechercher

Posté le 27-01-2010 à 22:22:29

FORUM Jacky-PC - Syndrome-OC

Programmation

Microcontrolleur &co

Exercice de programmation MikroC sur PICs

Rechercher

1 utilisateur anonyme et 28 utilisateurs inconnus

Bas de page

Auteur Sujet : Exercice de programmation MikroC sur PICs

Hearty

Bonsoir, Voilà un mois maintenant que je tente de démystifier la programmation de µcontroleur. Beaucoups de lecture, de recherche... Comme tout le monde je présume, en premier lieu en tentant de décrypter des codes existants, puis quelques modifications, et enfin tenter de partir de zéro sur un code fait maison. J'ai comme outils de travail, MikroC, Proteus VMS quelques Labdec, des PIC divers. Je suis actuellement sur un exercice basé sur les reflexions de Vede, utilisateur de ce présent forum. affichage sur matrice de LED. j'utilise pour cet exercice un PIC 16F876A. Voici le code transcrit du sien en MikroC:

Code :

1. /* **********************************************************2. Exercice d'affichage multiplexé sur une matrice3. de 8x8 LEDs. PIC16F876A4. - Anodes communes sur le portB et Cathodes sur PortC5. 6. ***********************************************************/7.

8. int colonnes[8]; // Tableau de huits entiers (8x8)

9. int i; // variable de comptage

10. int v; // variable de fréquence de scrolling

11. unsigned short IncCol; // Variable d'incrémentation de colonne12.

13. void main() // Programme principal14. {15. debut:

16. // Préparation du caractère affichable

17. colonnes[0]=0b11111111; //00000000

18. colonnes[1]=0b10000001; //0------0 Motif codé

19. colonnes[2]=0b10111101; //0-0000-0 sur 8 bits,

20. colonnes[3]=0b10100101; //0-0--0-0 8 colonnes, ici

21. colonnes[4]=0b10100101; //0-0--0-0 un carré dans

22. colonnes[5]=0b10111101; //0-0000-0 un carré.

23. colonnes[6]=0b10000001; //0------0

Annonces Google Pic Programmer Kit Edit Pic Pic 16F877A Pic Programmer

Page 2: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

2/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

24. colonnes[7]=0b11111111; //0000000025.

26. ADCON0=0; // ADC désactivé

27. TRISA=0; // PORTA configuré en sortie

28. TRISB=0; // PORTB configuré en sortie

29. TRISC=0; // PORTC configuré en sortie30.

31. PORTA=0; // mise à zéro des ports A

32. PORTB=0; // mise à zéro des ports B

33. PORTC=0; // mise à zéro des ports C34. 35. v=0;36.

37. while(1) // Boucle infinie38. {

39. // affichage du caractère

40. IncCol=0x00000001; //initialisation valeur de départ bit 0

allumé

41. i=0; // initialisation variable de comptage42.

43. for (i=0;i<8;i++){ // Pour i entre 0 et 7

44. PortB = colonnes[i]; // Afficher la colonne i

45. PortC = IncCol; // activer le portC au bit de la variable

IncCol

46. Delay_ms(1); // le tout pendant 1ms

47. IncCol=IncCol << 1; // decalage d'un bit à gauche48. if(v==31){49. colonnes[i]=colonnes[i] <<1;

//scrolling à gauche50. v=0;51. 52. }53. v++;54. 55. }56. 57. }58. }

J'affiche donc un caractère par cette méthode, seulement je constate une disparité dans la luminosité des LEDs, et lors du scrolling, le balayage est lent, et le scrolling erratique.

J'en conclu que mon code est faussé quelque part, après une nuit à tester différentes combinaisons je pêche.

Page 3: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

3/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 27-01-2010 à 22:22:29

Posté le 28-01-2010 à 18:09:53

Un conseil serait le bienvenue.

Message édité par Hearty le 28-01-2010 à 17:52:05

Google#F0F0F0-#F7F7F7

ced-2kHomme des tavernes

Salut Hearty, Est-ce que ton code fonctionne dans scrolling? Je ne comprends pas bien ton utilisation de IncCol... Voici ce que je ferais pour un affichage sans scrolling :

Code :

1. while(1) // Boucle infinie2. {

3. for (i=0;i<8;i++) // itération sur les 8 lignes4. {

5. PortC = 0; // désélection ligne courante (pour ne

pas afficher la valeur colonnes précédent sur la ligne courante)

6. PortB = colonnes[i]; // output valeur colonnes de la ligne

courante

7. PortC = 1 << i; // sélection ligne courante8. Delay_ms(1);9. }10. }

Et avec scrolling :

Code :

1. while(1) // Boucle infinie2. {

3. for (i=0;i<8;i++) // itération sur les 8 lignes4. {

5. PortC = 0; // désélection ligne courante

(pour ne pas afficher la valeur colonnes précédent sur la ligne

courante)

6. PortB = colonnes[i] << offset; // output valeur colonnes de la

ligne courante

7. PortC = 1 << i; // sélection ligne courante8. Delay_ms(1);9. }10.

11. // après 32 affichages (32ms), scroll de l'affichage12. if(v==31)13. {14. offset = (offset + 1) % 8;15. v=0;16. }

Reseau Moyenne Tension www.cvci.fr/Reseau-MT-BT

Matériel réseau mt/bt,poste transfo Electrificationrurale, poteau, mât

Chargeur batterie plomb www.alphabatteries.com

Recharge, test, maintien en charge Récupère lesbatteries sulfatées

S5/S7 PLC Programming www.ibhsoftec-sps.de/english

with integrated Oscilloscope and Step®5/Step®7PLC simulation !

Affichage Dynamique à Led www.affichled.fr

Ecrans à Leds Haut de gamme Programmable,haute luminosité

Page 4: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

4/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 28-01-2010 à 20:33:51

17. 18. v++;19. }

Attention c'est non testé donc à vérifier ! PS: as-tu bien désactivé le watchdog sur ton PIC car l'affichage me semble vraiment aléatoire? [EDIT] Correction bug dans sélection ligne courante

Message édité par ced-2k le 29-01-2010 à 09:53:15

Hearty

Bonsoir Ced, Merci de répondre. Le scroll se fait bien, sauf quelques sauts erratiques,Et l'affichage du caractère se fait correctement,mais lent, à tel point que l'on voit le balayage. La variable IncCol permet d'incrémenter la colonne d'affichage.De ce que je sais en MikroC, on ne peut adresser un port individuelque de la manière suivante : portC=0b00000001; ou portC.F0=1; donc en initialisant à 00000001 puis en le shiftant ça donne 00000010 etc..Ne connaissant pas bien l'opérateur modulo, je vais étudier ça de près avec la méthode que tu emplois. Le Wd est bien désactivé. J'ai testé tel que le code que tu proposes avec le scrolling,l'affichage ne se fait que sur trois colonnes (les bits faibles)mais le scrolling se fait de manière fluide.

Edit: En modifiant mon code initial, intégrant le modulo cela donne ceci:

Code :

1. /* **********************************************************2. Exercice d'affichage multiplexé sur une matrice3. de 8x8 LEDs. PIC16F876A4. - Anodes communes sur le portB et Cathodes sur PortC5. 6. ***********************************************************/7.

8. int colonnes[8]; // Tableau de huits entiers (8x8)

9. int i; // variable de comptage

10. int v; // variable de fréquence de scrolling

11. unsigned short IncCol; // Variable d'incrémentation de colonne12. unsigned short offset;

13. void main() // Programme principal14. {15. debut:

16. // Préparation du caractère affichable

17. colonnes[0]=0b11111111; //00000000

18. colonnes[1]=0b10000001; //0------0 Motif codé

19. colonnes[2]=0b10111101; //0-0000-0 sur 8 bits,

20. colonnes[3]=0b10100101; //0-0--0-0 8 colonnes, ici

21. colonnes[4]=0b10100101; //0-0--0-0 un carré dans

22. colonnes[5]=0b10111101; //0-0000-0 un carré.

23. colonnes[6]=0b10000001; //0------0

Page 5: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

5/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 28-01-2010 à 22:32:19

24. colonnes[7]=0b11111111; //0000000025.

26. ADCON0=0; // ADC désactivé

27. TRISA=0; // PORTA configuré en sortie

28. TRISB=0; // PORTB configuré en sortie

29. TRISC=0; // PORTC configuré en sortie30.

31. PORTA=0; // mise à zéro des ports A

32. PORTB=0; // mise à zéro des ports B

33. PORTC=0; // mise à zéro des ports C34. 35. v=0;36.

37. while(1) // Boucle infinie38. {

39. // affichage du caractère

40. IncCol=0x00000001; //initialisation valeur de départ bit 0

allumé

41. i=0; // initialisation variable de comptage42. 43. for (i=0;i<8;i++)

44. { // Pour i entre 0 et 7

45. PortB = colonnes[i]<< offset; // Afficher la colonne i

46. PortC = IncCol; // activer le portC au bit de la variable

IncCol

47. Delay_ms(1); // le tout pendant 1ms

48. IncCol=IncCol << 1; // decalage d'un bit à gauche49. if(v==100)50. {

51. offset = (offset + 1) % 8; //scrolling à gauche52. v=0;53. 54. }55. v++;56. 57. }58. 59. }60. }

Cette fois-ci le résultat est celui escompté.Mais je ne comprend pas cette différence deluminosité de la matrice. Merci pour ton apport Ced, je vais tacher de comprendre le principe de fonctionnement de cette ligne ajoutée.

Message cité 1 fois

Message édité par Hearty le 28-01-2010 à 21:31:33

ced-2kHomme des tavernes

Hearty a écrit :

Bonsoir Ced, Merci de répondre. Le scroll se fait bien, sauf quelques sauts erratiques, Et l'affichage du caractère se fait correctement, mais lent, à tel point que l'on voit le balayage. La variable IncCol permet d'incrémenter la colonne d'affichage. De ce que je sais en MikroC, on ne peut adresser un port individuel que de la manière suivante : portC=0b00000001; ou portC.F0=1;

Page 6: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

6/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Je ne connais pas MikroC mais si c'est un compilateur ANSI il doit accepter PortC = i ou PortC = 1par exemple. 0b00000001 n'est jamais qu'une autre manière d'écrire "1", la valeur est la même !

Hearty a écrit :

donc en initialisant à 00000001 puis en le shiftant ça donne 00000010 etc.. Ne connaissant pas bien l'opérateur modulo, je vais étudier ça de près avec la méthode que tu emplois. Le Wd est bien désactivé. J'ai testé tel que le code que tu proposes avec le scrolling, l'affichage ne se fait que sur trois colonnes (les bits faibles) mais le scrolling se fait de manière fluide.

En effet j'ai été trop vite ! il faut remplacer :

Code :

1. PortC = i; // sélection ligne courante

par :

Code :

1. PortC = 1 << i; // sélection ligne courante

Mais en effet, après réflexion, c'est la même chose que ta variable IncCol, c'est juste une manière

plus courte et économisant une variable

Hearty a écrit :

Edit: En modifiant mon code initial, intégrant le modulo cela donne ceci:

Code :

1. ...

Cette fois-ci le résultat est celui escompté. Mais je ne comprend pas cette différence de luminosité de la matrice. Merci pour ton apport Ced, je vais tacher de comprendre le principe de fonctionnement de cette ligne ajoutée.

Page 7: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

7/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 28-01-2010 à 23:28:11

Posté le 29-01-2010 à 09:50:06

Posté le 13-05-2010 à 11:21:58

La luminosité varie-t-elle suivant le nombre de leds allumées da une ligne (ou colonne)? Tu asutilisé le schéma de vede? Si oui je pense que cela vient du fait que tu pilotes les leds directement avec les ports du PIC, et ilne sait pas fournir assez de courant quand il y en a trop d'allumées... surtout pour des bleueshaute luminosité ! Tu devrais intercaller un transistor PNP entre le port B et les leds ! J'ai un peu joué aussi avec des matrices à led (http://blog.crichard.be/), mais malheureusement le

projet (ainsi que le blog...) est +- tombé à l'eau faute de temps

Message édité par ced-2k le 28-01-2010 à 22:33:48

Hearty

Pour la matrice de LED, j'avais effectivement gravé un circuit similaire au schéma de Vede, avec des LED 5mm, en guise de matrice d'essais, en ayant en tête de faire une table style Daft Punk. Je vais interfacer, sur les bus, des drivers type ULN20xx. Tu as certainement raison pour ce qui est de la consommation, vu que lors du scroll quand il ne reste qu'une colonne elle est mieux éclairée. Le code que tu fournis finalement fonctionne très bien avec la modif.

Je suis passé sur ton blog, je vois que tu joues avec des bestioles plus grosses

Message cité 1 fois

ced-2kHomme des tavernes

Hearty a écrit :

Pour la matrice de LED, j'avais effectivement gravé un circuit similaire au schéma de Vede, avec des LED 5mm, en guise de matrice d'essais, en ayant en tête de faire une table style Daft Punk. Je vais interfacer, sur les bus, des drivers type . Tu as certainement raison pour ce qui est de la consommation, vu que lors du scroll quand il ne reste qu'une colonne elle est mieux éclairée. Le code que tu fournis finalement fonctionne très bien avec la modif.

Je suis passé sur ton blog, je vois que tu joues avec des bestioles plus grosses

Content que cela marche après modif Les ULN20xx sont très bien en collecteur mais il te faudra tout de même des PNP en émetteur. Je suis au boulot en ce moment, mais quand je rentre chez moi je peux te retrouver quelques liens

de montages de matrices led, j'en avais trouvé quelques un à l'époque

Hearty

Bonjour, Pour ceux qui avaient suivi l'insoleuse à LED UV,Je mettais promis d'apprendre la programmation des µcontroleurs.

Page 8: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

8/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

J'ai l'intention de refaire une version d'insoleuse double face,utilisants des LED UV plus puissantes. Pour cette version je me suis donné comme challengede créer ma propre minuterie, sur afficheur LCD.C'est chose faite, ou presque.Il me reste quelques bugs à corriger ou améliorer. J'ai pas mal peiné, et passé des nuits blanches dessus.mais je vois le bout du tunnel enfin. J'aurais besoin d'aide sur certains points. Le schéma:

Le code en MikroC:

Code :

1. /*2. Minuterie utilisant le Timer0 pour l'interruption3. Affichage sur LCD 4 bits4. FB Aka Hearty 20105. µControleur PIC16F84A6. Quartz: HS, 04.0000 MHz7. Formule pour le temps :8. Temps=(256-valeur Décimale chargée TMR0) * 4 * (prescaler OPTION_REG) *

1/Oscillateur en Hz9. Ce qui donne:10. T=(256-0)*4*64*(1/4000000)= 0,999424 sec11. */12. 13. #define inter1 PORTA.F014. #define inter2 PORTA.F1

Page 9: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

9/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

15. #define inter3 PORTA.F216. #define led1 PORTA.F317. #define relais PORTB.F0

18. //******************19. //Déclaration des variables20. signed short int seconde; // seconde non affichable en l'etat21. signed short int minute;22. signed short int heure;23. unsigned short int BP1;24. unsigned short int BP2;25. unsigned short int BP3;26. unsigned cnt;27. unsigned cntMn;28. char *text;29. int buffer[2]; //variable tampon qui va recevoir la conversion Variable int en

string affichable30. 31. //*******************************32. // Fonction Rom33. void LCD_constOut(unsigned char row, unsigned char col, const char *str) //

fonction permettant34. { //

d'utiliser un texte35. while(*str) // en ROM

sans passer36. { // par la

RAM37. LCD_chr(row, col++, *str++) ;38. }39. }40. 41. 42. //******************43. //Interruption44. void interrupt() {45. cnt++; // Incrementer la valeur de cnt à chaque interruption46. TMR0 = 0; // Valeur décimale préchargée à soustraire à 256

(99)pour donner 1,0048 sec pour 8Mhz47. INTCON = 0x20; // Set T0IE, clear T0IF (Met à 1 le bit TMROIE ,

Efface(0) le Flag TMROIF de débordement d'interruption)48. }49. 50. //******************51. //Programme principal52. void main() {53. 54. //******************55. // Initialisation des variables56. OPTION_REG = 0x85; // Assigner prescaler sur TMR0 valeur 64 = 101

(pour quartz 4Mz)57. TRISB = 0; // PORTB en sortie58. PORTB = 0xFF; // Initialiser le PORTB59. TMR0 = 0; // Timer0 Valeur initiale60. seconde=0;61. minute=0;62. cnt = 0; // Initialiser cnt63. cntMn = 0; //Compteur des minutes64. led1=0; // Etat LED165. BP1=0; // Etat Bouton 1 (Seconde)66. BP2=0; // Etat Bouton 2 (Minute)67. BP3=0; // Etat Bouton 3 (Start)68. relais=0; // Etat Relais69. TRISA = 0b00000111; // RA0,RA1 et RA2 en entrées70. 71. //**************************72. //Affichage présentation73. 74. Lcd_Config(&PORTB,2,3,0,7,6,5,4); // Initialiser le LCD connecté au

PORTB75. Lcd_Cmd(Lcd_CLEAR); // Nettoyer l'afficheur76. Lcd_Cmd(Lcd_CURSOR_OFF); // Curseur non affiché77. Lcd_constOut(1, 4, "HEARTYMER" ) ;78. Delay_ms(1000);

Page 10: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

10/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

79. Lcd_Cmd(Lcd_CLEAR); // Nettoyer l'afficheur80. // Lcd_constOut(2, 1, "Temps " ) ;81. 82. while(1){ //Boucle infinie83. 84. //************************85. //Réinitialisation86. if((minute==0)&&(seconde==0)){ //Si 0 minute 0 seconde tout est

arrêté87. INTCON = 0x20; //désactive le TMR088. BP1=0;89. BP2=0;90. BP3=0; //Bouton Start réinitialisé91. led1=0; //Led1 réinitialisée92. relais=0; //Relais réinitialisé93. //Lcd_Cmd(Lcd_CLEAR); // Nettoyer l'afficheur94. Lcd_ConstOut(1,2,"INDIQUER TEMPS" );95. }96. 97. //**************************98. // Gestion Bouton des secondes99. if(inter1==1){100. delay_ms(200);101. BP1=1;102. BP3=0;103. seconde+=5;104. Lcd_Cmd(Lcd_CLEAR); // Nettoyer l'afficheur105. Lcd_ConstOut(1,4,"TEMPS SAISI" );106. }107. if(((seconde <0)|| (seconde >59))) { // Maintenir entre 0 et 59108. seconde=59; // retour à 59109. if((BP2==0)&&(BP3==0)) {110. minute=0;}111. minute--;112. }113. 114. //**************************115. //Gestion Bouton des minutes116. if(inter2==1){117. delay_ms(200);118. BP2=1;119. BP3=0;120. minute++;121. Lcd_Cmd(Lcd_CLEAR); // Nettoyer l'afficheur122. Lcd_ConstOut(1,4,"TEMPS SAISI" );123. }124. if((minute<0)||(minute>59)){ // Maintenir entre 0 et 59125. minute=00; // retour à 59126. }127. 128. //**************************129. // Gestion Bouton start130. if (inter3==1){131. delay_ms(50);132. if(BP3==1){133. BP3=0;134. INTCON = 0x20; //désactive le TMR0135. }136. BP3=1;137. INTCON = 0xA0; // active l'interruption TMRO138. Lcd_ConstOut(1,2,"INSOL. CIRCUIT" );139. relais=1;140. }141. 142. if (cnt ==61){143. led1 = ~led1; // Inverse etat PORTB LEDs144. seconde--; // décrémenter les secondes145. cnt = 0; // Reset cnt146. 147. }148. 149. //*****************************150. // Affichage du compteur

Page 11: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

11/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 27-05-2010 à 14:01:35

151. //LCD_Chr(2, 3, '>');152. 153. ByteToStr(minute,buffer); // convertir la variable en string dans buffer

pour pouvoir l'afficher154. Lcd_Out(2,5,buffer);155. LCD_Chr_CP(':') ; //Afficher le séparateur156. ByteToStr(seconde,buffer); // convertir la variable en string dans buffer

pour pouvoir l'afficher157. Lcd_Out_CP(buffer);158. 159. }160. }161. 162. //******************************

J'ai un petit problème de déclaration de variable,qui n'empêche pas le programme de tourner,mais me chiffonne quelque peu. sur cette ligne:ByteToStr(minute,buffer);le compilateur m'indique ceci:Souspicious pointer conversion Je ne vois pas comment régler ce message. L'autre problème, peut-être lié,est que sur l'afficheur LCD mon caractèreen question m'impose deux espaces à la gauche du caractère affiché,ce qui fait que je ne peux accoler mes chiffres ou les ":" du séparateur. Aussi, comment puis-je lorsque l'affichage se fait en unitéafficher "00" ou "01" au lieu de "0" ou "1". Et si quelqu'un voit des redondances ou simplifications possible du code,je reste ouvert a toute proposition. Je peux fournir le fichier ISIS de simulation si besoin est.

Edit: Tous les problèmes sont résolus

Message édité par Hearty le 15-05-2010 à 06:24:59

Hearty

Bonjour, Ma compréhension des PIC s'améliore grandement, Je suis revenu sur la matrice de LED 8x8, et suis reparti de zero pour le code. Toujours développé en MikroC sur un PIC1F876a, Après avoir reçus mes matrices de LED, je me suis attelé à la tache. Il me reste à apprendre et comprendre comment mettre en relation une chaine de caractère et le tableau des caractères ASCII, afin de saisir de manière plus ergonomique le texte à afficher.

Page 12: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

12/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le 02-07-2010 à 00:55:05

Posté le 02-07-2010 à 01:00:35

Posté le 10-07-2010 à 21:06:46

Message édité par Hearty le 27-05-2010 à 18:20:26

chaalali

salut les amis je fait un circuit de deux matrice led avec pic 16f877a et deux décodeurs 47hc164 j'écris sur mikroc un programme qui permet de fixe une phrase dans le deux matrice puis il sera mobile cette action Restauré dans un boucle infini le premiere boucle marche correctement mais la deuxième les caractère sont décale aide svp

chaalali

il ya un petite question jais né pas comparés le mot ADCON0=0; // ADC désactivé Qu'est-ce que cela signifie // ADC désactivé

Hearty

Bonsoir, Cela signifie que le port n'utilise pas le mode analogique.Je met donc le registre ADCon0 à zéro,voir le Datasheet du PIC en question. Cela dit depuis, j'ai complètement refait mon codeen repartant de zéroet la matrice est parfaitement fonctionnelle,le scrolling se fait de manière beaucoup plus fluide,comme le montre la vidéo postée plus haut.

Page 13: Exercice de Programmation MikroC LCD

01/04/12 Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC…

13/13soj.mesdiscussions.net/soj/Programmation/…/exercice-programmation-mikroc-sujet_636_1.htm

Posté le

Aller à : Programmation Go

FORUM Jacky-PC - Syndrome-OC

Programmation

Microcontrolleur &co

Exercice de programmation MikroC sur PICs

Message édité par Hearty le 10-07-2010 à 21:07:29

Google#F0F0F0-#F7F7F7

Forum MesDiscussions.Net, Version 2010.1(c) 2000-2011 Doctissimo SoftwarePage générée en 0.166 secondes