Vous êtes sur la page 1sur 11

Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI


Pulsadores y Teclados
ATE-Universidad de Oviedo

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

Microcontroladores PIC

ATE-UNIOVI MINI - PULSADORES ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI ATE-UNIOVI


PULSADORES

ATE-UNIOVI
CONEXIN TIPICA DE UN PULSADOR DE RESET

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
Pulsadores y Teclados
ATE-Universidad de Oviedo

Microcontroladores PIC

ATE-UNIOVI

Pulsadores y Teclados

Muy utilizados para introducir informacin al microcontrolador.


Los hay de varios tipos: de lmina flexible, de efecto Hall, de efecto inductivo, de efecto capacitivo. Los ms comunes son los de lmina flexible.

ATE-UNIOVI

ATE-UNIOVI

El problema de los ATE-UNIOVI rebotes. pulsador, se producen oscilaciones ATE-UNIOVI Debido al efecto muelle del
en la seal tanto al pulsar como al soltar la tecla. u1
+Vcc

ATE-UNIOVI
t

SOLUCIONES SOLUCIONES Hw: Red R-C Hw: Red R-C Biestables Biestables Sw: Espera de un tiempo un tiempo suficiente suficiente
3

IDEAL
u ATE-UNIOVI
1

u1

ATE-UNIOVI Sw: Espera de

REAL

ATE-UNIOVI t
ATE-Universidad de Oviedo

Pulsadores y Teclados

Microcontroladores PIC

TECLADOS LINEALES IDENTIFICACION DE TECLA ATE-UNIOVI ATE-UNIOVI PULSADA


Vcc RESISTENCIAS PULL-UP

RB7 RB6

1 1 1

F0 F1

ATE-UNIOVIlineal 4x1, la pulsacin de En un teclado

PIC
RB5 RB4

ATE-UNIOVI
1

Vcc

RESISTENCIAS PULL-UP

ATE-UNIOVI PIC
RB7 RB6 RB5 RB4

una tecla provocar un cambio de valor en un bit del PORTB (RB5 en la F3 figura). Si RBIEATE-UNIOVI y GIE estn a 1, este C0 cambio provoca la entrada de la rutina de interrupcin en la que se realizar la ATE-UNIOVI lectura del PORTB. El bit del nibble alto de PORTB que est a cero F0 identifica claramente la tecla pulsada.
F2 F1 F2 F3

1 0

ATE-UNIOVI

ATE-UNIOVI
C0

Pulsadores y Teclados

ATE-Universidad de Oviedo

Microcontroladores PIC

ATE-UNIOVI

Teclados lineales

Muy sencillos, pero no permiten disponer de muchas teclas.


+Vcc

ATE-UNIOVI

ATE-UNIOVI
E0
1

ATE-UNIOVI

De este modo, cuando el microcontrolador detecte un 0 al final de la lnea, se sabr que se ha pulsado una tecla y, adems, se sabr cul ha sido.

ATE-UNIOVI

E ATE-UNIOVI

ATE-UNIOVI

En

ATE-UNIOVI

ATE-UNIOVI
Pulsadores y Teclados
ATE-Universidad de Oviedo

Basta con que el Basta con que el programa compruebe programa compruebe peridicamente el peridicamente el estado de las entradas estado de las entradas aalas que se ha las que se ha conectado el teclado. conectado el teclado.
5

Microcontroladores PIC

ATE-UNIOVI

TECLADOS MATRICIALES

ATE-UNIOVI
2 5 8 3 6 9 F E D

ATE-UNIOVI
F1 F0 C3

F3 F2

1 4 7 A

ATE-UNIOVI
F0 F1 F2 Caractersticas tcnicas tpicas Valor nom. de los contactos 24V d.c. 50mA F0 Resistencia de contacto<500 Tensin de ruptura 250V a.c. Tiempo de rebote<10ms. F1 Vida til mecnica 106 operaciones Temperatura F2 en funcionamiento de -20C a +55C en almacenamientode -20C a +60C F3 C0

