IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

pic 16f877 avec LCD 16*2


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    université
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : université
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut pic 16f877 avec LCD 16*2
    Bonjour tout le mode
    mon schema c'est un pic 16f877 relié a 2 barregraph et 2 resistance variable pour donner en temps reel le niveau d'un liquide (simulation)
    sur les barregraphe a 10 leds j'ai utiliser que les 8 premiere
    voila le schema :
    Nom : Forum2.jpg
Affichages : 7478
Taille : 287,7 Ko

    et voila le programme pour les 2 barregraph :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    unsigned int niv_bac1;
    unsigned int niv_bac2;
    unsigned char i,j;
    unsigned int  niveaux[8] = {127, 254, 382, 510, 638, 776, 894, 1022};
     
    unsigned char VnDuNiveau(unsigned int val) {
       unsigned char i = 0;
       while (i < sizeof(niveaux)) {
          if (val < niveaux[i])
             return i;
          else i++;
       }
       }
     
     
     
     
       void main() {
       // Configuration des pins 2 et 3 en analogique
     
      TRISA  = 0xFF;  // programmtion du PORTA en entrée
      TRISB  = 0;  // programmtion du PORTB en sortie
      TRISC  = 0;  // programmtion du PORTC en sortie
      TRISD  = 0;  // programmtion du PORTD en sortie
      OPTION_REG.NOT_RBPU = 0;
     
      do {
      adcon0=0x80;
      niv_bac1= Adc_Read(0); // lecture du niveau de fluide du bac1
      //portB=niv_bac1>>2;  //Affichage en binaire du niveau de fluide
      j= VnDuNiveau(niv_bac1);
     
       switch ( j ) {
       case 0:
            // Code
            portB = 0x01;
         break;
     
       case 1:
            // Code
            portB = 0x03;
            break;
       case 2:
            // Code
            portB = 0x07;
       break;
     
       case 3:
            // Code
            portB = 0x0F;
       break;
       case 4:
        // Code
        portB = 0x1F;
       break;
       case 5:
        // Code
        portB = 0x3F;
       break;
       case 6:
        // Code
        portB = 0x7F;
       break;
       case 7:
        // Code
        portB = 0xFF;
       break;
     
            }
     
     
     
       adcon0=0x88;                    //du bac1 sur le portB
       niv_bac2= Adc_Read(1);   // lecture du niveau de fluide du bac2
     
     
     
       //PORTC = niv_bac2>>2;  //Affichage en binaire du niveau de fluide
                               //du bac2 sur le portC
        j= VnDuNiveau(niv_bac2);
     
       switch ( j ) {
       case 0:
            // Code
            portC = 0x01;
         break;
     
       case 1:
            // Code
            portC = 0x03;
            break;
       case 2:
            // Code
            portC = 0x07;
       break;
     
       case 3:
            // Code
            portC = 0x0F;
       break;
       case 4:
        // Code
        portC = 0x1F;
       break;
       case 5:
        // Code
        portC = 0x3F;
       break;
       case 6:
        // Code
        portC = 0x7F;
       break;
       case 7:
        // Code
        portC = 0xFF;
       break;
     
            }
     
     
     
     
     
     
     
     
     
     
     
     
     
                   } while(1);
     }
    je cherche le programme pour faire fonctionner le LCD pour qu'il affiche le niveau aussi
    qui peut me donner le programme SVP sa m'aidera beacoup

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 248
    Billets dans le blog
    48
    Par défaut
    salut,

    tu utilises mikroC, non ? Il y a une Lcd Library avec un exemple.

  3. #3
    Membre averti
    Homme Profil pro
    université
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : université
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut
    Citation Envoyé par f-leb Voir le message
    salut,

    tu utilises mikroC, non ? Il y a une Lcd Library avec un exemple.
    oui justement je suis aller dans l'index des example mais sa ne marche pas
    j'ai jamais programmer j'ai juste vue des tuto sur internet

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 248
    Billets dans le blog
    48
    Par défaut
    Hé bien inspire-toi de l'exemple qui figure dans le lien que je t'ai donné. Tu définis les connexions du LCD et tu insères les commandes nécessaires dans ton code, un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char txt[] = "Hello World"; 
     
    Lcd_Init();                        // Initialize LCD
    Lcd_Cmd(_LCD_CLEAR);               // Clear display
    Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
     
    Lcd_Out(1,1,txt);                 // Write text in first row

  5. #5
    Membre averti
    Homme Profil pro
    université
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : université
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut
    mais je dois utiliser quel example pour mon montage ?

  6. #6
    Membre averti
    Homme Profil pro
    université
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : université
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut
    j'ai commancer sur le mikroC pour le lcd avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // Lcd pinout settings
    sbit LCD_RS at RD1_bit;
    sbit LCD_EN at RD0_bit;
    sbit LCD_D7 at RD7_bit;
    sbit LCD_D6 at RD6_bit;
    sbit LCD_D5 at RD5_bit;
    sbit LCD_D4 at RD4_bit;
     
    // Pin direction
    sbit LCD_RS_Direction at TRISD1_bit;
    sbit LCD_EN_Direction at TRISD0_bit;
    sbit LCD_D7_Direction at TRISD7_bit;
    sbit LCD_D6_Direction at TRISD6_bit;
    sbit LCD_D5_Direction at TRISD5_bit;
    sbit LCD_D4_Direction at TRISD4_bit;
    mais que faire ensuite pour le faire fonctioner ?
    Merci

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 248
    Billets dans le blog
    48
    Par défaut
    Voilà les déclarations des connexions faites. Pour la suite, un truc comme :

    Citation Envoyé par f-leb Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char txt[] = "Hello World"; 
     
    Lcd_Init();                        // Initialize LCD
    Lcd_Cmd(_LCD_CLEAR);               // Clear display
    Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
     
    Lcd_Out(1,1,txt);                 // Write text in first row
    un copier/coller de l'exemple de la library lcd adapté à l'affichage d'un magnifique "Hello World" sur la 1ère ligne du lcd.
    Avec les commentaires en plus (certes en angliche) dans le code tu devrais comprendre les instructions et commencer à afficher quelque chose

  8. #8
    Membre averti
    Homme Profil pro
    université
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : université
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Voilà les déclarations des connexions faites. Pour la suite, un truc comme :



    un copier/coller de l'exemple de la library lcd adapté à l'affichage d'un magnifique "Hello World" sur la 1ère ligne du lcd.
    Avec les commentaires en plus (certes en angliche) dans le code tu devrais comprendre les instructions et commencer à afficher quelque chose
    mais je veut pas afficher hello word

Discussions similaires

  1. [PIC] [PIC 16F877] Contrôle d'accès,LCD 2*16,clavier 3*4,2 led
    Par Ma nel dans le forum Embarqué
    Réponses: 2
    Dernier message: 20/02/2015, 17h11
  2. pic 16f877 avec mikroC
    Par zapollon dans le forum C
    Réponses: 9
    Dernier message: 13/05/2014, 15h19
  3. Réponses: 8
    Dernier message: 04/05/2012, 11h58
  4. [PIC] Pause avec les timers
    Par Ekinoks dans le forum Assembleur
    Réponses: 1
    Dernier message: 07/05/2005, 23h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo