SlideShare una empresa de Scribd logo
MANEJO DE TECLADO 4x4 CON PIC 16F84A

--------------------------------------------------------------------------------------------------------------
                                   -----------------------------------------

Un teclado matricial esta constituido por una matriz de pulsadores dispuestos en columnas
y filas, cada pulsador se conecta a una fila y a una columna, el diagrama del teclado y la
forma de conectar el teclado al pic se muestra en la figura:




Como se ve en la figura las filas del teclado se conectan a las líneas RB0,RB1,RB2,RB3
configuradas como salidas mientras que las columnas se conectan a las líneas
RB4,RB5,RB6,RB7 configuradas como entradas .

Para detectar si hay una tecla pulsada se aplica el siguiente procedimiento: Se hace un
barrido por cada una de las filas, inicialmente se aplica a la primera fila un nivel bajo y a las
otras tres un nivel alto si en este instante se pulsa alguna tecla de esta fila entonces el nivel
bajo aparecerá en la columna en la que se encontraba la tecla, seguidamente se pasa a
verificar la segunda fila enviando un nivel bajo a esta y a las otras un nivel alto y así
sucesivamente. Verificando los niveles de los terminales de las columnas se podrá deducir
si hay alguna tecla pulsada en la fila donde se esta aplicando el nivel bajo, considerando
que si no hay alguna tecla pulsada en las entradas del PIC RB4, RB5, RB6, RB7 se
encontrara un nivel alto.

Para realizar el programa en el pic debemos tener en cuenta que se deben de habilitar las
resistencias internas del pic.

A continuación la librería para el control del teclado 4x4:

;*************************************************************************
*****************
;Librería para el control de un teclado matricial 4x4 ; que fue publicado en el libro titulado:
"Microcontrolador PIC16F84A
;"del ;autor: ENRIQUE PALACIOS, FERNANDO REMIRO, LUCAS LOPEZ
;TECLADO.inc
;*************************************************************************
*****************

cblock
TECL_TECLAORDEN
endc
TECL_ULTIMATECLA equ d'15'
TECLADO_LEEHEX
call TECLADO_LEEORDENTECLA
btfss STATUS,C
goto TECL_FINLEEHEX
call TECL_CONVIERTEORDENENHEX
bsf STATUS,C
TECL_FINLEEHEX
return
TECL_CONVIERTEORDENENHEX
addwf PCL,F
DT 1h,2h,3h,0Fh
DT 4h,5h,6h,0Eh
DT 7h,8h,9h,0Dh
DT 0Ah,0h,0Bh,0Ch
TECLADO_FINTABLEHEX
if(TECLADO_FINTABLEHEX> 0xFF)
ERROR "Atencion:la tabla a superado el tamño de la pagina de los "
MESSG "Primeros 256bytes de memoria rom, no funconara correctamente "
endif
TECLADO_INICIALIZA
bsf STATUS,RP0
movlw b'11110000'
movwf PORTB
bcf OPTION_REG,7
bcf STATUS,RP0
call TECLADO_ESPERADEJEPULSAR
return
TECLADO_COMPROBACION EQU b'11110000'
TECLADO_ESPERADEJEPULSAR
movlw TECLADO_COMPROBACION
movwf PORTB
TECLADO_SIGUEESPERANDO
call RETARDO_20MS
movf PORTB,W
sublw TECLADO_COMPROBACION
btfss STATUS,Z
goto TECLADO_SIGUEESPERANDO
return
TECLADO_LEEORDENTECLA
clrf TECL_TECLAORDEN
movlw b'11111110'
TECL_CHEQUEAFILA
movwf PORTB
TECL_COMLUMNA1
btfss PORTB,4
goto TECL_GUARDARVALOR
incf TECL_TECLAORDEN,F

TECL_COMLUMNA2
btfss PORTB,5
goto TECL_GUARDARVALOR
incf TECL_TECLAORDEN,F

