[C] - Envoi mot de 4bits sur décodeur BCD /7 segments
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[C] - Envoi mot de 4bits sur décodeur BCD /7 segments



  1. #1
    invite3c35244f

    [C] - Envoi mot de 4bits sur décodeur BCD /7 segments


    ------

    Bonjour,

    j'utilise un module horaire du style 88:88 avec un décodeur BCD 7segments 74LS47, bon je vois comment faire pour commander l'ensemble (le principe du multiplexage), j'ai 4 sorties de mon PIC pour commander quel Digit sur lequel je vais agir (1,2,3 ou 4) et 4 bits pour les données du controleur 74LS47. J'ai choisi les bits RC0,RC1,RC2,RC3 pour cela.
    Imaginons ma variables "UnitHour" qui est de type décimal vaut 9, je sélectionne le digit 2 qui correspond à l'unité des heures et il faut que j'attribue le "9"(décimal) à mes bits RC0-RC3:
    RC0=1
    RC1=0
    RC2=0
    RC3=0

    Mais comment faire le transfert entre ma variable en décimal (9) et un mot de 4 bits; j'avais penser à faire 10 procédures de tests:
    Code:
    if(UnitHour == 0)
    {
    RC0=0;
    RC1=0;
    RC2=0;
    RC3=0;
    }
    if(UnitHour == 1)
    {
    RC0=1;
    RC1=0;
    RC2=0;
    RC3=0;
    }
    if (......
    Mais y aurail pas un moyen plus rapide ou plus "correct"?
    Je vous remercie d'avance

    -----

  2. #2
    invitea09d71c0

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Salut,

    Code:
    if ( [condition] == 0) PORTC = 0x00;
    donc sur le PORTC tu retrouve ton code hexa sur bit7,6,5,4,3,2,1,0.

    après pour réduire le nombre de condition... vu que tu dois transcrire en BCD... aucune idée

  3. #3
    invite339f2ace

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Salut

    RC0 est le poid faible ou fort de tes 4 bits????

    Sinon 9 ca fait 1 0 0 1 en binaire

    donc le programme n'affichera pas 9 mais 8 ou 1

    cordialement

  4. #4
    invite339f2ace

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Excuse J'ai pas du tout comprendre je réfléchis

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

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    si y'a une meilleur solution...

    PORTC = UnitHour;

    après je suppose que tu va utiliser Rc7 à Rc4 pour tes dizaines..
    donc PORT = DizHour << 4;
    (enfin faire un décalage de 4... pour pas réécrire sur les unités.)

    edit..
    enfin vaut mieux tester avant et regarder ton "file register" (si tu utilise mplab)

  7. #6
    invite339f2ace

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Re salut

    ça y est j'ai compris ce que tu voulais faire!!!!!

    ta méthode est bonne mais longue (10 tests)

    déjà si tu ecris directement dans le registre de sortie RC tu gagne des lignes comme le dit Chaine

    si tu utilise un switch case tu peux gagner en code peut ètre

    cordialement

  8. #7
    invite339f2ace

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    chaine est trop fort avec son décallage de 4 pas besoin de moi!!!!!

  9. #8
    invite3c35244f

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Merci pour vos conseils, mais en fait je n'utilise que les bits RC0 à RC3 pour le transfert entre le µC et le décodeur BCD et les bits RC4 à RC7 me servent à autre choses...

    Que fait exactement ton action :
    PORT = DizHour << 4;
    Et si tu fais PORTC = DizHour<<4, et que DizHour = 9 tu est sur que PORTC prendra la valeur 0000 1001...et si c'est oui comment agir sur le PORTC de cette façon sans agir sur les bits RC4 à RC7??

    Merci Encore

  10. #9
    invitea09d71c0

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    ah...

    tes autre bits te servent a autres chosee... balo

    le décalage te permettais d'avoir dans le portc
    PORTC = 7 6 5 4[dizaine sur 4 bits] 3 2 1 0[unité sur 4bits]

    mais si tu te sers de 7 à 4... le faite de mettre la variable unité va écraser cette valeur... (enfin a vérifier... lance une simulation... puis regarde dans "file register" si les donnée on changée).

    faut que tu fasse un masque
    PORTC = PORTC & 0x010 // tu met a zéro tout tes bits RC0 à RC3
    PORTC = PORTC | unithour; // tu fais PORTC + unithour.

  11. #10
    Seb.26

    Re : [C] - Envoi mot de 4bits sur décodeur BCD /7 segments

    Citation Envoyé par chaine Voir le message
    faut que tu fasse un masque
    PORTC = PORTC & 0x010 // tu met a zéro tout tes bits RC0 à RC3
    PORTC = PORTC | unithour; // tu fais PORTC + unithour.
    Oula, ce serait pas plutôt du genre :

    Code:
    PORTC &= 0xF0;
    PORTC |= unithour; // unithour = 0x00 à 0x0F ( 0x00 à 0x09 dans ton cas )
    Dernière modification par Seb.26 ; 11/12/2008 à 20h21.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

Discussions similaires

  1. decodeur BCD ->7 segments
    Par invite5b4ccdf4 dans le forum Électronique
    Réponses: 20
    Dernier message: 09/01/2008, 21h01
  2. conversion Binaire --> BCD --> afficheur 3 digits (7 segments)
    Par invitef4967b7a dans le forum Électronique
    Réponses: 14
    Dernier message: 18/12/2007, 08h36
  3. need help bcd to 7 segments
    Par invite1fb10cc0 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/12/2007, 22h45
  4. Decodeur BCD 7 seg / Transitor Darlington
    Par invite0715cd75 dans le forum Électronique
    Réponses: 3
    Dernier message: 02/06/2007, 11h05
  5. COnvertisseur BCD/7 segments
    Par invite73eb26ad dans le forum Électronique
    Réponses: 10
    Dernier message: 04/12/2004, 23h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...