Beruflich Dokumente
Kultur Dokumente
ATE-UNIOVI
ATE-UNIOVI
ATE-UNIOVI
Microcontroladores PIC
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
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
REAL
ATE-UNIOVI t
ATE-Universidad de Oviedo
Pulsadores y Teclados
Microcontroladores PIC
RB7 RB6
1 1 1
F0 F1
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
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
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
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
ATE-UNIOVI
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
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.
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
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
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
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
;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
ATE-UNIOVI
15
Microcontroladores PIC
ATE-UNIOVI
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
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
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
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
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
ATE-UNIOVI
ATE-UNIOVI
;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
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
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
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
ATE-UNIOVI
0 0 C C F F
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
;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
ATE-UNIOVI
REGISTRO W
C0 F0 F1
7 4 1
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