Anda di halaman 1dari 4

Pgina 12

PRCTICA N 3
Decodificador de teclado hexadecimal (desplegado del cdigo en leds)

Objetivo:
Al finalizar el curso el alumno ser capaz de decodificar mediante programacin una de 16
teclas en un arreglo matricial de 4x4, llamado teclado hexadecimal. Ser capaz de conectar el teclado a
un puerto de 8-bits en un microcontrolador. Podr utilizar el cdigo de la tecla oprimida en alguna
aplicacin.

Marco terico:
La mayora de los equipos
electrnicos que controlan alguna
variable necesitan obtener y
mostrar datos del mundo exterior.
Para la adquisicin de datos en los
equipos o en circuitos con
microcontroladores, es frecuente el
uso de algunos interruptores.
Tambin se pueden programar o
ajustar el punto de operacin si el proceso no es muy complejo. Sin embargo, muchas otras acciones
requieren de mucha ms informacin, la cual no podra ser introducida con tan solo unas pocas teclas.
La solucin a este problema es utilizar un pequeo teclado hexadecimal.
Un teclado hexadecimal es un conjunto de interruptores arreglados en una matriz de 4 filas por
4 columnas. Normalmente cuando se utilizan pocos interruptores en un circuito con microcontrolador,
cada interruptor se conecta directamente a una terminal de un puerto de I/O, y por ejemplo si se
requieren 8 interruptores, se utilizaran 8 terminales de I/O una para manejar cada interruptor. Por
otro lado en una matriz de 4x4 se utilizan tambin 8 terminales de I/O, pero se puede conectar el doble
de interruptores. Con este mtodo, por cada lnea de I/O aadida, se aumenta considerablemente la
cantidad de interruptores que se pueden conectar, as por ejemplo en un arreglo de 4x4 tendremos 16
teclas, en un arreglo de 5x4 tendremos 20 teclas, etc.
Existen en el mercado circuitos integrados diseados especialmente como decodificadores de
teclado. Estos proporcionan una solucin fcil y rpida a la conexin de un teclado, ya que algunos
proporcionan el cdigo de la tecla oprimida en binario en sus salidas. El uso de un decodificador de
teclado en C.I. proporciona al usuario una solucin fcil a expensas de un alto costo, ya que comparado
con la decodificacin de teclado por programacin mediante un microcontrolador, es relativamente
barato




Lista de material: Lista de equipo:
N Descripcin N Descripcin
1
1
4
4
1

4
Microcontrolador
Teclado hexadecimal
Resistencias 10K
Leds
Tablillas de experimentos
Metro de cable telefnico
Resistencias de 220
1
1
1
1
1
1
Pinza de punta
Pinza de corte diagonal
Fuente de alimentacin
Programador universal USB
Computadora personal
Simulador AVR Studio

Pgina 13

DESARROLLO

En esta prctica se utiliza el PUERTO B para conectar el teclado hexadecimal y el PUERTO D para
conectar 4 leds en los que se muestra el cdigo en binario de la tecla oprimida. El PUERTO B es
configurado para que los 4-bits menos significativos sean salidas, y los 4-bits mas significativos sean
entradas. Los bits PB3-PB0 son las filas y los bits PB7-PB4 son las columnas. Adems a PB3-PB0 se le
conectan R3-R0 para reducir la corriente al oprimirse una tecla. En la figura 1 se muestra la conexin
del circuito.

0 1 2 3
4
8
C
5
9
D
6
A
E
7
B
F
PB0
GND
VCC
PD6
PB1
PD5
PB2
PD4
PB3
PD3
PB4
PD2
PB5
PA0
PB6
PA1
PB7
PD1
PD0
PA2
Vcc Atiny2313

Fig. 1 Diagrama esquemtico de la conexin del teclado
Descripcin de funcionamiento.
Inicialmente se escribe 0xFF (0b11111111) en el registro de control del puerto D (DDRD) para
configurar el PUERTO D como salida, del que slo usaremos los 4-bits menos significativos para
conectar los leds, en los que veremos el cdigo de la tecla oprimida (por ejemplo si se oprime la tecla A
se debe de ver en los leds el cdigo 0b00001010). Los bits ms significativos del PUERTO D quedan
configurados como salida aunque no se usen, para evitar posibles perturbaciones si se quedan en
estado flotante. El cdigo mostrado en los leds es en hexadecimal con la finalidad de hacer lo ms
simple posible el programa.
En el registro de control del PUERTO B (DDRB) se escribe 0x0F (0b00001111) para configurar
PB7-PB4 como entrada (son las columnas) y PB3-PB0 como salida (son las filas). Se inicializa R20=0 y
R16=0xFE. El valor de R16 se escribe en el PUERTO B para iniciar la deteccin de la tecla oprimida (scan
code) en la primera fila poniendo el bit PB0=0. Aunque PB7-PB4 estn configuradas como entradas, se
les escribe unos para activar las resistencias internas de pull-up, con lo que se evita poner estas
resistencias externamente. El siguiente paso es llamar una pequea rutina de retardo de
aproximadamente 0.2ms para estabilizar el puerto ya que posteriormente este ser ledo. Pasados los
0.2ms se lee el PUERTO B con la instruccin IN y el valor obtenido se deposita en R17. Con la
instruccin BST se prueba para ver si el bit 4 de R17 es cero, si el resultado de la prueba es verdadero,
significa que la tecla oprimida fue la conectada en la primera fila y primera columna, que en este caso
se le asign el nmero cero. Si PB4=0, se llama nuevamente la subrutina de retardo y otra vez se
prueba si PB4=0. Este proceso de prueba de dos veces es para corroborar que PB4=0 por que se
oprimi una tecla y no por ruido, y el retardo es utilizado para suprimir el chisporroteo producido al
oprimir o liberar un interruptor (debouncing en ingles).
Pgina 14

Puesto que previamente R20=0, el valor cero se imprime en los leds, indicando que la tecla
oprimida es el cero, y finalmente la instruccin RJMP CICLO termina la deteccin de tecla oprimida
para iniciar un nuevo ciclo de escaneo.
Si al probar PB4, este resulta en 1, significa que no hubo tecla oprimida en la primera columna y
se procede a probar la segunda columna. La instruccin BRTS COL2 transfiere el control al segmento de
programa que primeramente incrementa en 1 a R20 para dejar listo a este registro con el nmero 1
valor asignado a la tecla colocada en la fila1 columna2 despus se prueba si PB5=0 y se repite el
proceso utilizado en la deteccin de la tecla cero, y as se van probando sucesivamente los bits PB6 y
PB7, al tiempo que tambin R20 se va incrementando con los nmeros 2 y 3 respectivamente. Si al ir
probando se descubre que los bits PB4, PB5, PB6, y PB7 estn en 1 cuando el bit PB0=0, significa que no
hay tecla oprimida en toda la fila1 y ahora se prueba para ver si hay tecla oprimida en la segunda fila
rotando una vez el valor de R16 quedando con esto el nmero 0b11111101. Con esta rotacin PB1=0
queda listo para probar la segunda fila. Una vez hecho esto, se repite el ciclo igual que cuando se
escaneo la fila1. Este proceso se repite 4 veces para escanear las 4 filas.
PROGRAMA
;Programa decodificador de teclado hexadecimal

.INCLUDE tn2313def.inc
.ORG $0
RJMP INICIO

.ORG $13
INICIO: LDI R16,$DF ;Configuracin del stack
OUT SPL,R16

LDI R16,$FF
OUT DDRD,R16 ;Configuracin del PUERTO D como salida
LDI R16,$0F ; Configuracin del PUERTO B bits7-4 como
OUT DDRB,R16 ;entradas y bits3-0 como salidas

CICLO: LDI R20,0 ;Contiene el cdigo de la tecla oprimida
LDI R16,$FE ;Inicio de escaneo
CICLO1: OUT PORTB,R16
RECALL RETARDO ;Llama retardo de 0.2ms

IN R17,PINB ;Se lee el PUERTO B

BST R17,4 ;Se prueba PB4=0
BRTS COL2 ; Si PB4 no es cero salta a la columna 2
RECALL RETARDO

BST R17,4 ;Se verifica que PB4=0 no por ruido
BRTS COL2
OUT PORTD,R20 ;Se escribe en los leds el cdigo de la tecla
RJMP CICLO

COL2: INC R20 ; R20 se ajusta para contener el cdigo de la sig.
BST R17,5 ;tecla y se prueba PB5
BRTS COL3
OUT PORTD,R20
RJMP CICLO

COL3: INC R20
BST R17,6
BRTS COL4
OUT PORTD,R20
RJMP CICLO



COL4: INC R20
BST R17,7
BRTS FIL234
OUT PORTD,R20
RJMP CICLO
FIL234: INC R20
SEC
ROL R16
CPI R20,$10
BRNE CICLO1
RJMP CICLO

RETARDO: LDI R18,$42
CERO: DEC R18
BRNE CERO
RET
Pgina 15

Conclusiones
Este programa y el circuito asociado se pueden implementar para cualquier microcontrolador
AVR con muy pocas variaciones. Estas adaptaciones podran ser solamente la forma de conexin del
teclado al puerto a utilizar.
Se observ correctamente el nmero equivalente a la tecla oprimida en los leds. Tambin se
observa que este mtodo obliga a que las teclas tengan los valores mostrados en el orden mostrado en
el diagrama, debido a la forma en que R20 se va incrementando.
BIBLIOGRAFA
ATMEL.COM
MANUAL DE INSTRUCCIONES AVR
MANUAL DE DATOS TECNICOS DEL MICROCONTROLADOR AVR

Anda mungkin juga menyukai