TECLADO MATRICIAL 4X4
INDICE



I- Funcionamiento del sistema

II- Diagrama de flujo

III- Código comentado

IV- Herramientas utilizadas

V- Componentes utilizados

VI- Video del funcionamiento
FUNCIONAMIENTO DEL SISTEMA

 Teclado matricial de 4x4 cuyas filas son salidas y las columnas
entradas.
 (RA0...RA3) pines de salida del teclado.
 (RB0...RB3) pines de entrada del teclado. Y (RB4...RB7) pines de
salida al decodificador
 Lineas de entrada permanecen a un nivel lógico alto.
 Envía por las lineas de salida solo un cero por vez.
 Al oprimir una tecla, un nivel lógico bajo se reflejará en el pin
correspondiente de la linea de entrada.
 Como resultado del programa, un valor entre 0 y 15 queda
almacenado en un registro.
 El valor se muestra en un display de 7 segmentos despues de ser
decodificado.
 El proceso se realiza a gran velocidad, oscilador de 4MHz.
 Para evitar rebotes de la tecla pulsada se utiliza un retardo en la
lectura del teclado de 100ms.
DIAGRAMA DE FLUJO DEL
         PROGRAMA
                                   LECTURA
                                  DEL TECLADO



                                  Colocar cero en
                                   La primera fila
              Desplazar
             Cero en filas
   SÍ
 El cero                          Leer columnas
está en la
 cuarta      NO
   fila
    ?
                                      Alguna
                                   Columna está
                             NO
                                     En cero
                                         ?


                                      SÍ
                                      Rutina de
                                   Tratamiento de
                                        Tecla



                                    TERMINAR
CODIGO COMENTADO
          List      p=16F84      permite al compilador interpretar el resto del programa                      nop
          include   “P16F84.INC” permite al compilador interpretar el resto del programa                      retlw   .2         tercera columna
                                                                                                              nop
          pc        equ 02h        contador de programa                                                       nop
                                                                                                              nop
          status    equ 03h        registro de estados
                                                                                                              retlw   .3         cuarta columna
          ptoa      equ 05h        el puerto A está en la dirección 05 de la RAM
          ptob      equ 06h        el puerto B está en la dirección 06 de la RAM                     inicio   bsf     status,5   se ubica en el segundo banco de RAM
          tecla     equ 0ch        contiene el valor de la tecla oprimida                                     movlw   0f0h       se carga el registro W con 0f0h
          loops     equ 0dh        utilizado en retardos (milisegundos)                                       movwf   trisa      se programa el puerto A como salidas
          loops2    equ 0eh        utilizado en retardos                                                      movlw   0fh        se carga el registro W con 0fh
          rota      equ 0fh        registro que rota para enviar unos a las filas                             movwf   trisb      se programa el puerto B como entradas salidas
          filas     equ 10h        contiene el nº de la fila a probar                                         bcf     status,5   se ubica en el primer banco de RAM
          trisa     equ 85h        registro de configuración del puerto A                                     movlw   00h        para empezar se muestra un 0 en el display
          trisb     equ 86h        registro de configuración del puerto B                                     movwf   tecla
          z         equ 02h        bandera de cero del registro de estados
                                                                                                     ciclo    swapf   tecla,w    Intercambia 4 bits altos y bajos y quedan en W
          c         equ 00h        bandera de carry del registro de estados
                                                                                                              movwf   ptob       pasa wl valor de W al puerto B (display)
          w         equ 00h        indica que el ersultado se guarda en W                                     call    retardo    llamada a retardo

reset     org       0              el vector de reset es la dirección 00                             escan    clrf    filas      borra el registro filas
          goto      inicio         se salta al inicio del programa                                            movlw   b'1110'    se prepara para enviar ceros a las filas
          org       0x05           el programa empieza en la dirección 5                                      movwf   rota

retardo   movlw     .100           subrutina de retardo de 100milisegundos                           probar   movf    rota,w     envía el dato a las filas
          movwf     loops          el registro de loops contiene el nº de milisegundos del retardo            movwf   ptoa
top2      movlw     .110                                                                                      nop                tiempo para estabilidad de las lineas
          movwf     loops2
                                                                                                     leer     movf    ptob,w     leer las columnas conectadas al puerto B
top       nop
                                                                                                              andlw   0fh        elimina la parte alta del byte leido
          nop                                                                                                 xorlw   0fh        onvierte el dato para ver si hay algún cero
          nop                                                                                                 btfss   status,z   pregunta si el resultado es cero (alguna tecla)
          nop                                                                                                 goto    salir      si hay tecla, mostrar en display
          nop                                                                                                 btfss   rota,3     consulta si ya van 4 rotaciones
          nop                                                                                                 goto    escan      si terminó, vuelve a empezar el escan del teclado
          decfsz    loops2         pregunta si terminó 1 ms                                                   bsf     status,z   coloca bit de carry en 1
          goto      top                                                                                               rlfrota    para rotar el 0 que va a ir hacia las filas
          decfsz    loops          pregunta si termina el retardo                                             movlw   .4         carga W con 4 para sumarlo al valor de las filas
                                                                                                              addwf   filas,1
          goto      top2
                                                                                                              goto    probar     va a hacer la proxima prueba con el 0 rotado
          retlw     .0
                                                                                                     salir    call    tabla      para obtener el valor de la columna
