Bonsoir a tous,
je réalise une interface avec un pic et un afficheur à matrix de 5*7 (5 Colonnes et 7lignes) au dépard je souhaite simplement afficher quelque lettres pour vérifier que ca marche.
J'ai écris le programme sur mikroc et j'ai fais la simulation sur proteus, ce meme programme a deja été utiliser des internautes et la simulation sur proteus également marche chez eux,
je rencontre un souci, en fait je souhaite d"abord afficher la lettre F, le probleme est que lorsque je mets un délai de 1ms qui est le temps nécessaire pour que l'oeil ne capte pas le changement et que la lettre F s"affiche, il n'y a aucune led qui s'allume sur le dot matrix car apparement c'est trop rapide, lorsque je mets le délais a 100 ms les lettres ne s"affichent pas d'un coup mais colonne par colonne, je ne vois ce qui cloche!
Code:/*************************************************************/ #define RD0 PORTD.F0 #define RD1 PORTD.F1 #define RD2 PORTD.F2++ #define RD3 PORTD.F3 #define RD4 PORTD.F4 #define RD5 PORTD.F5 #define RD6 PORTD.F6 #define RD7 PORTD.F7 #define RC0 PORTC.F0 #define RC1 PORTC.F1 #define RC2 PORTC.F2 #define RC3 PORTC.F3 #define RC4 PORTC.F4 #define RC5 PORTC.F5 #define RC6 PORTC.F6 #define RC7 PORTC.F7 #define begin { #define end } // Prototype des fonctions void Init_PIC(); void Reset(); void Horloge(); void Affiche(unsigned int val); unsigned char count; unsigned char num; unsigned char repet; const unsigned short Matrix[25] = { 0b00000000, 0b11111010, 0b11111010, 0b11111010, 0b11111010, 0b00000000, 0b00110110, 0b00110110, 0b00110110, 0b00110110, 0b00000000, 0b10111110, 0b10110110, 0b10110110, 0b10000110, 0b00111110, 0b00111110, 0b00000000, 0b00111110, 0b00111110, 0b11111110, 0b11111110, 0b00000000, 0b11111110, 0b11111110}; void main(){ Init_PIC(); while(1) { for( num = 0; num < 5 ; num++){ for( count = num * 5; count < num * 5 + 5; count++){ PORTC = Matrix[count]; delay_ms(100); Horloge(); } delay_ms(500); reset(); } } } // Configuration et initialisation des PORTS du microcontrôleur void Init_PIC(void){ TRISC = 0; TRISD = 0; PORTD = 0; // La ligne du dot matrix est active au niveau logique bas } // Fonction qui remet le compteur à zéro void Reset(void){ RD1 = 1; RD1 = 0; } void Horloge(void){ // Fonction qui permet de donner un coup d'horloge compteur 4017 RD0 = 1; RD0 = 0; } void Affiche(unsigned char val){ PORTC = val; delay_ms(1); Horloge(); }
Quelqu'un pourrait il tester mon code sur proteus avec le meme schema que moi?
merci
-----