pic16f + clavier 4x2
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

pic16f + clavier 4x2



  1. #1
    invite64d8200f

    Exclamation pic16f + clavier 4x2


    ------

    slt tout le monde
    je suis entrain de programmer un pic avec le langage c lié a un clavier
    Nom : Capture.PNG
Affichages : 70
Taille : 75,4 Ko

    le but de mon programme c'est en cliquant sur chaque nmro il s'affiche sur l'écran
    voici mon programme la partie qui concerne le clavier (ca n'a pas marché!!)
    //////////////////////////////
    lcd_init();
    kbd_init();

    lcd_putc("\fReady...\n");

    output_d(0);
    k=kbd_getc();
    while (TRUE) {

    if ((output_high(pin_d2)) && ((input(PIN_d3)!=0) ))
    { lcd_putc("1");
    }
    if ((output_high(pin_d3)) && ((input(PIN_d3)!=0) ))
    { lcd_putc("2");
    }
    }

    merci de m'avoir aider

    -----

  2. #2
    spown

    Re : pic16f + clavier 4x2

    Bonjour/bonsoir,

    Il manque beaucoup de paramètres obligatoires sur ton programme ( define, main, .. ... ) voir un exemple sur elgoog qui correspond ton ( on ne sait pas ) ' complilateur + IDE '

    Et finalement , What's the problem ???

    Pourquoi il manque une résistance sur 'A' ?

  3. #3
    invite64d8200f

    Re : pic16f + clavier 4x2

    bonsoir
    j'ai mis juste la partie qui concerne le clavier!!
    je travaille avec le picc
    le probleme c'est que l'ecran n'affiche rien en cliquant sur le 1 ou sur le 2!!

  4. #4
    spown


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

    Re : pic16f + clavier 4x2

    boujour!

    apres avoir ajouté une resistance à la premiere ligne

    ////////////////////////////////
    output_high(pin_d0);
    if (input(pin_d3)!=0)
    { printf(lcd_putc,"3") ;
    ///////////////////////////////////

    d'apres ma logique le pic d0 génére 5v, alors en cliquant sur le bouton 3, l'entrée d3 sera !=0
    c'est un simple test sur le bouton 3, je sais pas pourquoi ca marche pas!!!

  7. #6
    paulfjujo

    Re : pic16f + clavier 4x2

    Code:
    apres avoir ajouté une resistance à la premiere ligne
    R 10K entre RB3 (ligne A) et 0V ?

    Pull Up PORTB activees ?

    sinon Tirer au +5V les colonnes 1,2,3 chacune via R=4.7K
    pour bien valider un niveau 1 ..

  8. #7
    invite64d8200f

    Re : pic16f + clavier 4x2

    bonsoir!
    j'ai travaillé avec ce code


    #define ICD_DEBUG 0 ; <<< if using MPLAB ICD Debugger, moves bootloader down 256 bytes to make room for it [0|1]
    #define FOSC D'4000000' ; <<< set quartz frequence [Hz], max. 20 MHz
    #define BAUD_ERROR D'4' ; <<< set baud rate error [%]
    #define PIN ; <<< set method of bootloader start PIN/TIME
    #define TRIGGER PORTC,5 ; <<< only for PIN - set PORT_X,PIN_NR
    #define TIMEOUT D'2' ; <<< only for TIME - set time [0.1s], max. 25 sec
    #define WATCHDOGTIMER 0 ; <<< Watchdog timer default OFF/ON [0|1]

    #include <16F877.H>// Include header file
    #fuses XT,NOWDT// Crysral Osc(4Mhz), No watchdog timer
    #use delay(clock=20000000)// 4Mhz crystal frequency
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)// to set baud rate, Tx and Rx Pin
    #include <math.h>
    #define use_portd_kbd TRUE
    #include <kbd.c>

    #include "Flex_LCD420.c"
    #bit t1_overflow=0x0C.0


    #define c3 PIN_d0
    #define c2 PIN_d1
    #define c1 PIN_d2
    #define r1 PIN_d3
    #define r2 PIN_d4
    #define r3 PIN_d5
    #define r4 PIN_d6
    char value;

    //#include <kbd4x3.c>

    #use delay(clock=4000000)

    lcd_init();

    int readkeypad (void)
    {
    output_bit (r1, 0);
    output_bit (r2, 0);
    output_bit (r3, 0);
    output_bit (r4, 0);
    output_bit (r1, 1);//activate 1st row and scan for column
    delay_ms(10);
    IF (input (c1)) RETURN 10;
    IF (input (c2)) RETURN 0;
    IF (input (c3)) RETURN 11;
    //IF (input (c4)) RETURN 12;
    output_bit (r1, 0);//Deactivate 1st row
    output_bit (r2, 1);//activate 2nd row and scan for column
    delay_ms(10);
    IF (input (c1)) RETURN 7;
    IF (input (c2)) RETURN 8;
    IF (input (c3)) RETURN 9;
    // IF (input (c4)) RETURN 13;
    output_bit (r2, 0);//Deactivate 2nd row
    output_bit (r3, 1);//activate 3rd row and scan for column
    delay_ms(10);
    IF (input (c1)) RETURN 4;
    IF (input (c2)) RETURN 5;
    IF (input (c3)) RETURN 6;
    //IF (input (c4)) RETURN 14;
    output_bit (r3, 0);//Deactivate 3rd row
    output_bit (r4, 1);//activate 4th row and scan for column
    delay_ms(10);
    IF (input (c1)) RETURN 1;
    IF (input (c2)) RETURN 2;
    IF (input (c3)) RETURN 3;
    // IF (input (c4)) RETURN 15;
    output_bit (r4, 0);//Deactivate 4th row
    RETURN 255;
    }

    void main ()
    {
    while(1)
    {

    value=readkeypad();
    printf(lcd_putc,"%d",value);
    }

    }

    le probleme c'est que rien ne s'affiche sur l'écran lcd!!!
    merci de m'aider!!!

Discussions similaires

  1. LCD sous pic16F
    Par invite47d60888 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/10/2011, 14h11
  2. tempo led pic16f ou 18f
    Par invite4ff12657 dans le forum Électronique
    Réponses: 3
    Dernier message: 05/04/2010, 18h47
  3. Problème PIC16F
    Par invited6525aa8 dans le forum Électronique
    Réponses: 7
    Dernier message: 15/05/2009, 20h10
  4. transformer un clavier AZERTY en clavier mathématique besoin d'un lien!
    Par invite47e0ec41 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/03/2008, 17h31
  5. Clavier sans fil vers clavier PS/2
    Par invite213a33e8 dans le forum Électronique
    Réponses: 4
    Dernier message: 28/06/2006, 13h52
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...