TECL_COMLUMNA3
btfss PORTB,6
goto TECL_GUARDARVALOR
incf TECL_TECLAORDEN,F

TECL_COMLUMNA4
btfss PORTB,7
goto TECL_GUARDARVALOR
incf TECL_TECLAORDEN,F

TECLA_TERMINARCOLUMNAS
movlw TECL_ULTIMATECLA
subwf TECL_TECLAORDEN,W
btfsc STATUS,C
goto TECL_NOPULSADA
bsf STATUS,C
rlf PORTB,W
goto TECL_CHEQUEAFILA

TECL_NOPULSADA
bcf STATUS,C
goto TECL_FINTECLADOLEE

TECL_GUARDARVALOR
movf TECL_TECLAORDEN,W
bsf STATUS,C

TECL_FINTECLADOLEE
return
Esta librería posee las siguientes subrutinas:

TECLADO_INICILIZA; que se encarga de configurar las líneas del puerto B para el uso
del teclado .
TECLADO_ESPERADEJEPULSAR; se mantiene en esta subrutina hasta que se deje de
pulsar un tecla.
TECLADO_LEEORDENTECLA; Lee el teclado obteniendo en el registro W el orden de la
tecla pulsada.
TECLADO_LEEHEX; Lee el teclado obteniendo en el registro W el valor hexadecimal de
la tecla pulsada

Se debe distinguir entre el orden de una tecla con su respectivo valor; el orden hace
referencia a la posición de la tecla, este será el mismo para cualquier teclado; mientras que
el valor hace referencia a la serigrafía del teclado que no es el mismo para todos.

Se activara una interrupción al encontrarse una tecla presinada.

APLICACION.-

Desarrollar un programa en el cual se visualice en un display el valor de la tecla pulsada.
Para lo cual haremos uso de las librerías : TECLADO.inc, RETARDOS.inc
La conexión del teclado, display, pic se muestran en la figura, se hace uso de el integrado
7448 para decodificar las salidas del puerto A, el programa es el siguiente:

;*************************************************************************
**
;AUTOR:CARLOS ALBERTO YACO TINCUSI
; programa que visualiza en un display de catodocomu el valor de la tecla pulsada en un
teclado 4x4
;fecha : 28-05-07
;*************************************************************************
**
list p=16f84a
include<P16F84A.inc>
cblock 0x0C
contador
endc
org 0
goto inicio
org 4
gotointerupcion
inicio
bsf STATUS,RP0
movlw b'00000000'
movwf PORTA
movlw b'11110000'
movlw PORTB
bcf STATUS,RP0
call TECLADO_INICIALIZA
movlw b'10001000'
movwf INTCON
principal
sleep
goto principal

interupcion
call TECLADO_LEEHEX
movwf contador
movlw d'10'
subwf contador,0
btfsc STATUS,C
clrf contador
movfw contador
movwf PORTA
call TECLADO_ESPERADEJEPULSAR
bcf INTCON,0
bsf INTCON,7
goto principal
include<RETARDOS.inc>
include<TECLADO.inc>

end

Al inicio del programa se hace la configuración del puerto A, así como se habilita la
interrupción por RBI, luego el pic se encuentra en un estado de bajo consumo (splep) hasta
el momento en que una tecla sea pulsada lo cual produce una interrupción entonces
llamamos a la subrutina TECLADO_LEEHEX la cual nos devuelve el valor de la tecla
pulsada, mostrando este valor por el PUERTO A, para después volver a habilitar la
interrupción por RBI, solo se muestran valores del 0-9 las demás teclas tales como
A,B,C,D,E,F nos dan el valor de cero.

Una imagen del resultado final:




La librería TECLADO.inc la pueden descargar de aquí.
El programa ejemplo también lo pueden descargar de aquí

Espero que les sirva de algo
CARLOS YACO

ELECTRONICA BASICA




Programa clase

                 LIST P = PIC16F84A

                 INCLUDE         "P16F84A.INC"

                 INCLUDE         "MACRO.INC"



                 CBLOCK 0X0C

                         TECLA

                 ENDC



ORG 0X00



KB_PORT          BANK1

                         MOVLW         B'11110000'

                         MOVWF         TRISB

                         BCF           OPTION_REG,NOT_RBPU

                 BANK0

                 RETURN
KB_SCAN

       CLRF TECLA

       INCF TECLA,F

       MOVLW B'00001110'

                      MOVWF       PORTB



OTRO

       NOP

                      BTFSC PORTB,4

                      GOTO S1

                      RETURN



S1     INCF TECLA,F

               BTFSC PORTB,5

               GOTO S2

               RETURN



S2     INCF TECLA,F

               BTFSC PORTB,6

               GOTO S3

               RETURN



S3     INCF TECLA,F
BTFSC PORTB,7

              GOTO S4

              RETURN



S4   INCF TECLA

     MOVLW .17

              XORWF TECLA,W

              BTFSS STATUS,Z

              GOTO S5

              MOVLW 0X80

              MOVWF TECLA

              RETURN

S5   BSF STATUS,C

        RLF PORTB,F

            GOTO OTRO
LIST P = PIC16F84A
                              INCLUDE "P16F84A.INC"
                              INCLUDE "MACRO.INC"

                              CBLOCK 0X0C
                                     TECLA
                              ENDC

KB_Port;Inicializa la puerta B para las entradas del
;teclado. Programa RB0-3 como salidas y RB4-7
;entradas con las resistencias de polarización
;habilitadas-------------------------------------------
           BSF           STATUS,RP0               ;Selecciona Pagina 1 (Banco)
           MOVLW 0F0h                            ;PB4-7 como entradas
           MOVWF TRISB                            ;y PB0-3 como salidas
           BSF           OPCION,RBPU ;Habilita R de polarización en entradas
           BCF           STATUS,RP0               ;Vuelve a la pagina 0 (Banco)
           RETURN                                ;Retorna.

KB_Scan;Escanea el teclado
         CLRF       Tecla            ;Borra Tecla y
         INCF       Tecla,f          ;prepara Tecla para primer código.
         MOVLW 0Eh                   ;Saca 0 a la primera fila
         MOVWF PORTB                  ;de la Puerta B
         NOP                         ;Nada para estabilización de señal.
Cheq_Col BTFSS PORTB,4                ;Primera columna = 0
         GOTO     antirebotes;Sale si se ha pulsado tecla.
         INCF      Tecla,f          ;Si no tecla pulsada, incrementa tecla.
         BTFSS PORTB,5               ;Segunda columna = 0
         GOTO     antirebotes;Sale si se ha pulsado tecla.
         INCF      Tecla,f          ;Si no tecla pulsada, incrementa tecla.
         BTFSS PORTB,6               ;Tercera columna = 0
         GOTO     antirebotes;Sale si se ha pulsado tecla.
         INCF    Tecla,f            ;Si no tecla pulsada, incrementa tecla.
         BTFSS PORTB,7               ;Cuarta columna = 0
         GOTO     antirebotes;Sale si se ha pulsado tecla.
         INCF    Tecla,f            ;Si no tecla pulsada, incrementa Tecla.

Ultima_Tecla;comprueba si se a escaneado todo el teclado

          MOVLW d'17'               ;Carga W con el n£mero de Teclas + 1.
          SUBWF Tecla,w            ;y lo compara con el valor actual de Tecla.
          BTFSC   STATUS,Z          ;Si Tecla + 1 = valor actual.
          GOTO    NTeclas;No ha sido pulsada ninguna tecla.
BSF       STATUS,C      ;Pone a 1 Bit C.
RLF       PORTB,f       ;as¡ la Fila 1 pasa a 1 con la rotaci¢n a izqda.
          GOTO    Cheq_Col

NTeclas CLRF Tecla          ;Coloca variable Tecla a 0
        RETURN                        ;y regresa.