C2 C1 C0

0 B C ATE-UNIOVI

ATE-UNIOVI
1 4 7

ATE-UNIOVI
F3

ATE-UNIOVI
8 9 D 0 B C

ATE-UNIOVI
ATE-Universidad de Oviedo

C0

C1

C2

C3

Pulsadores y Teclados

Microcontroladores PIC

ATE-UNIOVI

TECLADO MATRICIAL QUE SE VA A EMPLEAR ATE-UNIOVI

ATE-UNIOVIC0 ATE-UNIOVI C
F1

C1
8 5 2 0

C2
9 6 3 B

C3
F E

F0

F0 F1 F2

7 4 1 A

ATE-UNIOVI
D C

B A

F2 F3

ATE-UNIOVI
F3
C0 C1 C2 C3

ATE-UNIOVI
1

ATE-UNIOVI
Conector 1 2 3 4 A B C D

ATE-UNIOVI
Pulsadores y Teclados
ATE-Universidad de Oviedo

Microcontroladores PIC

ATE-UNIOVI

Teclados matriciales
+Vcc

ATE-UNIOVI

Varias teclas controladas con un nmero reducido de puertos E/S.

ATE-UNIOVI La pulsacin de una ATE-UNIOVI S


F2

SF1 0 0 SF3 0 SF4 0 EC1 1


C2

ATE-UNIOVI

ATE-UNIOVI E 1
EC3 1 0 EC4 1

ATE-UNIOVI

Pulsadores y Teclados

tecla se pone de manifiesto en las entradas del microcontrolador conectadas al teclado. En este ejemplo, se sabe En este ejemplo, se sabe que se ha pulsado una que se ha pulsado una tecla de la tercera tecla de la tercera columna, pero no se sabe columna, pero no se sabe cul. cul. Se necesita desarrollar Se necesita desarrollar algoritmos que permitan algoritmos que permitan determinar cul es la determinar cul es la tecla que se ha pulsada. 8 ATE-Universidad de Oviedo tecla que se ha pulsada.

ATE-UNIOVI

ATE-UNIOVI

Microcontroladores PIC

ATE-UNIOVI

Teclados matriciales

ATE-UNIOVI

Fase 1: Detectar que se ha pulsado una tecla Interrupcin

ATE-UNIOVI

Muestreo ATE-UNIOVIperidico Fase 2: Identificar qu tecla se ha pulsado

ATE-UNIOVI

Tcnicas de identificacin de la tecla pulsada (fila y columna): Muestreo ATE-UNIOVI secuencial Inversin de lnea

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

Microcontroladores PIC

ATE-UNIOVI ATE-UNIOVI Una vez que se ha detectado que se ha pulsado una tecla, se
cambia el valor de las salidas en el microcontrolador de modo que slo una de ellas valga 0 en cada instante. La combinacin que d lugar a un 0 en alguna de las entradas identificar la tecla que se ha pulsado. SF1 SF2 SF3 SF4 EC1 EC2 EC3 EC4
+Vcc

Mtodo del Muestreo secuencial.

ATE-UNIOVI
0 1 1 0

ATE-UNIOVI
SF1 SF2 SF3 SF4 EC1 EC3 EC4 EC2 1 0 1 1 1 1 0 1

1 1

ATE-UNIOVI
1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1

ATE-UNIOVI0 1 1
1 1 1

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

Es un mtodo sencillo de Es un mtodo sencillo de implementar, pero tardar ms oo implementar, pero tardar ms menos en encontrar la tecla pulsada menos en encontrar la tecla pulsada en funcin de la posicin que ocupe en funcin de la posicin que ocupe sta. sta.

ATE-UNIOVI

10

Microcontroladores PIC

ATE-UNIOVI que hay una tecla pulsada, se almacena el valor ATE-UNIOVI Tras detectar
que hay en las entradas, se invierten las lneas (las que eran entradas pasan a ser salidas y viceversa) y se saca por las nuevas salidas la combinacin almacenada.

