Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

[RESOLU] thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#1 Message par venom » lun. 8 août 2016 22:42 lien vers la Data-Sheet : Cliquez ici

Bonjour a tous,

Je suis tomber sur un ancien projet qui était de récupéré la valeur d'un MCP9700A et de l'afficher sur 2 afficheur 7 segments multiplexer.

MCP9700A

Bon le projet avait bien avancer, j'ai même acheter le plus gros du matériel pour le faire sur breadbord, voir même en dur :-) .

Le MCP9700A et les afficheurs sont relier a un 16F88. pour le moment il fonctionne sous simulation mais avec une petite latence entre le premier 7seg et le second.

Donc dans un premier temps, ma question est : d’après vous, est-ce que le code est le montage vous semble correcte ?

Voici le montage sous simulation :
Sans titre.png


Mise a jour le 10/05/2017
Et voici le code :

Code : Tout sélectionner

///////////////////////////////
//    name : thermometre     //
//      create : venom       //
//     date : 12/11/2015     //
//     pic : 16f88 1MHz      //
///////////////////////////////




long L;        // Initialise un long L
int temp_res;  // Initialise temp_res

int val1;      // Initialise val1
int val2;      // Initialise val2

int boucle_a;  // Initialise boucle_a

unsigned char  font[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  // Charge les chiffres de 0 aa 9 en HEXA dans le font


void main() {
    OSCCON = 100;         //Fréquence pour oscillateur interne. oscillateur 1 MHz

    TRISA = 0b00000100;   // port A2 en entrée. Entrée = 1, sortie = 0
    TRISB = 0b00000000;   // tous les port B en sortie. Entrée = 1, sortie = 0

    PORTA.RA0 = 0;        //Disable digit 1
    PORTA.RA1 = 0;        //Disable digit 2
    CMCON=0;              // inhibe les comparateurs

    ANSEL = 0b00000100;   // Configure AN2 en analog

    ADC_Init();           // Initialise module ADC
    Delay_ms(100);
    
    while
(1){
       // récuperation du Vout du MCP9700A + forume transformation °C
       //  0°C = (10mV)*(0°C)+500 =  500mV
       // 20°C = (10mV)*(20°C)+500 = 700mv
       // 50°C = (10mV)*(50°C)+500 = 1000mv
       L = ADC_Read(2)*500;
       L = L>>10;
       L = L-42; //42
       temp_res = L ;

       for(boucle_a=; boucle_a<100 ; boucle_a++)
       {
       val2 = temp_res / 10;  //recupere la dizaine de la valeur
       PORTB = font[val2];  //Envoie le chiffre en HEXA au portB
       PORTA.RA0 = 1; //active le port RA0
       Delay_ms(10);    //delay de 10 milisecondes
       PORTA.RA0 = 0; //desactive le port RA0

       val1 = temp_res % 10;  //recupere l'unité de la valeur
       PORTB = font[val1];  //Envoie le chiffre en HEXA au portB
       PORTA.RA1 = 1; //active le port RA1
       Delay_ms(10);  //delay de 10 milisecondes
       PORTA.RA1 = 0; //desactive le port RA1
       Delay_ms(10);
       }
       /*PORTA.RA3 = 1; //active le port RA3
       Delay_ms(1000);    //delay de 500 milisecondes
       PORTA.RA3 = 0; //desactive le port RA3
       Delay_ms(1000);    //delay de 500 milisecondes */
    }
}


D'avance merci






@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par venom le lun. 31 juil. 2017 14:31, modifié 31 fois.
Mon site web
Mon discord : venom#4888

thermomètre afficheur 7 segments
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » mar. 9 août 2016 09:22 lien vers la Data-Sheet : Cliquez ici

Il faut configurer ANSEL, voir page 113. Par défaut, tout le port A est en entrée ana.
Tu écris : TRISA = 0x00; or sur le schéma RA2 est relié au capteur ana.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#3 Message par venom » mar. 9 août 2016 09:56 lien vers la Data-Sheet : Cliquez ici

Merci Gerard,

J'ai modifier le code dessus. ai-je bien configurer ANSEL de cette manière ?





@++
Mon site web
Mon discord : venom#4888

thermomètre afficheur 7 segments
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » mar. 9 août 2016 10:45 lien vers la Data-Sheet : Cliquez ici

Oui, OK pour ANSEl mais pas pour TRISA, RA2 est en entrée donc bit2 à 1
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#5 Message par venom » mar. 9 août 2016 12:08 lien vers la Data-Sheet : Cliquez ici

Comme ci-dessus ? :-D

quel est la différence entre :
0b00000100
et
0x00000100






@++
Mon site web
Mon discord : venom#4888

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » mar. 9 août 2016 19:59 lien vers la Data-Sheet : Cliquez ici

bonsoir,

0b00000100 => 4 representation binaire poids du bit 128 64 32 16 8 4 2 1

0x00000100=> 256 representation hexadecimal poids du bit ....etc .... 4096 256 16 1
Aide toi, le ciel ou FantasPic t'aidera

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#7 Message par venom » mar. 9 août 2016 20:20 lien vers la Data-Sheet : Cliquez ici

Oula c'est compliqué tout ça pour moi :-) . Mais merci pour ses précisions Paul.

Mais si je met l'un ou l'autre sur ANSEL ça fonctionne sous simulation. Donc que choisir ? :?






@++
Mon site web
Mon discord : venom#4888

thermomètre afficheur 7 segments
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#8 Message par Gérard » mar. 9 août 2016 20:29 lien vers la Data-Sheet : Cliquez ici

venom a écrit :Comme ci-dessus ? :-D

quel est la différence entre :
0b00000100
et
0x00000100






@++


Si tu as un doute, tu peux écrire TRISA = 4 ; c'est le bit 2 qui sera à 1 (comme Paul l'a dit)
Pour b... ou 0x... je ne sais pas, faut voir la doc du compilateur.
EDIT : je viens de relire ce que Paul a dit, 0x..., c'est de l'exa donc 100 hexa = 256 en décimal (il est trop fort Paul :bravo: )
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#9 Message par paulfjujo » mer. 10 août 2016 20:47 lien vers la Data-Sheet : Cliquez ici

bonsoir,

Dans tous les cas
ANSEL ne peut pas contenir une valeur sur 32 bits telle que 0x00000100 !
il (le compilateur) est donc peut etre assez intelligent pour transformer 0x00000100 en 0b00000100
à verifie rdans le fichier ASM resultant d ela compilation
sinon tu mets
0x00000100 4 en binaire
ou 0x04 4 en hexadecimal

ainsi que TRISA=4 comme l'a souligné Gerard !
Aide toi, le ciel ou FantasPic t'aidera

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#10 Message par venom » mer. 10 août 2016 21:16 lien vers la Data-Sheet : Cliquez ici

Merci des precisions Paulfjujo.

Je pense que le compilateur modifie en effet car je n'ai pas d'erreur lors de la compilation si ANSEL = 0x00000100. Mais bon a vérifier sur le ASM :wink:






@++
Mon site web
Mon discord : venom#4888


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités