Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

un grand tableau



  1. #1
    Mazen21

    un grand tableau


    ------

    Salut tout le monde,
    je suis en train de créer un journal matricielle. j'utilise un tableau qui contient les lettres à afficher, le code compile correctement mais lorsque j’exécute il n'y a pas affichage de tout le contenu du tableau. je besoin vraiment de vos aides et merci
    Code:
    onst unsigned short ASCII[] = {
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,  // Code pour char L
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x42, 0x00,  // Code pour char C
           0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,  // Code pour char L
           0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00,  // Code pour char U
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x8E, 0x70, 0x00,  // Code pour char B
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0xFF, 0x02, 0x0C, 0x0C, 0x02, 0xFF, 0x00,  // Code pour char M
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x42, 0x00,  // Code pour char C
           0x00, 0xE0, 0x1C, 0x13, 0x13, 0x1C, 0xE0, 0x00,  // Code pour char A
           0x00, 0x00, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00,  // Code pour char T
           0x00, 0xFF, 0x09, 0x09, 0x09, 0x39, 0xC6, 0x00,  // Code pour char R
           0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x00,  // Code pour char O
           0x00, 0xFF, 0x03, 0x0C, 0x30, 0xC0, 0xFF, 0x00,  // Code pour char N
           0x00, 0x00, 0x81, 0xFF, 0x81, 0x00, 0x00, 0x00,  // Code pour char I
           0x00, 0x7E, 0x81, 0x81, 0xA1, 0x41, 0xBE, 0x00,  // Code pour char Q
           0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00,  // Code pour char U
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x00, 0x81, 0xFF, 0x81, 0x00, 0x00, 0x00,  // Code pour char I
           0x00, 0xFF, 0x03, 0x0C, 0x30, 0xC0, 0xFF, 0x00,  // Code pour char N
           0x00, 0x46, 0x89, 0x89, 0x89, 0x89, 0x72, 0x00,  // Code pour char S
           0x00, 0xE0, 0x1C, 0x13, 0x13, 0x1C, 0xE0, 0x00,  // Code pour char A
           0x00, 0x00, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00,  // Code pour char T
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x0F, 0x30, 0xC0, 0xC0, 0x30, 0x0F, 0x00,  // Code pour char V
           0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x00,  // Code pour char O
           0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00,  // Code pour char U
           0x00, 0x46, 0x89, 0x89, 0x89, 0x89, 0x72, 0x00,  // Code pour char S
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x46, 0x89, 0x89, 0x89, 0x89, 0x72, 0x00,  // Code pour char S
           0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x00,  // Code pour char O
           0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00,  // Code pour char U
           0x00, 0xFF, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x00,  // Code pour char H
           0x00, 0xE0, 0x1C, 0x13, 0x13, 0x1C, 0xE0, 0x00,  // Code pour char A
           0x00, 0x00, 0x81, 0xFF, 0x81, 0x00, 0x00, 0x00,  // Code pour char I
           0x00, 0x00, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00,  // Code pour char T
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,  // Code pour char L
           0x00, 0xE0, 0x1C, 0x13, 0x13, 0x1C, 0xE0, 0x00,  // Code pour char A
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x8E, 0x70, 0x00,  // Code pour char B
           0x00, 0x00, 0x81, 0xFF, 0x81, 0x00, 0x00, 0x00,  // Code pour char I
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0xFF, 0x03, 0x0C, 0x30, 0xC0, 0xFF, 0x00,  // Code pour char N
           0x00, 0x0F, 0x30, 0xC0, 0xC0, 0x30, 0x0F, 0x00,  // Code pour char V
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0xFF, 0x03, 0x0C, 0x30, 0xC0, 0xFF, 0x00,  // Code pour char N
           0x00, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00,  // Code pour char U
           0x00, 0xFF, 0x89, 0x89, 0x89, 0x81, 0x81, 0x00,  // Code pour char E
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code pour char Espace
    };
    
    unsigned char index[8]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
    unsigned char i=0,j=0,t=0;
    
    
    
    void main() {
     portb=0X00;
     trisb=0X00;
     portc=0X00;
     trisc=0X00;
     spi1_init();
         while(1){
         for(i=0;i<8;i++){
           portb=~index[i];
           spi1_write(ASCII[(t+i)%972]);
           spi1_write(ASCII[(t+i+8)%972]);
           spi1_write(ASCII[(t+i+16)%972]);
           spi1_write(ASCII[(t+i+24)%972]);
           portc.RC6=0;
           portc.RC6=1;
           delay_us(8000);
         }
         j++;if(j==1){j=0;t++;}    //j=15  d=5ms ;j=1 d=10ms
         if(t==972)t=0;
         }
    }

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : un grand tableau

    Un schéma serait un plus.

    Il faudrait commencer par vérifier à l'oscillo si tous les signaux sortent correctement.

    En passant, il y a mieux comme programme pour afficher du texte: le tableau doit posséder le code de tous les caractères de l'alphabet, un autre tableau doit posséder le texte à afficher et on se sert du code ASCII des caractères du texte pour indexer le tableau des combinaisons.

    A+

  4. #3
    Mazen21

    Re : un grand tableau

    le schéma: il manque de résistances
    pic 16F877
    4 registres à décalages 74HC595
    4 afficheurs matricielles
    Images attachées Images attachées  

  5. #4
    Jack
    Modérateur

    Re : un grand tableau

    On ne voit pas bien comment sont pilotés les OE des registres à décalage.

    Reste également à vérifier que les signaux sont bien générés.

    A+

  6. A voir en vidéo sur Futura
  7. #5
    Seb.26

    Re : un grand tableau

    > Pourquoi le tableau est un short[] et pas en unsigned char[] ???
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #6
    Mazen21

    Re : un grand tableau

    les OE sont reliées à la masse.
    Est ce que vous pouvez m'indiquer comment peut on indexer le tableau de code ASCII? Est ce qu'on a besoin de créer un troisième tableau qui est la concaténation de différentes codes ASCII ?
    merci bien pour votre aide

  9. Publicité
  10. #7
    Mazen21

    Re : un grand tableau

    Citation Envoyé par Seb.26 Voir le message
    > Pourquoi le tableau est un short[] et pas en unsigned char[] ???
    c'était un test, j'ai changé le type de tableau vers unsigned short car j'ai pensé que c'est la raison pour laquelle le tableau ne s'affiche pas complètement.

  11. #8
    Jack
    Modérateur

    Re : un grand tableau

    Citation Envoyé par Mazen21 Voir le message
    Est ce que vous pouvez m'indiquer comment peut on indexer le tableau de code ASCII? Est ce qu'on a besoin de créer un troisième tableau qui est la concaténation de différentes codes ASCII ?
    merci bien pour votre aide
    si par exemple, la lettre A est codée au début du tableau (à l'indice 0) sur 8 octets par exemple la lettre B sera codée à l'indice 8, C à l'indice 16, etc.

    Pour accéder au code à partir du code ASCII de la lettre: A a pour code ASCII 0x41. pour trouver son indice dans le tableau on soustrait donc 0x41.

    Pour B de code ASCII 0x42, si on sustrait 0x41, on trouve 1 alors qu'on devrait trouver 8. Il faut donc multiplier par 8. L'expression est donc (code ASCII - 0x41) * 8

    On essaie avec la lettre C: Code ASCII 0x43. (0x43 - 0x41) * 8 = 16. 'est gagné.

    A+

  12. #9
    freepicbasic

    Re : un grand tableau

    il faudrait voir comment le compilateur gère le tableau.
    Car au delà de 256 octets il faut gérer le PCLATH.
    A+, pat

  13. #10
    freepicbasic

    Re : un grand tableau

    i et t sont des char
    (t+i)%972
    972 depasse donc 256 , alors c'est faux
    A+, pat

  14. #11
    ftorama

    Re : un grand tableau

    On a donc 4 afficheurs, avec potentiellement 32 leds allumées simultanément.

    A 20mA par led, on peut donc se retrouver avec 20x32=640mA sur les pins du port B. Déjà avec 2 leds, on serait hors-spec...

    J'ai dans l'idée que le PIC est mourru, en tout cas son port B

  15. #12
    freepicbasic

    Re : un grand tableau

    Citation Envoyé par ftorama Voir le message
    On a donc 4 afficheurs, avec potentiellement 32 leds allumées simultanément.

    A 20mA par led, on peut donc se retrouver avec 20x32=640mA sur les pins du port B. Déjà avec 2 leds, on serait hors-spec...

    J'ai dans l'idée que le PIC est mourru, en tout cas son port B
    il faut effectivement des drivers , mais je ne pense pas que le pic soit mort.
    Mais ça doit pas éclairer grand chose...
    juste une lueur dans le noir , et en plus lorsqu'on dépasse le courant max certaines pins ne fonctionnent plus.
    A+, pat

  16. Publicité
  17. #13
    Mazen21

    Re : un grand tableau

    Citation Envoyé par freepicbasic Voir le message
    il faudrait voir comment le compilateur gère le tableau.
    Car au delà de 256 octets il faut gérer le PCLATH.
    bonjour,
    C'est quoi le PCLATH?

  18. #14
    freepicbasic

    Re : un grand tableau

    Citation Envoyé par Mazen21 Voir le message
    bonjour,
    C'est quoi le PCLATH?
    Le registre de poids fort de l'addresse pointée par le pointeur ordinal.
    PCLATH et PCL (partie basse)
    lire le datasheet ou le cours BigOnOff.
    A+, pat

Discussions similaires

  1. Mini mini comète dans un grand grand champ....
    Par scopy dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 15
    Dernier message: 24/08/2009, 12h35
  2. Grand classic pour pas grand chose
    Par xav72 dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 39
    Dernier message: 21/02/2008, 16h47
  3. Grand vide, grand froid.
    Par erectous dans le forum Archives
    Réponses: 12
    Dernier message: 02/11/2007, 18h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.