Mtodo de la Inversin de lnea.

ATE-UNIOVI
+Vcc

ATE-UNIOVI
EF1 1 EF2 0 EF3 1 EF4 1 SC1 1 SC2 1 SC3 0 SC4 1

Esto dar lugar a que en las nuevas entradas slo aparezca un cero en la fila a la que pertenece la tecla pulsada.

ATE-UNIOVI

ATE-UNIOVI
Este mtodo es ms Este mtodo es ms rpido que el rpido que el anterior yytarda lo anterior tarda lo mismo en mismo en identificar identificar cualquier tecla. cualquier tecla.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

11

Microcontroladores PIC

ATE-UNIOVIlos microcontroladores PIC estATE-UNIOVI El puerto B de especialmente


pensado para conectar un teclado matricial de 44.
+Vcc ATE-UNIOVI

Conexin de teclados matriciales en los PIC.

pull-up resistors

Comentario Comentario

RB0 0 RB0 ATE-UNIOVI F2 [S] RB1 0 RB1 RB2 0 RB2 RB3 0 RB3 RB4 1 RB4 RB5 1 RB5 RB7 1 RB7
F3 F4

F1

ATE-UNIOVI

**La posibilidad de La posibilidad de habilitar resistencias de habilitar resistencias de pull-up reduce el nmero pull-up reduce el nmero de componentes de componentes externos. externos. **La existencia de una La existencia de una interrupcin asociada aa interrupcin asociada cambios en los bits cambios en los bits RB<4:7> avisa de que se RB<4:7> avisa de que se ha pulsado una tecla. ha pulsado una tecla.

ATE-UNIOVI

C1

C2 [E] ATE-UNIOVI RB6 1 RB6 C3 C4

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

12

Microcontroladores PIC

ATE-UNIOVI

ADVERTENCIA IMPORTANTE

El Puerto B es el ms indicado para conectar un teclado matricial 44 debido a la capacidad de habilitar resistencias de pull-up y de generar una interrupcin cada vez que cambia el estado de alguno de sus cuatro bits ms altos RB<4:7>.

ATE-UNIOVI

ATE-UNIOVI

Por ello se usa preferentemente este puerto para conectar estos teclados.

ATE-UNIOVI en cuenta que el debugger ICD2 hace uso de dos ATE-UNIOVI Sin embargo debe tenerse
pines del Puerto B para llevar a cabo tareas de emulacin (RB7 y RB6) y por tanto no se podrn manejar directamente con el microcontrolador Esto se traducir en que, durante la emulacin del sistema, algunas teclas no funcionarn segn lo esperado: las filas o columnas conectadas a las lneas RB6 y RB7 del PORTB pueden tener niveles que dependen del ICD2 y no del teclado
Una vez grabado el programa definitivo en el microcontrolador, todas las lneas estarn operativas.

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

13

Microcontroladores PIC

Activacin de la interrupcin para deteccin de la pulsacin de una tecla ATE-UNIOVI ATE-UNIOVI Se activan las resistencias de pull-up de las entradas del PORTB Se definen las 4 lneas ms altas del PORTB (RB7 a RB4) como entradas, en reposo seran ledas como 1 sacan sendos niveles ATE-UNIOVIlgicos 0 en las salidas para distinguir del estado de ATE-UNIOVI reposo
+Vcc

ATE-UNIOVI

Se definen las 4 lneas ms bajas del PORTB (RB3 a RB0) como salidas y se

Se activan las interrupciones por cambio ATE-UNIOVI en cualquiera de las lneas RB4 a RB7

Se pone a cero el flag de deteccin de cambio en las lneas RB7 a RB4 del PORTB y se leen las lneas del PORTB para detectar cambios desde la ltima lectura

ATE-UNIOVI

pull-upresistors

RB0 0 RB0

F0 F1 F2 F1 F2 F3 F3 F4