antirebotes    ;ahora se espera a que la tecla sea soltada para evitar rebotes
;y reactivaciones de tecla
;esta parte puede ser eliminada si para nuestro proyecto no es necesaria
;o es un inconveniente.

Espera1 BTFSS PORTB,4                  ;Si no se suelta la tecla FILA 1
        GOTO Espera1                  ;vuelve a esperar.
Espera2 BTFSS PORTB,5                  ;Si no se suelta la tecla FILA 2
GOTO          Espera2                ;vuelve a esperar.
Espera3 BTFSS         PORTB,6                 ;Si no se suelta la tecla FILA 3
        GOTO          Espera3                ;vuelve a esperar.
Espera4 BTFSS         PORTB,7                 ;Si no se suelta la tecla FILA 4
        GOTO          Espera4                ;vuelve a esperar.


              MOVF Tecla,w                      ;pone en w el numero contenido en la variable
              CALL T_Conv;llama a la tabla de conversion y retorna
              MOVWF Tecla                        ;con el valor en hexadecimal y lo pone en la variable.
              RETURN                              ;vuelve al programa principal que hizo la llamada.
;----------------------------------------------------------------------------------------------------------

T_Conv ADDWF           PCL,1
       RETLW           '0'                ;Tecla nº0 = 0
RETLW '1'                       ;Tecla nº1 = 1
       RETLW           '4'                ;Tecla nº2 = 4
       RETLW           '7'                ;Tecla nº3 = 7
       RETLW           'A'               ;Tecla nº4 = A
       RETLW           '2'                ;Tecla nº5 = 2
       RETLW           '5'                ;Tecla nº6 = 5
       RETLW           '8'                ;Tecla nº7 = 8
       RETLW           '0'                ;Tecla nº8 = 0
       RETLW           '3'                ;Tecla nº9 = 3
       RETLW           '6'                ;Tecla nº10 = 6
       RETLW           '9'                ;Tecla nº11 = 9
       RETLW           'B'                ;Tecla nº12 = B
       RETLW           'F'                ;Tecla nº13 = F
       RETLW           'E'                ;Tecla nº14 = E
       RETLW           'D'                 ;Tecla nº15 = D
       RETLW           'C'                 ;Tecla nº16 = C

Más contenido relacionado

La actualidad más candente

Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Luis Zurita
 
Contadores a y s síncronos
Contadores a y s síncronosContadores a y s síncronos
Contadores a y s síncronos
Diego Ayala
 
Tipos de Osciladores
Tipos de OsciladoresTipos de Osciladores
Tipos de Osciladores
Fernando Marcos Marcos
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
Percy Julio Chambi Pacco
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
SANTIAGO PABLO ALBERTO
 
Seaparat elect pote
Seaparat elect poteSeaparat elect pote
Seaparat elect poteLuis Sanchez
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4Luis Zurita
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fetVelmuz Buzz
 
Transistores de efecto
Transistores de efectoTransistores de efecto
Transistores de efecto
ebertgabriel
 
Control digital: Retenedor de orden cero y uno
Control digital: Retenedor de orden cero y uno Control digital: Retenedor de orden cero y uno
Control digital: Retenedor de orden cero y uno
SANTIAGO PABLO ALBERTO
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
Abril Bello
 
Generar retardos-para-pic-en-mplab
Generar retardos-para-pic-en-mplabGenerar retardos-para-pic-en-mplab
Generar retardos-para-pic-en-mplab
Yeni Ochoa
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso
guelo
 
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdfPLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
SANTIAGO PABLO ALBERTO
 
Configuracion de multivibradores
Configuracion de multivibradoresConfiguracion de multivibradores
Configuracion de multivibradores
Cristian Peña
 

La actualidad más candente (20)

Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 
Contadores a y s síncronos
Contadores a y s síncronosContadores a y s síncronos
Contadores a y s síncronos
 
