Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

langage c pour clavier



  1. #1
    khalid76

    Exclamation langage c pour clavier


    ------

    salut
    Voila je dois realiser un programme en langage c qui puisse scruter un clavier 12 touches en envotant un niveau logique 0 sur une ligne et en relevant le code sur les 3 colonnes et apartir de ce code dire quelle touche est appuyee.si vous pouviez me faire des propositions
    merci d'avance

    -----

  2. Publicité
  3. #2
    aabdoos

    Wink Re : langage c pour clavier

    salut khalid76 et tout le groupe
    voici les ingrediants de votre recette :
    1) un encodeur 74LS148 (vous serrais besoin de 2)
    2) acces a votre port parallel via votre programme C
    si vous n'avez qu'un seul port installerd ans votre mahine
    son adresse est alors 0x378(en hex).
    cette adresse est pour les broches de sortie (port parallel classique) ou entres/sortie(si port parallel EPP).
    sinon utilise les autres entrees ..Port 0x379.
    3) un circuit imprime sous forme de matice 4 x 3 .
    reste a savoire si vous etes un bon cooker
    si besoin d'autre aide , je serais disponible
    bon courrage

  4. #3
    invite03481543

    Re : langage c pour clavier

    Salut,

    tu peux librement t'inspirer d'une de mes sources:

    Code:
    /*---------------------------*/
    /*                           */
    /*    Lecture caractere      */
    /*                           */
    /*---------------------------*/
    
    void lecture_caractere(bit beep)
    {
     interruption = FAUX ;
     buffer_transmission[0] = 0x0F ;
     /* mise a zero des colonnes P7, P6, P5, P4 */
     ACQUITTEMENT = FAUX ;
     while ( !ACQUITTEMENT ) 
       {
        watch_dog() ;
        I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
       }
     I2C_READ(CLAVIER,1,&buffer_reception) ;
     caractere = buffer_reception[0] ;
     /* lecture des lignes P0, P1, P2, P3 */
     if (caractere != ABSENT)
       {
        temporisation(100) ;
        if ( beep ) 
          {
           buzzer_on() ;
           buzzer = VRAI ;
          }
        /* mise a 1 des colonnes pour lecture */
        buffer_transmission[0] = caractere | 0xF0 ;
        /* memorisation de l etat des lignes apres appui de la touche */
        I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
        /* lecture de la colonne concernee et donc du code de la touche */
        I2C_READ(CLAVIER,1,&buffer_reception) ;
        caractere = buffer_reception[0] ;
        /* memorisation du code caractere afin de supprimer les rebonds */
        if ( memoire != caractere )
          {
           toggle = ~toggle ;
           memoire = caractere ;
           inc_touche = 0 ;
          }
        else caractere = VIDE ;
        if ( caractere == VIDE ) inc_touche++ ;
    
       }
     else 
       {
        memoire = 0xFF ;
        /* if ( buzzer == FAUX ) */ buzzer_off() ;     
       }
     /* remise a 0 de toutes les colonnes et a 1 de toutes les lignes du clavier */
     buffer_transmission[0] = 0x0F ;
     I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
    }
    C'est un clavier à base de PCF8574 (I2C)

  5. #4
    khalid76

    Re : langage c pour clavier

    c'est trop compliqué moi je dois utiliser un programme plus simple c'est du c.moi j'envoi un 0 sur les lignes du clavier et je voudrai recuperer le code sur les colones du clavier pour connaitre quelle touche est appuyée
    merci

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    invite03481543

    Re : langage c pour clavier

    Citation Envoyé par khalid76 Voir le message
    c'est trop compliqué moi je dois utiliser un programme plus simple c'est du c.moi j'envoi un 0 sur les lignes du clavier et je voudrai recuperer le code sur les colones du clavier pour connaitre quelle touche est appuyée
    merci
    Il faudrait peut-être nous dire quel µC tu utilises et quel schéma tu as réalisé.
    Il m'avait semblé que tu nous avais déjà vaguement parlé d'un clavier à base de 8574, il y a quelques temps et que tu ne savais pas comment faire, je me trompe?

  9. #6
    invite03481543

    Re : langage c pour clavier

    Ben non je me trompe pas:

    http://forums.futura-sciences.com/thread120379.html

    T'es sur de bien savoir ce que tu veux?

  10. Publicité
  11. #7
    grand85

    Re : langage c pour clavier

    Citation Envoyé par HULK28 Voir le message
    Salut,

    tu peux librement t'inspirer d'une de mes sources:

    Code:
    /*---------------------------*/
    /*                           */
    /*    Lecture caractere      */
    /*                           */
    /*---------------------------*/
    
    void lecture_caractere(bit beep)
    {
     interruption = FAUX ;
     buffer_transmission[0] = 0x0F ;
     /* mise a zero des colonnes P7, P6, P5, P4 */
     ACQUITTEMENT = FAUX ;
     while ( !ACQUITTEMENT ) 
       {
        watch_dog() ;
        I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
       }
     I2C_READ(CLAVIER,1,&buffer_reception) ;
     caractere = buffer_reception[0] ;
     /* lecture des lignes P0, P1, P2, P3 */
     if (caractere != ABSENT)
       {
        temporisation(100) ;
        if ( beep ) 
          {
           buzzer_on() ;
           buzzer = VRAI ;
          }
        /* mise a 1 des colonnes pour lecture */
        buffer_transmission[0] = caractere | 0xF0 ;
        /* memorisation de l etat des lignes apres appui de la touche */
        I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
        /* lecture de la colonne concernee et donc du code de la touche */
        I2C_READ(CLAVIER,1,&buffer_reception) ;
        caractere = buffer_reception[0] ;
        /* memorisation du code caractere afin de supprimer les rebonds */
        if ( memoire != caractere )
          {
           toggle = ~toggle ;
           memoire = caractere ;
           inc_touche = 0 ;
          }
        else caractere = VIDE ;
        if ( caractere == VIDE ) inc_touche++ ;
    
       }
     else 
       {
        memoire = 0xFF ;
        /* if ( buzzer == FAUX ) */ buzzer_off() ;     
       }
     /* remise a 0 de toutes les colonnes et a 1 de toutes les lignes du clavier */
     buffer_transmission[0] = 0x0F ;
     I2C_WRITE(CLAVIER,1,&buffer_transmission) ;
    }
    C'est un clavier à base de PCF8574 (I2C)
    bonjour a tous j'ai le meme souci que khalid76 je dois gere un clavier matriciel qui lui est commande par un pcf8574 et relié a un 16f877. Mon probleme "la programmation" je me suis donc inspire de ton programme
    hulk28, mais j arrive pas a tout comprendre! peut tu m expliker tes buffer et tes pointeurs? et l'i2c start et stop pk ne sont t il pas mit? merci ...

  12. #8
    invite03481543

    Re : langage c pour clavier

    Il n'y a pas de pointeur ici.

    Les commandes I2C sont traitées ailleurs dans une routine spécialement dédiée à la gestion de l'I2C, ici ce qui est important c'est le principe de lecture/écriture des colonnes et des lignes de la matrice clavier cablé sur le PCF8574 afin de déduire la touche enfoncée.

  13. #9
    grand85

    Re : langage c pour clavier

    Mais comment ferai tu pour que le microcontroleur le 16f877 reconnaisse l interruption du pcf 8574 lors d'une touche appuyée. C'est sa que je n arrive pas a ecrire en C.
    merci

  14. #10
    invite03481543

    Re : langage c pour clavier

    Rien de plus simple, l'interruption INT du (ou des) PCF8574 doit être reliée à une entrée interruption du µC.

    Cette interruption est de type hardware elle ne peut être détectée au travers du bus.

    Lors de la mise à 0 de INT (interruption du PCF8574), le µC va se dérouter du prog principal pour aller lire le contenu des data du PCF.

  15. #11
    grand85

    Re : langage c pour clavier

    merci pour le renseignement mais la liaison je la connaissais mais je pensais qu'il fallait faire une ligne de commande pour ca! mais donc ton programme il me servirait a scruter quelle touche a ete appuyée n'est ce pas? et merci pour les renseignements

  16. #12
    invite03481543

    Re : langage c pour clavier

    Oui c'est ça, il faut que tu relies la broche INT du PCF8574 à une entrée INT du µC, ainsi dès qu'une interruption est envoyée par un PCF8574, le µC va aller interroger le coupable de l'interruption.
    Car si tu n'utilises pas l'interruption ton µC devra sans cesse s'occuper de cette fonction clavier en permanence pour ne pas rater d'appui.
    @+

  17. Publicité
  18. #13
    grand85

    Re : langage c pour clavier

    Salut re. j'ai un petit souci avec ton programme depuis le temps et je n'arrive toujours pas à le faire fonctionner avec ma carte et pourrai tu m'aider à le comprendre en commencant par le (Bit beep). merci..

  19. #14
    carlos1986

    Re : langage c pour clavier

    salut tous le monde
    bon moi j encors pas lu les interuptions pour pic 16f877
    mais j voudrais savoir pour mon cas
    j veu appuier sur une touche atravers la quellle mon pic va executer un programme bien specifique la question c eske j ai besoin d'utilise les
    interruptions et la keske le clavier va me retourner dans ces segments quand j v appuier sur une touche ( un nombre binaire parce que mon ide c que j v teste cette valeur pour savoir quel programme utilise)

  20. #15
    Jack
    Modérateur

    Re : langage c pour clavier

    Merci de ne pas utiliser le langage sms dans les messages.

    Point 12 de la charte:
    12. Respectez les lecteurs du forum, n'écrivez pas vos messages en style SMS ou phonétique. Utilisez la fonction "prévisualisation" pour vous relire et limiter les fautes d'orthographe. Evitez les majuscules pour attirer l'attention des lecteurs.

  21. #16
    Jack
    Modérateur

    Re : langage c pour clavier

    tant que j'y suis, ça serait bien que tu donnes l'impression que les réponses t'intéressent vraiment :
    http://forums.futura-sciences.com/el...ml#post2850021
    Dernière modification par Jack ; 22/02/2010 à 01h08.

Discussions similaires

  1. Clavier pour automate
    Par Skybreaker dans le forum Électronique
    Réponses: 8
    Dernier message: 05/05/2007, 15h21
  2. quel langage pour pic ?
    Par spilz dans le forum Électronique
    Réponses: 12
    Dernier message: 01/08/2006, 13h40
  3. Clavier sans fil vers clavier PS/2
    Par sniv dans le forum Électronique
    Réponses: 4
    Dernier message: 28/06/2006, 12h52
  4. clavier visuel pour windows 98
    Par jmhenri dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 21/07/2005, 08h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.