RB1 0 RB1 [S] [S] RB2 0 RB2 RB3 0 RB3 RB4 1 RB4 RB5 1 RB5 [E] [E] RB6 1 RB6 RB7 1 RB7

ATE-UNIOVI
C1 C3 C2 C2 C3 C1 C4 C0

ATE-UNIOVI
Pulsadores y Teclados
ATE-Universidad de Oviedo

Situacin
14

Microcontroladores PIC

EJEMPLO DE ENTRADA ATE-UNIOVI EN PROGRAMA DE TRATAMIENTO DE INTERRUPCIN ATE-UNIOVI


org 4 goto TECLA

ATE-UNIOVI
TECLA movwf swapf bcf bcf movwf movf movwf

;****************************************************************************** ;Programa de tratamiento de la interrupcin generada por cambio en PORTB, ;se producir en cada cambio de las lneas RB4 a RB7 ;****************************************************************************** btfss INTCON,RBIF retfie W_tmp STATUS,W STATUS,RP0 STATUS,RP1 STATUS_tmp PCLATH,W PCLATH_tmp

ATE-UNIOVI

;Vector de interrupcion para las generadas ;por cambio en RB4 a RB7

;Si entramos aqu por otro motivo ;distinto a RBIF=1 salimos de inmediato ;Salvamos el registro W ;el registro STATUS "girado" en W ;Aseguramos el paso al banco 0 ;Guardamos en el banco 0 ;Salvamos tambin PCLATH

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI

;Espera para evitar rebotes en las teclas call NO_REBOTE

;llamamos al subprograma de ESPERA

ATE-UNIOVI

Subprograma de Espera para ATE-UNIOVI que desaparezcan rebotes


Pulsadores y Teclados
ATE-Universidad de Oviedo

15

Microcontroladores PIC

ATE-UNIOVI

Ejemplo de entrada por pulsacin de la tecla de la fila F1 y columna C2


+Vcc

ATE-UNIOVI

RB0 0 RB0

ATE-UNIOVI F0 F1
F1 F2 F2 F3 F3 F4

pull-up resistors

ATE-UNIOVIRB2 0 RB2
[S] [S] RB3 0 RB3 RB4 1 RB4 [E] [E] RB5 1 RB5 0 RB6 1 RB6

RB1 0 RB1

ATE-UNIOVI

C3 C1 ATE-UNIOVI C2 C1 C3 C0 C4

RB7 ATE-UNIOVIRB7 1

ATE-UNIOVI

La entrada en el programa de tratamiento se producir tanto cuando se pulse como cuando se libere la tecla (hay cambio en ambos casos)
Pulsadores y Teclados
ATE-Universidad de Oviedo

ATE-UNIOVI

16

Microcontroladores PIC

comprobamos ATE-UNIOVI que alguna de las lneas RB4 a RB7 est a 0 ATE-UNIOVI
IF PARA_ICD2 == 0 ;Si no se va a utilizar ICD2 se ensambla esta parte ;En la interrupcin entraremos cuando haya "cambios", tanto si se pulsa como ;si se suelta tecla, por tanto para identificar debemos de comprobar que hay alguna ;pulsada movlw 0xF0 ;Comprobamos los 4 bits mas altos xorwf PORTB,W ;si estan a uno todos, nos salimos btfsc STATUS,Z ;para ello comprobamos el bit Z de STATUS goto SALIDA ;si Z=1 es que estaban los 2 a 1 y salimos

Comprobamos que la entrada fue por pulsacin y no por liberar la tecla:

ATE-UNIOVI

ATE-UNIOVI

ELSE ;en el caso de que usemos el ICD2 se ensambla el bloque que viene a continuacin ;Para probar con el ICD2: ya que RB6 y RB7 no estn conectadas al teclado y pueden ;tener otros valores distintos movlw 0x30 andwf PORTB,W xorlw 0x30 btfsc STATUS,Z goto SALIDA