Tipos de Osciladores
Tipos de OsciladoresTipos de Osciladores
Tipos de Osciladores
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Timer0 PIC16F84A
 
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
Electrónica digital: Tema 3 Lógica secuencial, Registros de desplazamiento y ...
 
Seaparat elect pote
Seaparat elect poteSeaparat elect pote
Seaparat elect pote
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Electronica analisis a pequeña señal fet
Electronica  analisis a pequeña señal fetElectronica  analisis a pequeña señal fet
Electronica analisis a pequeña señal fet
 
Contador de decadas
Contador de decadasContador de decadas
Contador de decadas
 
Transistores de efecto
Transistores de efectoTransistores de efecto
Transistores de efecto
 
Control digital: Retenedor de orden cero y uno
Control digital: Retenedor de orden cero y uno Control digital: Retenedor de orden cero y uno
Control digital: Retenedor de orden cero y uno
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
 
Transistores
TransistoresTransistores
Transistores
 
Generar retardos-para-pic-en-mplab
Generar retardos-para-pic-en-mplabGenerar retardos-para-pic-en-mplab
Generar retardos-para-pic-en-mplab
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso
 
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdfPLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
PLC y Electroneumática: Automatismos Industriales José Roldan Viloria.pdf
 
Configuracion de multivibradores
Configuracion de multivibradoresConfiguracion de multivibradores
Configuracion de multivibradores
 

Similar a Manejo de teclado 4x4 con pic 16 f84a

Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
Cristian Ortiz Gómez
 
Microcontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfMicrocontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdf
Edwin4321
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
Luis Zurita
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
Raphael Raphael
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupcionesLuis Zurita
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
Jair BG
 
Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E Interrupcion
Luis Zurita
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
marco calderon layme
 
Manejo de Puertos PIC
Manejo de Puertos PICManejo de Puertos PIC
Manejo de Puertos PIC
Sawy G
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadoresDavid Narváez
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
Victor Fernando Monroy Dipp
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
Victor Fernando Monroy Dipp
 

Similar a Manejo de teclado 4x4 con pic 16 f84a (20)

Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
Microcontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfMicrocontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdf
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
Tarea final
Tarea finalTarea final
Tarea final
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E Interrupcion
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
Manejo de Puertos PIC
Manejo de Puertos PICManejo de Puertos PIC
Manejo de Puertos PIC
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadores
 
Proyectos pic 2008
Proyectos pic  2008Proyectos pic  2008
Proyectos pic 2008
 
Semaforos
SemaforosSemaforos
Semaforos
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 

Último

Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 

Último (20)

Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 

