Besoin d'aide PIC16F877 (programmation)!
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Besoin d'aide PIC16F877 (programmation)!



  1. #1
    invitec927b324

    Exclamation Besoin d'aide PIC16F877 (programmation)!


    ------

    Bonjour,
    Je viens de faire un programme de detection de variation de signal. En effet l'idée est de recuperer un signal possedant 3 niveaux: niv1=4.7v ; niv2=3.42v ; nivo3=1.7v
    et à chaque nivo j'affiche un message en LCD: niv1-->msg1
    niv2-->msg2
    niv3-->msg3
    Nb.: mon programme est en mikroC.
    Merci d'avance.

    -----

  2. #2
    DAUDET78

    Re : Besoin d'aide PIC16F877 (programmation)!

    Citation Envoyé par muneeb Voir le message
    Je viens de faire un programme de detection de variation de signal.
    félicitation pour cette réalisation !
    J'aime pas le Grec

  3. #3
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Bonjour,
    Bravo également et sinon que peut-on faire pour toi?

  4. #4
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Vite fait voici ce que je ferai.
    Programme pas testé ni compilé mais à priori pas loin du résultat que tu souhaites obtenir.

    Code:
    #define   ConfigTRISA      0xFF        // RA0 -> An0 => entrée dédiée mesure
    sbit LCD_RS at RB4_bit;
    sbit LCD_EN at RB5_bit;
    sbit LCD_D4 at RB0_bit;
    sbit LCD_D5 at RB1_bit;
    sbit LCD_D6 at RB2_bit;
    sbit LCD_D7 at RB3_bit;
    sbit LCD_RS_Direction at TRISB4_bit;
    sbit LCD_EN_Direction at TRISB5_bit;
    sbit LCD_D4_Direction at TRISB0_bit;
    sbit LCD_D5_Direction at TRISB1_bit;
    sbit LCD_D6_Direction at TRISB2_bit;
    sbit LCD_D7_Direction at TRISB3_bit;
    
    void init_pic()
    {
      ADCON1      = 0x8E;   // Configure analog input A0 et le reste en digital (Vref+=Vdd / Vref-=Vss)
      TRISA       =    ConfigTRISA;    
      Lcd_Init();                        // Initialise LCD
      Lcd_Cmd(_LCD_CLEAR);               // Clear display
      Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
    }
    
    unsigned int mesure_tension_precision(unsigned short channel)
    {
     unsigned int result_tension;
     char a,i;
     int Tab_tension[10];
     Tab_tension[0]=0;
     result_tension=0;
     for (a=0,i=0;a<9;a++,i++)
      {
      result_tension = Adc_Read(0);
      Delay_ms(5);
      Tab_tension[i] = result_tension;
      if (i==9)
         {
         while(i>0)
          {
          i--;
          result_tension = (result_tension + Tab_tension[i])/2;
          }
         }
      Delay_ms(10);
      }
    return(result_tension);
    }
    
    
    /******************************************************************************/
    /**************  conversion des niveaux (V) en nbre d'échantillons  ***********/
    /*    nivo1=4.7V  -> (5V -> 1024 bits) => 4.7V  -> (1024*4.7) /5  = 962 ech.
          nivo2=3.42V -> (5V -> 1024 bits) => 3.42V -> (1024*3.42)/5  = 700 ech.
          nivo1=1.7V  -> (5V -> 1024 bits) => 1.7V  -> (1024*1.7) /5  = 348 ech.
    /******************************************************************************/
    void aff_niveaux(void)   //niv1=4.7v ; niv2=3.42v ; nivo3=1.7v
    {
    unsigned int nivo_1 = 348, nivo_2 = 700, nivo_3 = 962, mes ;
    
    mes = mesure_tension_precision(0);  // mesure tension sur canal ADC An0
    if (mes >= nivo_3)              Lcd_Out(1, 3, "Niveau 3 ok");
    if (mes >= nivo_2 && mes < nivo_3) Lcd_Out(1, 3, "Niveau 2 ok");
    if (mes >= nivo_1 && mes < nivo_2) Lcd_Out(1, 3, "Niveau 1 ok");
    if (mes < nivo_1)               Lcd_Out(1, 3, "insuffisant");
    }
    
    void main()
    {
    init_pic();
    aff_niveaux();
    }
    Dernière modification par HULK28 ; 26/04/2012 à 13h54.

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

    Re : Besoin d'aide PIC16F877 (programmation)!

    Citation Envoyé par HULK28 Voir le message
    Vite fait voici ce que je ferai.
    Tu fais les devoirs d'école maintenant ?
    J'aime pas le Grec

  7. #6
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    La compilation ne m'indique aucune erreur donc t'as plus qu'à tester grandeur nature.

  8. #7
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Citation Envoyé par DAUDET78 Voir le message
    Tu fais les devoirs d'école maintenant ?
    A lui de voir si il veut pomper direct sans comprendre ou plutôt s'en inspirer le cas échéant et chercher une autre solution, il y a plusieurs manières de faire, celle-ci n'est pas la plus fine exprès mais elle fonctionne c'est déjà ça.

    PS: ce prog peut être compilé avec la version de démo, ça a donc un certain intérêt pour cela.
    Dernière modification par HULK28 ; 26/04/2012 à 14h05.

  9. #8
    invitec927b324

    Re : Besoin d'aide PIC16F877 (programmation)!

    Merci beaucoup HULK

  10. #9
    invitec927b324

    Re : Besoin d'aide PIC16F877 (programmation)!

    mon amie HULK rien ne fonctionne en simulation en Proteus isis
    Images attachées Images attachées  

  11. #10
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Citation Envoyé par muneeb Voir le message
    mon amie HULK rien ne fonctionne en simulation en Proteus isis
    attend je vais mettre ma jupe verte!

    Bon moi tu sais les simulateurs ne sont pas mes amis, hormis LT SPICE.

    Comment as-tu declarer le quartz, et les autres bits de config dans ton environnement MikroC?
    As-tu pu compiler le prog sans erreurs ou warnings?

  12. #11
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    En meme temps si ton schema ne correspond pas au code ca risque pas de marcher...
    Ton afficheur est mal cable, il faut que tu respecte les memes ports que j'ai declare dans le code (en haut au debut).
    @+

  13. #12
    invitec927b324

    Re : Besoin d'aide PIC16F877 (programmation)!

    oui le programme est compilé correctement sans erreur ni warning..j'ai déclaré un quartz avec 20MHZ
    merci infinement pour ton aide

  14. #13
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Et c'est quoi ce montage shadock sur RA0?
    Tu mets un pont diviseur point final, tu calcules en fonction de ta tension qui arrive pour avoir 5V max sur l'entree de mesure.
    Allez au boulot, tu me corrige tout ca et tu reviens me dire que ca marche.

  15. #14
    invite03481543

    Re : Besoin d'aide PIC16F877 (programmation)!

    Citation Envoyé par muneeb Voir le message
    oui le programme est compilé correctement sans erreur ni warning..j'ai déclaré un quartz avec 20MHZ
    merci infinement pour ton aide
    20MHz ? Pourquoi faire?
    Prend deja 4MHz ca suffira bien.

Discussions similaires

  1. besoin d'aide [programmation en C]
    Par invite39a3aa53 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 29/03/2011, 22h04
  2. Besoin d'aide en programmation C++
    Par yassinefugi dans le forum Logiciel - Software - Open Source
    Réponses: 13
    Dernier message: 16/05/2009, 09h50
  3. besoin d'aide programmation en c
    Par invitef04611f7 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 29/04/2009, 13h39
  4. Besoin d'aide programmation C/C++
    Par invite39b52509 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 11/12/2008, 20h28
  5. Besoin d'aide PROGRAMMATION 18F452
    Par invite8916ae1c dans le forum Électronique
    Réponses: 1
    Dernier message: 02/05/2008, 14h58
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...