ATE-UNIOVI

ATE-UNIOVI

ATE-UNIOVI
ENDIF

;En el caso de que estemos usando RB6 y RB7 ;slo buscamos pulsaciones en RB5 y RB4 ;por ese motivo situamos una mscara para ;esos dos bits ;y si estn los dos a '1', nos salimos

ATE-UNIOVI

;cierre de la directiva de ensamblado condicional

Sentencia de ensamblado condicional y definimos PARA_ICD2 a 0 distinto de 0 en la cabecera en funcin de que grabemos el cdigo final o usemos el ICD2
Pulsadores y Teclados
ATE-Universidad de Oviedo

ATE-UNIOVI

17

Microcontroladores PIC

Vamos ATE-UNIOVI a utilizar la inversin de lnea: ATE-UNIOVI

pull-up resistors

ATE-UNIOVI
Cambiamos el sentido de las lneas del PORTB y sacamos por las nuevas salidas lo que lemos con anterioridad

+Vcc

RB1 0 ATE-UNIOVI [E] F2


F1

RB0 0 1 RB2 0 1 RB3 0 1 RB4 1 RB5 1 0 RB6 1

F0

ATE-UNIOVI

F3

C3 C2

ATE-UNIOVI

C1 ATE-UNIOVI RB7 1 C0

[S]

ATE-UNIOVI ATE-UNIOVI

Pulsadores y Teclados

ATE-Universidad de Oviedo

18

Microcontroladores PIC

Almacenamos RB4 en ATE-UNIOVIniveles ledos en RB7dea las lneasposicin LEIDO ATE-UNIOVI Cambiamos sentido Sacamos en las nuevas salidas el valor ledo

ATE-UNIOVI

;Almacenamos el PORTB que se ha leido para sacarlo despus movf PORTB,W ;guardamos PORTB en W movwf LEIDO ;y se lo pasamos a LEIDO ;Cambiamos entradas y salidas para la inversin de lnea: bsf STATUS,RP0 movlw b'00001111' movwf TRISB bcf STATUS,RP0

ATE-UNIOVI ATE-UNIOVI
;Pasamos al banco 1 ;y ponemos RB4 a RB7 como salidas, RB3 a RB0 entradas ;en el registro de direccin de datos ;volvemos al banco 0

;Sacamos al PORTB la lectura anterior

ATE-UNIOVI

ATE-UNIOVI

movf LEIDO,W movwf PORTB nop nop

;Cargamos el valor leido en W ;y ahora va al PORTB ;Esperamos un par de ciclos para asegurar estabilizacin de ;las salidas del PORTB

ATE-UNIOVI

ATE-UNIOVI
Pulsadores y Teclados
ATE-Universidad de Oviedo

19

Microcontroladores PIC

ATE-UNIOVI

IDENTIFICACIN DE FILA PULSADA

CDIGO de una TECLA en W

ATE-UNIOVI 0 0 0 0 C C F F
COLUMNA FILA

;Cada tecla la vamos a codificar en los 4 bits de menos peso de W (16 combinaciones): ;2 bits para la columna (bits 3 y 2) y 2 bits para la fila (bits 1 y 0), ;posteriormente acudiremos a una tabla que nos proporcione la tecla asociada btfss PORTB,0 goto FILA0

ATE-UNIOVI

;Ahora vamos a buscar el '0' en filas ;si RB0=0 es que pertenece a la fila 0 ;si no, seguimos buscando el '0' ;si RB1=0 es que corresponda a la fila 1

ATE-UNIOVI

btfss PORTB,1 goto FILA1

ATE-UNIOVI

btfss PORTB,2 ;si hay un'0' en RB2, se trata de una tecla en la fila 2 goto FILA2 ;y vamos a esa etiqueta ;Si llegamos aqu es que hay un '0' en RB3 y se trataba de la fila 3 goto FILA3 ;y vamos a la parte de esa codificacin

ATE-UNIOVI