Manejo de teclado 4x4 con pic 16 f84a

  • 1. MANEJO DE TECLADO 4x4 CON PIC 16F84A -------------------------------------------------------------------------------------------------------------- ----------------------------------------- Un teclado matricial esta constituido por una matriz de pulsadores dispuestos en columnas y filas, cada pulsador se conecta a una fila y a una columna, el diagrama del teclado y la forma de conectar el teclado al pic se muestra en la figura: Como se ve en la figura las filas del teclado se conectan a las líneas RB0,RB1,RB2,RB3 configuradas como salidas mientras que las columnas se conectan a las líneas RB4,RB5,RB6,RB7 configuradas como entradas . Para detectar si hay una tecla pulsada se aplica el siguiente procedimiento: Se hace un barrido por cada una de las filas, inicialmente se aplica a la primera fila un nivel bajo y a las otras tres un nivel alto si en este instante se pulsa alguna tecla de esta fila entonces el nivel bajo aparecerá en la columna en la que se encontraba la tecla, seguidamente se pasa a verificar la segunda fila enviando un nivel bajo a esta y a las otras un nivel alto y así sucesivamente. Verificando los niveles de los terminales de las columnas se podrá deducir si hay alguna tecla pulsada en la fila donde se esta aplicando el nivel bajo, considerando que si no hay alguna tecla pulsada en las entradas del PIC RB4, RB5, RB6, RB7 se encontrara un nivel alto. Para realizar el programa en el pic debemos tener en cuenta que se deben de habilitar las resistencias internas del pic. A continuación la librería para el control del teclado 4x4: ;************************************************************************* *****************
  • 2. ;Librería para el control de un teclado matricial 4x4 ; que fue publicado en el libro titulado: "Microcontrolador PIC16F84A ;"del ;autor: ENRIQUE PALACIOS, FERNANDO REMIRO, LUCAS LOPEZ ;TECLADO.inc ;************************************************************************* ***************** cblock TECL_TECLAORDEN endc TECL_ULTIMATECLA equ d'15' TECLADO_LEEHEX call TECLADO_LEEORDENTECLA btfss STATUS,C goto TECL_FINLEEHEX call TECL_CONVIERTEORDENENHEX bsf STATUS,C TECL_FINLEEHEX return TECL_CONVIERTEORDENENHEX addwf PCL,F DT 1h,2h,3h,0Fh DT 4h,5h,6h,0Eh DT 7h,8h,9h,0Dh DT 0Ah,0h,0Bh,0Ch TECLADO_FINTABLEHEX if(TECLADO_FINTABLEHEX> 0xFF) ERROR "Atencion:la tabla a superado el tamño de la pagina de los " MESSG "Primeros 256bytes de memoria rom, no funconara correctamente " endif TECLADO_INICIALIZA bsf STATUS,RP0 movlw b'11110000' movwf PORTB bcf OPTION_REG,7 bcf STATUS,RP0 call TECLADO_ESPERADEJEPULSAR return TECLADO_COMPROBACION EQU b'11110000' TECLADO_ESPERADEJEPULSAR movlw TECLADO_COMPROBACION movwf PORTB TECLADO_SIGUEESPERANDO call RETARDO_20MS movf PORTB,W sublw TECLADO_COMPROBACION btfss STATUS,Z
  • 3. goto TECLADO_SIGUEESPERANDO return TECLADO_LEEORDENTECLA clrf TECL_TECLAORDEN movlw b'11111110' TECL_CHEQUEAFILA movwf PORTB TECL_COMLUMNA1 btfss PORTB,4 goto TECL_GUARDARVALOR incf TECL_TECLAORDEN,F TECL_COMLUMNA2 btfss PORTB,5 goto TECL_GUARDARVALOR incf TECL_TECLAORDEN,F TECL_COMLUMNA3 btfss PORTB,6 goto TECL_GUARDARVALOR incf TECL_TECLAORDEN,F TECL_COMLUMNA4 btfss PORTB,7 goto TECL_GUARDARVALOR incf TECL_TECLAORDEN,F TECLA_TERMINARCOLUMNAS movlw TECL_ULTIMATECLA subwf TECL_TECLAORDEN,W btfsc STATUS,C goto TECL_NOPULSADA bsf STATUS,C rlf PORTB,W goto TECL_CHEQUEAFILA TECL_NOPULSADA bcf STATUS,C goto TECL_FINTECLADOLEE TECL_GUARDARVALOR movf TECL_TECLAORDEN,W bsf STATUS,C TECL_FINTECLADOLEE return
  • 4. Esta librería posee las siguientes subrutinas: TECLADO_INICILIZA; que se encarga de configurar las líneas del puerto B para el uso del teclado . TECLADO_ESPERADEJEPULSAR; se mantiene en esta subrutina hasta que se deje de pulsar un tecla. TECLADO_LEEORDENTECLA; Lee el teclado obteniendo en el registro W el orden de la tecla pulsada. TECLADO_LEEHEX; Lee el teclado obteniendo en el registro W el valor hexadecimal de la tecla pulsada Se debe distinguir entre el orden de una tecla con su respectivo valor; el orden hace referencia a la posición de la tecla, este será el mismo para cualquier teclado; mientras que el valor hace referencia a la serigrafía del teclado que no es el mismo para todos. Se activara una interrupción al encontrarse una tecla presinada. APLICACION.- Desarrollar un programa en el cual se visualice en un display el valor de la tecla pulsada. Para lo cual haremos uso de las librerías : TECLADO.inc, RETARDOS.inc
  • 5. La conexión del teclado, display, pic se muestran en la figura, se hace uso de el integrado 7448 para decodificar las salidas del puerto A, el programa es el siguiente: ;************************************************************************* ** ;AUTOR:CARLOS ALBERTO YACO TINCUSI ; programa que visualiza en un display de catodocomu el valor de la tecla pulsada en un teclado 4x4 ;fecha : 28-05-07 ;************************************************************************* ** list p=16f84a include<P16F84A.inc> cblock 0x0C contador endc org 0 goto inicio org 4 gotointerupcion inicio bsf STATUS,RP0 movlw b'00000000' movwf PORTA movlw b'11110000' movlw PORTB bcf STATUS,RP0 call TECLADO_INICIALIZA movlw b'10001000' movwf INTCON principal sleep goto principal interupcion call TECLADO_LEEHEX movwf contador movlw d'10' subwf contador,0 btfsc STATUS,C clrf contador movfw contador movwf PORTA call TECLADO_ESPERADEJEPULSAR bcf INTCON,0 bsf INTCON,7 goto principal
  • 6. include<RETARDOS.inc> include<TECLADO.inc> end Al inicio del programa se hace la configuración del puerto A, así como se habilita la interrupción por RBI, luego el pic se encuentra en un estado de bajo consumo (splep) hasta el momento en que una tecla sea pulsada lo cual produce una interrupción entonces llamamos a la subrutina TECLADO_LEEHEX la cual nos devuelve el valor de la tecla pulsada, mostrando este valor por el PUERTO A, para después volver a habilitar la interrupción por RBI, solo se muestran valores del 0-9 las demás teclas tales como A,B,C,D,E,F nos dan el valor de cero. Una imagen del resultado final: La librería TECLADO.inc la pueden descargar de aquí. El programa ejemplo también lo pueden descargar de aquí Espero que les sirva de algo
  • 7. CARLOS YACO ELECTRONICA BASICA Programa clase LIST P = PIC16F84A INCLUDE "P16F84A.INC" INCLUDE "MACRO.INC" CBLOCK 0X0C TECLA ENDC ORG 0X00 KB_PORT BANK1 MOVLW B'11110000' MOVWF TRISB BCF OPTION_REG,NOT_RBPU BANK0 RETURN
  • 8. KB_SCAN CLRF TECLA INCF TECLA,F MOVLW B'00001110' MOVWF PORTB OTRO NOP BTFSC PORTB,4 GOTO S1 RETURN S1 INCF TECLA,F BTFSC PORTB,5 GOTO S2 RETURN S2 INCF TECLA,F BTFSC PORTB,6 GOTO S3 RETURN S3 INCF TECLA,F
  • 9. BTFSC PORTB,7 GOTO S4 RETURN S4 INCF TECLA MOVLW .17 XORWF TECLA,W BTFSS STATUS,Z GOTO S5 MOVLW 0X80 MOVWF TECLA RETURN S5 BSF STATUS,C RLF PORTB,F GOTO OTRO
  • 10. LIST P = PIC16F84A INCLUDE "P16F84A.INC" INCLUDE "MACRO.INC" CBLOCK 0X0C TECLA ENDC KB_Port;Inicializa la puerta B para las entradas del ;teclado. Programa RB0-3 como salidas y RB4-7 ;entradas con las resistencias de polarización ;habilitadas------------------------------------------- BSF STATUS,RP0 ;Selecciona Pagina 1 (Banco) MOVLW 0F0h ;PB4-7 como entradas MOVWF TRISB ;y PB0-3 como salidas BSF OPCION,RBPU ;Habilita R de polarización en entradas BCF STATUS,RP0 ;Vuelve a la pagina 0 (Banco) RETURN ;Retorna. KB_Scan;Escanea el teclado CLRF Tecla ;Borra Tecla y INCF Tecla,f ;prepara Tecla para primer código. MOVLW 0Eh ;Saca 0 a la primera fila MOVWF PORTB ;de la Puerta B NOP ;Nada para estabilización de señal. Cheq_Col BTFSS PORTB,4 ;Primera columna = 0 GOTO antirebotes;Sale si se ha pulsado tecla. INCF Tecla,f ;Si no tecla pulsada, incrementa tecla. BTFSS PORTB,5 ;Segunda columna = 0 GOTO antirebotes;Sale si se ha pulsado tecla. INCF Tecla,f ;Si no tecla pulsada, incrementa tecla. BTFSS PORTB,6 ;Tercera columna = 0 GOTO antirebotes;Sale si se ha pulsado tecla. INCF Tecla,f ;Si no tecla pulsada, incrementa tecla. BTFSS PORTB,7 ;Cuarta columna = 0 GOTO antirebotes;Sale si se ha pulsado tecla. INCF Tecla,f ;Si no tecla pulsada, incrementa Tecla. Ultima_Tecla;comprueba si se a escaneado todo el teclado MOVLW d'17' ;Carga W con el n£mero de Teclas + 1. SUBWF Tecla,w ;y lo compara con el valor actual de Tecla. BTFSC STATUS,Z ;Si Tecla + 1 = valor actual. GOTO NTeclas;No ha sido pulsada ninguna tecla. BSF STATUS,C ;Pone a 1 Bit C. RLF PORTB,f ;as¡ la Fila 1 pasa a 1 con la rotaci¢n a izqda. GOTO Cheq_Col NTeclas CLRF Tecla ;Coloca variable Tecla a 0 RETURN ;y regresa. antirebotes ;ahora se espera a que la tecla sea soltada para evitar rebotes ;y reactivaciones de tecla ;esta parte puede ser eliminada si para nuestro proyecto no es necesaria ;o es un inconveniente. Espera1 BTFSS PORTB,4 ;Si no se suelta la tecla FILA 1 GOTO Espera1 ;vuelve a esperar. Espera2 BTFSS PORTB,5 ;Si no se suelta la tecla FILA 2
  • 11. GOTO Espera2 ;vuelve a esperar. Espera3 BTFSS PORTB,6 ;Si no se suelta la tecla FILA 3 GOTO Espera3 ;vuelve a esperar. Espera4 BTFSS PORTB,7 ;Si no se suelta la tecla FILA 4 GOTO Espera4 ;vuelve a esperar. MOVF Tecla,w ;pone en w el numero contenido en la variable CALL T_Conv;llama a la tabla de conversion y retorna MOVWF Tecla ;con el valor en hexadecimal y lo pone en la variable. RETURN ;vuelve al programa principal que hizo la llamada. ;---------------------------------------------------------------------------------------------------------- T_Conv ADDWF PCL,1 RETLW '0' ;Tecla nº0 = 0 RETLW '1' ;Tecla nº1 = 1 RETLW '4' ;Tecla nº2 = 4 RETLW '7' ;Tecla nº3 = 7 RETLW 'A' ;Tecla nº4 = A RETLW '2' ;Tecla nº5 = 2 RETLW '5' ;Tecla nº6 = 5 RETLW '8' ;Tecla nº7 = 8 RETLW '0' ;Tecla nº8 = 0 RETLW '3' ;Tecla nº9 = 3 RETLW '6' ;Tecla nº10 = 6 RETLW '9' ;Tecla nº11 = 9 RETLW 'B' ;Tecla nº12 = B RETLW 'F' ;Tecla nº13 = F RETLW 'E' ;Tecla nº14 = E RETLW 'D' ;Tecla nº15 = D RETLW 'C' ;Tecla nº16 = C