affichage sur 7-segment multiplexé
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

affichage sur 7-segment multiplexé



  1. #1
    Creezys

    affichage sur 7-segment multiplexé


    ------

    Bonjour;

    sur la présente image j'utilise un deux 7-seg à cathode commune une chose, que je pige pas c'est pourquoi les données s'affichent pas sur les afficheurs, je n'ai pas pu résoudre se problème je crois que c'est un problème hard car les données je peux remarquer qu'il viennent à l'entrée de mon afficheur mais elle s'affiche pas prière de m'aider.
    voici le code:
    Code:
    unsigned short mask(unsigned short num) {
     switch (num) {
     case 0 : return 0x3F;
     case 1 : return 0x06;
     case 2 : return 0x5B;
     case 3 : return 0x4F;
     case 4 : return 0x66;
     case 5 : return 0x6D;
     case 6 : return 0x7D;
     case 7 : return 0x07;
     case 8 : return 0x7F;
     case 9 : return 0x6F;
     }
    }
    unsigned short digit_no , digit10 , digit1 , digit , i;
    void interrupt () {
    if (digit_no ==0) {
    PORTA = 0; // Turn off all 7seg displays
    PORTD = digit1; // send mask for ones digit to PORTD
    PORTA = 1; // turn on 1st 7 seg., turn off 2nd
    digit_no = 1;
    } else {
    PORTA = 0; // Turn off all 7seg displays
    PORTD = digit10; // send mask for tens digit to PORTD
    PORTA = 2; // turn on 2nd 7 seg., turn off 1st
    digit_no = 0;
    }
    TMR0 = 0; // clear TMRO
    INTCON = 0x20; // clear TMR0IF and set TMR0IE
    }
    void main () {
    OPTION_REG = 0x80; // Timer0 settings
    TMR0 = 0;
    INTCON = 0xA0; // Disable PEIE ,INTE ,RBIE ,T0IE
    PORTA = 0; // clear PORTA (make sure both displays are off)
    TRISA = 0; // designate PORTA pins as output
    PORTD = 0; // clear PORTD (make sure LEDs are off)
    TRISD = 0; // designate PORTD pins as output
    do {
    for (i = 0; i <=99; i++) { // count from 0 to 99
    digit = i % 10u;
    digit1 = mask(digit ); // prepare ones digit
    digit = (char)(i / 10u) % 10u;
    digit10 = mask(digit ); // prepare tens digit
    Delay_ms (1000);
    }
    } while (1); // endless loop
    }

    -----
    Images attachées Images attachées  

  2. #2
    futhier9178

    Re : affichage sur 7-segment multiplexé

    Bonjour,

    Je vois pas où tu appelles ta fonction interrupt.

  3. #3
    Creezys

    Re : affichage sur 7-segment multiplexé

    oui vous avez raison c'était à cause de "DIGIT_no" bon il a fallu enlever le remplacer par "DIGIT", mais une chose c'est qu'il fonctionne mais si seulement un afficheur 7 seg est branché, par exemple si on selectionne seul le premier afficheur et on débranche carrément le deuxième , on pourra visualiser notre compte en seconde, si on inverse on pourra voir les dizaine de seconde fonctionne. mais on les branchant tout les deux nous perdant le tout.
    Code:
    unsigned short mask(unsigned short num) {
     switch (num) {
     case 0 : return 0x3F;
     case 1 : return 0x06;
     case 2 : return 0x5B;
     case 3 : return 0x4F;
     case 4 : return 0x66;
     case 5 : return 0x6D;
     case 6 : return 0x7D;
     case 7 : return 0x07;
     case 8 : return 0x7F;
     case 9 : return 0x6F;
     }
    }
    unsigned short digit_no , digit10 , digit1 , digit , i;
    void interrupt () {
    if (digit ==0) {
    PORTA = 0; // Turn off all 7seg displays
    PORTD = digit1; // send mask for ones digit to PORTD
    PORTA = 1; // turn on 1st 7 seg., turn off 2nd
    digit = 1;
    } else {
    PORTA = 0; // Turn off all 7seg displays
    PORTD = digit10; // send mask for tens digit to PORTD
    PORTA = 2; // turn on 2nd 7 seg., turn off 1st
    digit = 0;
    }
    TMR0 = 0; // clear TMRO
    INTCON = 0x20; // clear TMR0IF and set TMR0IE
    }
    void main () {
    OPTION_REG = 0x80; // Timer0 settings
    TMR0 = 0;
    INTCON = 0xA0; // Disable PEIE ,INTE ,RBIE ,T0IE
    PORTA = 0; // clear PORTA (make sure both displays are off)
    TRISA = 0; // designate PORTA pins as output
    PORTD = 0; // clear PORTD (make sure LEDs are off)
    TRISD = 0; // designate PORTD pins as output
    do {
    for (i = 0; i <=99; i++) { // count from 0 to 99
    digit = i % 10;
    digit1 = mask(digit ); // prepare ones digit
    digit = (char)(i / 10) % 10;
    digit10 = mask(digit ); // prepare tens digit
    Delay_ms (1000);
    }
    } while (1); // endless loop
    }

  4. #4
    futhier9178

    Re : affichage sur 7-segment multiplexé

    Que veux-tu faire exactement car j'ai pas compris ton explication?

  5. A voir en vidéo sur Futura
  6. #5
    Creezys

    Re : affichage sur 7-segment multiplexé

    c'est bon j'ai tout réglé Merci pour votre aide, elle était bien utile!

  7. #6
    futhier9178

    Re : affichage sur 7-segment multiplexé

    Comment tu as fait?

Discussions similaires

  1. Quel est l'avantage d'un affichage multiplexé?
    Par zanzeoo dans le forum Électronique
    Réponses: 10
    Dernier message: 17/01/2024, 13h02
  2. Affichage 7 segment à partir de 39 entrées
    Par inviteee8c43c2 dans le forum Électronique
    Réponses: 1
    Dernier message: 08/02/2012, 08h34
  3. affichage multiplexé I2C
    Par invite0492ba7a dans le forum Électronique
    Réponses: 6
    Dernier message: 20/01/2008, 12h47
  4. Help Me!!!(Affichage 7 segment)
    Par invite55fe29e6 dans le forum Électronique
    Réponses: 11
    Dernier message: 12/02/2007, 22h37
  5. M41T60 + affichage multiplexé
    Par Toufinet dans le forum Électronique
    Réponses: 10
    Dernier message: 26/11/2006, 01h12
Découvrez nos comparatifs produits sur l'informatique et les technologies.