;Vamos a codificar en los 2 ltimos bits de W la fila -> W: c1-c0-f1-f0

ATE-UNIOVI
FILA0 FILA1 FILA2 FILA3

clrw goto COLUMNA movlw 0x01 goto COLUMNA movlw 0x02 goto COLUMNA movlw 0x03

ATE-UNIOVI
ATE-Universidad de Oviedo

;Si era la fila 0 cargo dos ceros en los bits bajos de W ;y voy a codificar la columna ;si era la fila 1, se carga 01 ;y vamos a por la columna ;si era la fila 2 ;y buscamos la columna ;finalmente si se trataba de la fila 3

ATE-UNIOVI

Pulsadores y Teclados

20

10

Microcontroladores PIC

ATE-UNIOVI
COLUMNA btfss PORTB,4 goto COL_3

IDENTIFICACIN DE COLUMNA PULSADA

ATE-UNIOVI
0 0 C C F F

;Buscamos ahora la codificacin de la columna en los bits 3 y 2

;Si RB4 a '0' es que era la columna 4 ;y vamos a completar el cdigo

ATE-UNIOVI

COLUMNA FILA

ATE-UNIOVI
btfss PORTB,6 goto COL_1 COL_0 COL_1 COL_2 goto CODIGO iorlw b'00000100' goto CODIGO iorlw b'00001000' goto CODIGO iorlw b'00001100' call BUSCA

btfss PORTB,5 goto COL_2

;Si RB5 es '0' se trataba de la columna 2 ;y vamos a por ese cdigo ;Si RB6 es '0' es que era la columna 1 ;y aadimos esa parte de cdigo

ATE-UNIOVI

;Si llegamos aqu es que estaba RB7 a '0' y por tanto se trataba de la columna 0

ATE-UNIOVI
COL_3 CODIGO

;Ya tenemos los bits de columna a 0, nos vamos a por el cdigo ;si se trataba de la columna 1, cargamos 01 ;y vamos a por el cdigo ;si era la columna 2, se incuye 10 ;y vamos a por el cdigo ;finalmente si era la columna 3, se sita 11

ATE-UNIOVI

ATE-UNIOVI

;Llamamos a BUSCA llevando en W COLUMNA Y FILA ;y volvemos trayendo en W la tecla asignada a esa fila y esa columna

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

21

Microcontroladores PIC

ATE-UNIOVI
TECLA
PULSADA

C C F

CODIGO (CC) 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11

COLUMNA

CODIGO FILA (FF) 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11

ATE-UNIOVI
REGISTRO W
C0 F0 F1
7 4 1

COLUMNA FILA TABLA DE ASIGNACIN ATE-UNIOVI


BUSCA addwf PCL,f retlw 0x07 ;columna 0 fila 0 retlw 0x04 ;columna 0 fila 1 retlw 0x01 ;columna 0 fila 2 retlw 0x0A ;columna 0 fila 3 retlw 0x08 ;columna 1 fila 0 retlw 0x05 ;columna 1 fila 1 retlw 0x02 ;columna 1 fila 2 retlw 0x00 ;columna 1 fila 3 retlw 0x09 ;columna 2 fila 0 retlw 0x06 ;columna 2 fila 1 retlw 0x03 ;columna 2 fila 2 retlw 0x0B ;columna 2 fila 3 retlw 0x0F ;columna 3 fila 0 retlw 0x0E ;columna 3 fila 1 retlw 0x0D ;columna 3 fila 2 retlw 0x0C ;columna 3 fila 3

C1
8 5 2 0

C2
9 6 3

C3
F E

7 4 1 A 8 5 2 0 9 6 3 B F

ATE-UNIOVI

ATE-UNIOVI F2
D C

ATE-UNIOVI

F3

ATE-UNIOVI
E D C

ATE-UNIOVI
Conector 1 2 3 4 A B C D

ATE-UNIOVI
ATE-Universidad de Oviedo

Pulsadores y Teclados

22

11