tabla     addwf     pc             sumar W a PC                                                               addwf   filas,w    sumar columna y filas para obtener el dato real
          nop                                                                                                 movwf   tecla      muestra el dato en display
          retlw     .0             primera columna                                                            goto    ciclo
          retlw     .1             segunda columna                                                            end
HERRAMIENTAS UTILIZADAS




Mplab para el código del PIC

Proteus para la simulación del proyecto

Power point para la presentación

Excel para comentar el código
COMPONENTES UTILIZADOS


Display de 7 segmentos de cátodo común



PIC16F84
Teclado 4x4




Decodificador
VIDEO DE FUNCIONAMIENTO

Power

  • 1.
  • 2.
    INDICE I- Funcionamiento delsistema II- Diagrama de flujo III- Código comentado IV- Herramientas utilizadas V- Componentes utilizados VI- Video del funcionamiento
  • 3.
    FUNCIONAMIENTO DEL SISTEMA Teclado matricial de 4x4 cuyas filas son salidas y las columnas entradas. (RA0...RA3) pines de salida del teclado. (RB0...RB3) pines de entrada del teclado. Y (RB4...RB7) pines de salida al decodificador Lineas de entrada permanecen a un nivel lógico alto. Envía por las lineas de salida solo un cero por vez. Al oprimir una tecla, un nivel lógico bajo se reflejará en el pin correspondiente de la linea de entrada. Como resultado del programa, un valor entre 0 y 15 queda almacenado en un registro. El valor se muestra en un display de 7 segmentos despues de ser decodificado. El proceso se realiza a gran velocidad, oscilador de 4MHz. Para evitar rebotes de la tecla pulsada se utiliza un retardo en la lectura del teclado de 100ms.
  • 4.
    DIAGRAMA DE FLUJODEL PROGRAMA LECTURA DEL TECLADO Colocar cero en La primera fila Desplazar Cero en filas SÍ El cero Leer columnas está en la cuarta NO fila ? Alguna Columna está NO En cero ? SÍ Rutina de Tratamiento de Tecla TERMINAR
  • 5.
    CODIGO COMENTADO List p=16F84 permite al compilador interpretar el resto del programa nop include “P16F84.INC” permite al compilador interpretar el resto del programa retlw .2 tercera columna nop pc equ 02h contador de programa nop nop status equ 03h registro de estados retlw .3 cuarta columna ptoa equ 05h el puerto A está en la dirección 05 de la RAM ptob equ 06h el puerto B está en la dirección 06 de la RAM inicio bsf status,5 se ubica en el segundo banco de RAM tecla equ 0ch contiene el valor de la tecla oprimida movlw 0f0h se carga el registro W con 0f0h loops equ 0dh utilizado en retardos (milisegundos) movwf trisa se programa el puerto A como salidas loops2 equ 0eh utilizado en retardos movlw 0fh se carga el registro W con 0fh rota equ 0fh registro que rota para enviar unos a las filas movwf trisb se programa el puerto B como entradas salidas filas equ 10h contiene el nº de la fila a probar bcf status,5 se ubica en el primer banco de RAM trisa equ 85h registro de configuración del puerto A movlw 00h para empezar se muestra un 0 en el display trisb equ 86h registro de configuración del puerto B movwf tecla z equ 02h bandera de cero del registro de estados ciclo swapf tecla,w Intercambia 4 bits altos y bajos y quedan en W c equ 00h bandera de carry del registro de estados movwf ptob pasa wl valor de W al puerto B (display) w equ 00h indica que el ersultado se guarda en W call retardo llamada a retardo reset org 0 el vector de reset es la dirección 00 escan clrf filas borra el registro filas goto inicio se salta al inicio del programa movlw b'1110' se prepara para enviar ceros a las filas org 0x05 el programa empieza en la dirección 5 movwf rota retardo movlw .100 subrutina de retardo de 100milisegundos probar movf rota,w envía el dato a las filas movwf loops el registro de loops contiene el nº de milisegundos del retardo movwf ptoa top2 movlw .110 nop tiempo para estabilidad de las lineas movwf loops2 leer movf ptob,w leer las columnas conectadas al puerto B top nop andlw 0fh elimina la parte alta del byte leido nop xorlw 0fh onvierte el dato para ver si hay algún cero nop btfss status,z pregunta si el resultado es cero (alguna tecla) nop goto salir si hay tecla, mostrar en display nop btfss rota,3 consulta si ya van 4 rotaciones nop goto escan si terminó, vuelve a empezar el escan del teclado decfsz loops2 pregunta si terminó 1 ms bsf status,z coloca bit de carry en 1 goto top rlfrota para rotar el 0 que va a ir hacia las filas decfsz loops pregunta si termina el retardo movlw .4 carga W con 4 para sumarlo al valor de las filas addwf filas,1 goto top2 goto probar va a hacer la proxima prueba con el 0 rotado retlw .0 salir call tabla para obtener el valor de la columna tabla addwf pc sumar W a PC addwf filas,w sumar columna y filas para obtener el dato real nop movwf tecla muestra el dato en display retlw .0 primera columna goto ciclo retlw .1 segunda columna end
  • 6.
    HERRAMIENTAS UTILIZADAS Mplab parael código del PIC Proteus para la simulación del proyecto Power point para la presentación Excel para comentar el código
  • 7.
    COMPONENTES UTILIZADOS Display de7 segmentos de cátodo común PIC16F84
  • 8.
  • 9.