besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4



  1. #1
    invitea6b47a23

    besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4


    ------

    Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Bonjour!
    j'essaie d'écrire un programme pour entrer des nombres à 4 chiffres dans un pic 16F877A à l'aide d'un clavier 4X4 et d'afficheur ces nombres sur un LCD 4X20 à l'aide du logiciel MikroC pro.
    Voilà mon programme qui ne s'exécute par correctement.

    S'il vous plait, m'indiquer où j'ai fait l'erreur et merci d'avance!

    unsigned short kp, cnt, oldstate = 0,i=0;
    char txt[6];
    float T[6];


    // Keypad module connections
    char keypadPort at PORTD;
    // End Keypad module connections

    // LCD module connections
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
    // End LCD module connections


    char txt1[] = " Initialisation ";
    char txt2[] = " ...Machine prete...";
    char txt3[] = "Largeur:";
    char txt4[] = "ON:valider =:effacer";
    char txt5[] = "X:annuler";

    void main() {
    cnt = 0; // Reset counter
    Keypad_Init(); // Initialize Keypad
    ADCON1=6;
    Lcd_Init(); // Initialize LCD
    Lcd_Cmd(_LCD_CLEAR); // Clear display
    Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
    Lcd_Out(2,6,txt1); // Write text in first row
    delay_ms(2000);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,1,txt2); // Write text in second row
    //Lcd_Out(2,1,txt3);
    //Lcd_Out(3,1,txt4);
    //Lcd_Out(4,1,txt5);

    do {
    kp = 0; // Reset key code variable

    // Wait for key to be pressed and released
    do
    kp = Keypad_Key_Click(); // Store key code in kp variable
    while (!kp);
    // Prepare value for output, transform key to it's ASCII value
    switch (kp) {

    case 1: kp = 55; break; // 7 // Uncomment this block for keypad4x4
    case 2: kp = 56; break; // 8
    case 3: kp = 57; break; // 9
    case 4: kp = 27; break; // ESC
    case 5: kp = 52; break; // 4
    case 6: kp = 53; break; // 5
    case 7: kp = 54; break; // 6
    case 8: kp = 127; break; // DEL
    case 9: kp = 49; break; // 1
    case 10: kp = 50; break; // 2
    case 11: kp = 51; break; // 3
    case 12: kp = 95; break; // -
    case 13: kp = 42; break; // *
    case 14: kp = 48; break; // 0
    case 15: kp = 61; break; // =
    case 16: kp = 43; break; // +

    }
    barnabe: i=0;
    do { steve: kp = Keypad_Key_Click();}
    while( (Kp==27)||(Kp==127)||(Kp==95)| |(Kp==42)||(Kp==61)||(Kp==43)) ;
    T[i]= kp;
    i=i+1;
    FloatToStr(T[i], txt);
    // WordToStr(cnt, txt); // Transform counter value to string
    Lcd_Out(2, 9, txt); // Display counter value on LCD
    if(i<1){goto steve;}
    else
    if(i>2){goto barnabe;}
    else
    do{
    Lcd_Out(3, 1, txt4);
    Lcd_Out(4, 1, txt5);
    kp = Keypad_Key_Click(); // Store key code in kp variable
    } while(kp!=42);
    PORTB.B0=1;
    } while (1);
    }

    Répondre avec citation Répondre au message privé Transférer le message Transférer

    Réponse rapide
    Historique du message Voir l'historique

    Supprimer ce message
    Supprimer ce message

    Pour supprimer ce message, cocher la case appropriée ci-dessous et cliquez sur le bouton « Supprimer ce message ».
    Mes messages

    Boîte de réception
    Éléments envoyés

    Envoyer un message
    Suivre vos messages
    Modifier vos dossiers

    Mes abonnements

    Abonnements

    Modifier vos dossiers

    Mes paramètres

    Mon profil Mon profil
    Modifier votre profil
    Modifier votre signature
    Vie privée
    Mon compte utilisateur Mon compte utilisateur
    Email & Mot de passe
    Options générales
    Modifier la liste d'ignorés
    Réseau social Réseau social
    Amis & Contacts
    Rappel des événements
    Forums Divers
    Pièces jointes

    -----

  2. #2
    invitefaaca50b

    Re : besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    c'est pas les exemples qui manquent sur le web... Chercher sous: "clavier matriciel" ou "matrice keyboard"

  3. #3
    invitea6b47a23

    Re : besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Bonjour Franck!
    mon problème c'est le programme, je ne sais pas trop pourquoi ça ne fonctionne pas bien quand je lance la simulation sur ISIS.
    S'il te plait, mets y un peu de ton temps.



    besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Bonjour!
    j'essaie d'écrire un programme pour entrer des nombres à 4 chiffres dans un pic 16F877A à l'aide d'un clavier 4X4 et d'afficheur ces nombres sur un LCD 4X20 à l'aide du logiciel MikroC pro.
    Voilà mon programme qui ne s'exécute par correctement.

    S'il vous plait, m'indiquer où j'ai fait l'erreur et merci d'avance!

    unsigned short kp, cnt, oldstate = 0,i=0;
    char txt[6];
    float T[6];


    // Keypad module connections
    char keypadPort at PORTD;
    // End Keypad module connections

    // LCD module connections
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
    // End LCD module connections


    char txt1[] = " Initialisation ";
    char txt2[] = " ...Machine prete...";
    char txt3[] = "Largeur:";
    char txt4[] = "ON:valider =:effacer";
    char txt5[] = "X:annuler";

    void main() {
    cnt = 0; // Reset counter
    Keypad_Init(); // Initialize Keypad
    ADCON1=6;
    Lcd_Init(); // Initialize LCD
    Lcd_Cmd(_LCD_CLEAR); // Clear display
    Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
    Lcd_Out(2,6,txt1); // Write text in first row
    delay_ms(2000);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,1,txt2); // Write text in second row
    //Lcd_Out(2,1,txt3);
    //Lcd_Out(3,1,txt4);
    //Lcd_Out(4,1,txt5);

    do {
    kp = 0; // Reset key code variable

    // Wait for key to be pressed and released
    do
    kp = Keypad_Key_Click(); // Store key code in kp variable
    while (!kp);
    // Prepare value for output, transform key to it's ASCII value
    switch (kp) {

    case 1: kp = 55; break; // 7 // Uncomment this block for keypad4x4
    case 2: kp = 56; break; // 8
    case 3: kp = 57; break; // 9
    case 4: kp = 27; break; // ESC
    case 5: kp = 52; break; // 4
    case 6: kp = 53; break; // 5
    case 7: kp = 54; break; // 6
    case 8: kp = 127; break; // DEL
    case 9: kp = 49; break; // 1
    case 10: kp = 50; break; // 2
    case 11: kp = 51; break; // 3
    case 12: kp = 95; break; // -
    case 13: kp = 42; break; // *
    case 14: kp = 48; break; // 0
    case 15: kp = 61; break; // =
    case 16: kp = 43; break; // +

    }
    barnabe: i=0;
    do { steve: kp = Keypad_Key_Click();}
    while( (Kp==27)||(Kp==127)||(Kp==95)| |(Kp==42)||(Kp==61)||(Kp==43)) ;
    T[i]= kp;
    i=i+1;
    FloatToStr(T[i], txt);
    // WordToStr(cnt, txt); // Transform counter value to string
    Lcd_Out(2, 9, txt); // Display counter value on LCD
    if(i<1){goto steve;}
    else
    if(i>2){goto barnabe;}
    else
    do{
    Lcd_Out(3, 1, txt4);
    Lcd_Out(4, 1, txt5);
    kp = Keypad_Key_Click(); // Store key code in kp variable
    } while(kp!=42);
    PORTB.B0=1;
    } while (1);
    }

  4. #4
    invitefaaca50b

    Re : besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Si isis etait l'outil de simulo par excellence, ca se saurait. Ce qui ne m'etonne pas, c'est qu'une simulo reussie aboutit sur un fiasco en reel. et ca c'est normal.
    Isis ne simule que des cas generaux avec de grosses bisouilles pour arranger la sauce (surtout avec les µC)...
    Et c'est un programme que tu as pondu toi? ou repiqué a quelqu'un d'autre?

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

    Re : besoin d'aide pour Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    oui, c'est un programme que j'ai écris moi même, et comme je suis nul dans ce domaine, c'est pourquoi je demande votre aide!

Discussions similaires

  1. comment faire pour entrer ce code dans mon PIC?
    Par invite93ed6d5d dans le forum Électronique
    Réponses: 8
    Dernier message: 13/02/2011, 11h00
  2. cherche code source pour clavier 4x4
    Par LABTOOL48 dans le forum Électronique
    Réponses: 1
    Dernier message: 20/04/2010, 18h22
  3. Besoin d'aide interruption pic 16F877A
    Par invitea869b073 dans le forum Électronique
    Réponses: 0
    Dernier message: 25/05/2009, 08h35
  4. besoin d'aide pour identification pic commun a des carburants
    Par invitec837a32d dans le forum Chimie
    Réponses: 0
    Dernier message: 05/03/2007, 15h48
  5. besoin d'aide pour realiser des formule pour inserer dans un tableur
    Par invite7ad10b24 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 23/08/2006, 18h20
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...