TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: facundo_10 en 12 de Diciembre de 2007, 13:06:35

Título: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: facundo_10 en 12 de Diciembre de 2007, 13:06:35
Hola, necesito ayuda para conectar un teclado matriz a mi pic, es un 16f628, por ahora lo unico que quisiera que haga (para empezar,,, estoy aprendiendo  :P) es que cuando puse una tecla se muestre un numero (de la tecla que pulse) en una pantalla del LCD.

Como me parece que no voy a poder poner una pantalla LCD de 16x2 y un Tecado matriz de 7 contactos 3 columnas, 4 filas, voy a hacer una simulacion en proteus con un pic 16f873.

Que ahi voy a andar bien de pines.

Para controlar el LCD, ya fui aprendiendo, pero quisiera saber como se controlan estos teclados. Si alguien me puede ayudar!
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: navaismo en 12 de Diciembre de 2007, 13:15:50
Puedes checar este tema (http://www.todopic.com.ar/foros/index.php?topic=4025.msg28032#msg28032)

O bien checar todos los resultados que arroja el  buscador (http://www.todopic.com.ar/foros/index.php?action=search2)
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: facundo_10 en 12 de Diciembre de 2007, 14:22:23
Hola, pues si esta bien, pero me preguntaba si habia alguno con alguna explicacion un poco mas extensa y en español si es posible..

Desde ya muchas graciaS!
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: navaismo en 12 de Diciembre de 2007, 14:27:31
Si claro en el buscador aparecen muuchos temas sobre esto y creo que son transparentes los codigos, bueno el primero no tanto
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: frape en 12 de Diciembre de 2007, 17:14:27
busca en el foro que yo en su dia se pegaron varios post con codigo para teclado, yo mismo puse uno comentado, los teclados son muy somples de usar, eso si deberas cambiar de chip ya que si piensas usar display teclado y algun pin mas el 628 te queda corto, necesitarias un 876 y mejor aun un 877.
Saludos
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: navaismo en 12 de Diciembre de 2007, 17:48:43
eso si deberas cambiar de chip ya que si piensas usar display teclado y algun pin mas el 628 te queda corto, necesitarias un 876 y mejor aun un 877.
Saludos

Aunque puedes usar el mismo bus del LCD o display para otras cosas siempre y cuando desactives el lcd.
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: LordLafebre en 12 de Diciembre de 2007, 18:25:46
voy a hacer una simulacion en proteus con un pic 16f873.
Que ahi voy a andar bien de pines.


Hola:

Pues los pines no serán problemas, ya que el 16F873 tiene 28, y es el que va a utilizar, lo mencionó en su primer post.
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: facundo_10 en 13 de Diciembre de 2007, 16:03:09
Hola asi como dice giovanni voy a utilizar ese.... el 16f873


Lo que pasa es que me gustaria entender un poco la rutina:


" Define program variables
      Col     var     byte            " Keypad column
      Row     var     byte            " Keypad row
      Key     var     byte            " Key value

        OPTION_REG.7 = 0        " Enable PORTB pullups   
        Low PORTE.2             " LCD R/W line low (W)

        Delayms 100               " Wait for LCD to start
        Print Cls, "Press any key"  " Display sign on message

loop:   Gosub Getkey            " Get a key from the keypad
        Print $FE, 1, #Key     " Display ASCII key number
        Goto Loop               " Do it forever


" Subroutine to get a key from keypad
getkey:
        Delayms 50                " Debounce

getkeyu:
        " Wait for all keys up
        PORTB = 0               " All output pins low
        TRISB = $f0             -----> que quiere decir esto de aca????
        If (PORTB >> 4) <> $0F Then Getkeyu    ---- ??? ESTO DE ACA A QUE SE REFIERE?
        Delayms 50                " Debounce

getkeyp:
        " Wait for keypress
        For Col = 0 to 3        " 4 columns in keypad
                PORTB = 0       " All output pins low
                TRISB = (Dcd Col) ^ $FF "--------------> ESTO DE ACA ???'
                row = PORTB >> 4        --------------------> ?????
                If Row <> $0F Then Gotkey        -------------->?¿???
        Next Col
        Goto Getkeyp            " No keys down, go look again

Gotkey: " Change row and column to key number 1 - 16
        Key = (Col * 4) + (Ncd (Row ^ $0F)) ------------->???? que es esto ?
        Return                  " Subroutine over
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: navaismo en 13 de Diciembre de 2007, 16:21:20
Como podras ver en esa rutina usa muchos operadores logicos e instrucciones del compilador por ejemplo el NCD o el DCD que son instrucciones que puedes buscar en la ayuda del PBP. y los operadores igual.

Recuerda que cuando usas $, estas diciendo que es un numero hexadecimal, si pones % debera ser binario. Aca deberas ver que es para PROTON y para PBP deberas usar LCDOUT y PAUSE
Título: Re: Ayuda con TECLADO MATRIZ 3x4!!!
Publicado por: ASTROCAR en 02 de Febrero de 2008, 11:58:52
Hola, necesito ayuda para conectar un teclado matriz a mi pic, es un 16f628, por ahora lo unico que quisiera que haga (para empezar,,, estoy aprendiendo  :P) es que cuando puse una tecla se muestre un numero (de la tecla que pulse) en una pantalla del LCD.

Como me parece que no voy a poder poner una pantalla LCD de 16x2 y un Tecado matriz de 7 contactos 3 columnas, 4 filas, voy a hacer una simulacion en proteus con un pic 16f873.

Que ahi voy a andar bien de pines.

Para controlar el LCD, ya fui aprendiendo, pero quisiera saber como se controlan estos teclados. Si alguien me puede ayudar!

Estimado colega no te des tanto lio yo lo manejo de esta manera los teclados matricial y funciona perfecto

inicio:
   call TECLADO
   if TECLA=11 THEN inicio
   ELSE
   PRINT $FE,2, #TECLA
   GOTO inicio


TECLADO:
        TECLA = 11
        PORTD.0 = 0   'COLUMNA 1=0
        PORTD.1 = 1   'COLUMNA 2=1
        PORTD.2 = 1   'COLUNMA 3=1
       
        If PORTD.3 = 0 Then TECLA = 1  'TECLA 1
        If PORTD.4 = 0 Then TECLA = 4  'TECLA 4
        If PORTD.5 = 0 Then TECLA = 7  'TECLA 7
        If PORTD.6 = 0 Then TECLA = 10 'TECLA *
       
        PORTD.0 = 1   'COLUMNA 1=1
        PORTD.1 = 0   'COLUMNA 2=0
        PORTD.2 = 1   'COLUNMA 3=1
       
        If PORTD.3 = 0 Then TECLA = 2  'TECLA 2
        If PORTD.4 = 0 Then TECLA = 5  'TECLA 5
        If PORTD.5 = 0 Then TECLA = 8  'TECLA 8
        If PORTD.6 = 0 Then TECLA = 0 'TECLA 0
       
        PORTD.0 = 1   'COLUMNA 1=1
        PORTD.1 = 1   'COLUMNA 2=1
        PORTD.2 = 0   'COLUNMA 3=0
       
        If PORTD.3 = 0 Then TECLA = 3  'TECLA 3
        If PORTD.4 = 0 Then TECLA = 6  'TECLA 6
        If PORTD.5 = 0 Then TECLA = 9  'TECLA 9
        If PORTD.6 = 0 Then TECLA = 12 'TECLA #
        delayms 150
        Return 'RETORNA UNA LINEA DESPUES DEL LLAMADO CALL
end

nota: estoy tienes que definir tu puerto para ser usado con el teclado en este caso el puerto D :mrgreen: