b) Las teclas pueden generar varios impulsos tanto al pulsar como al soltar (rebotes durante t < 100 ms, p. ej.). El usuario pulsa la tecla así

LSP: Teclado matricial 1. Control de un teclado matricial En esta práctica se genera el código adecuado para poder utilizar un teclado matricial. El

9 downloads 82 Views 53KB Size

Recommend Stories


- al B CZ. B a. u 8. si- m P
B C .-al 8 m 2 P! u G al I m 2 u U 3 C 8 O CZ B e al r B a e e G a 8 E 3 U C si- .-Q) E 2 P. m m m m 8 u A R ~

1000 ms 1 ciclo. 4 ciclos o impulsos 4 ciclos o impulsos Ocurre la interrupción 3
500 ms 1 ciclo 1000 ms 1 ciclo 4 ciclos o impulsos 4 ciclos o impulsos Ocurre la interrupción 3 Autómatas Programables ISA-UMH © TDOC-99 Ocurre

PULSAR RANGE GAMA PULSAR PULSAR 25 PULSAR 35 PULSAR 45 PULSAR 65 PULSAR 85 PULSAR 145 PULSAR MP145
PULSAR RANGE | GAMA PULSAR PULSAR 25 PULSAR 35 PULSAR 45 PULSAR 65 PULSAR 85 PULSAR 145 PULSAR MP145 PULSAR MP401 PULSAR MP801 The PULSAR r

Funciones de las teclas
FANUC 0T-C MANUAL DEL USUARIO Funciones de las teclas SKIP (no se ejecutan bloques de secuencia opcional. DRY RUN (recorrido de prueba de programas)

Alto nivel de servicio y atención al cliente, tanto el de negocios como el turista
Alto nivel de servicio y atención al cliente, tanto el de negocios como el turista El Barceló Sants, situado sobre la Estación Central de Trenes de

Al metabolizar, las células producen tanto energía como productos de desecho. Estos
SISTEMA URINARIO Al metabolizar, las células producen tanto energía como productos de desecho. Estos últimos son eliminados principalmente mediante e

Las Organizaciones como Cerebros para Generar Capital Social. Organizations as Brains to Build Social Capital
Daena: International Journal of Good Conscience. 8(1) 82-93. Marzo 2013. ISSN 1870-557X Las Organizaciones como Cerebros para Generar Capital Social

Story Transcript

LSP: Teclado matricial

1. Control de un teclado matricial En esta práctica se genera el código adecuado para poder utilizar un teclado matricial. El programa debe convertir cada pulsación sobre el teclado, en un carácter ASCII que identifique la tecla. El carácter se puede enviar a la utilidad Uviterm del PC, o bien a la pantalla LCD. 1.1. Características funcionales de la interfaz teclado-sistema En el desarrollo de la interfaz es necesario tener en cuenta que: a) El usuario no pulsará varias teclas simultáneamente. b) Las teclas pueden generar varios impulsos tanto al pulsar como al soltar (rebotes durante t < 100 ms, p. ej.). El usuario pulsa la tecla así

t Pero se genera ésto (por ejemplo)

t NOTA: '0' = contacto cerrado

c) El usuario teclea lo bastante lento como para poder detectar las pulsaciones mediante consulta. d) El sistema es capaz de 1

2

3

4

5

6

que se generan (no se necesita un buffer de

7

8

9

teclado).

*

0

#

atender a los mensajes de pulsación a la velocidad en

+5V

A

Fila A

1

Fila B

1

Fila C

1

Fila D

B C D

1

e) Para el conexionado del teclado se utilizará el puerto P5 del micro, con las asignaciones de bits que se indican en la figura.

P5.3 P5.2 P5.1 P5.0 Col 1 Col 2 Col 3 Col 4

1

P5.7 P5.6 P5.5 P5.4

LSP: Teclado matricial

1.2. Diagrama de bloques de la interfaz El programa de control del teclado se basa en dos rutinas que se describen a continuación: EXPLORACION DEL TECLADO TECLADO

kb_in

kb_scan

MÁQUINA DE ESTADOS ANTI-REBOTES

kb_out

kb_reb

a) Rutina de exploración. Activa (pone a ‘0’) secuencialmente las salidas P5.7 a P5.4 (filas A a D) y lee las entradas P5.3 a P5.0 (columnas 1 a 4). Actualiza la variable kb_in con el valor: a) Si no hay ninguna tecla pulsada, kb_in = 0. b) Si hay alguna tecla pulsada, kb_in = ASCII de la tecla.

b) Rutina antirrebotes. A partir de la variable kb_in, que puede contener rebotes, actualiza la variable kb_out libre de rebotes. Se realiza mediante una máquina de estados.

En la página siguiente se muestra el diagrama de flujo de la rutina de exploración.

2

LSP: Teclado matricial

Diagrama de flujo de la rutina de exploración

kbscan

Mascara= 01111111b

Para activar la fila A (P5.7)

P5= mascara

¿Nibble bajo de P5 = 1111 ?

Ya se encontró una tecla pulsada

no

kbin = nº tecla

Ninguna tecla pulsada de esta fila

si

kbin = ascii tecla

Rotar la máscara a la derecha

no

return

¿máscara= 11110111b ? si kbin = 0 mascara return

3

Número de 0 a 15 Mediante consulta a una tabla

LSP: Teclado matricial

El diagrama de estados de la máquina anti-rebotes es el siguiente:

EL ESTADO INICIAL ES E0 kb_out = 0 (*) E0 alarma temp.

kb_in != 0 kb_out = kb_in arranca temp.

E1

E3

alarma temp.

kb_out = 0 (*) arranca temp.

kb_in = 0 E2

(*) Se puede dejar sin poner a 0, para que sea la rutina que utilice kb_out quien lo borre

La máquina de estados se realiza mediante una subrutina que comprueba el valor de una variable (estado) y según su valor realiza las operaciones adecuadas (p. ej. actualizar salidas) y determina si se ha de producir la transición a un nuevo estado.

En la página 5 se indica el diagrama de secuencia de operaciones de una máquina de estados genérica.

Además, esta máquina de estados utiliza un temporizador. En la página 6 se muestra la forma de obtener un conjunto de temporizadores SW basados e un tiemporizador HW.

4

LSP: Teclado matricial

Implementación de una máquina de estados.

maq_est

estado = 0 ?

si

Se acaba de cambiar a este si estado ? no

no

estado = 1 ?

actualizar salidas,etc.

si

una estructura equivalente

no

no

Hay que cambiar a otro estado ? si estado = nuevo cambio = si

estado = n ? no estado = 0

idem

seguro por si entra en un estado no válido

RET

5

LSP: Teclado matricial

Para realizar el temporizador se debe programar

un temporizador software (SW)

utilizando un único temporizador hardware (HW), p. ej. T1. De forma general, para crear temporizadores SW se debe programar un temporizador HW para que genere interrupciones periódicas, p. ej. cada milisegundo o cada centésima de segundo. La rutina de atención a la interrupción de dicho temporizador HW gestiona los temporizadores SW necesarios. En la figura siguiente se representa el diagrama de secuencia de operaciones de una rutina de atención a un temporizador HW (ISR_temp) programado en modo de auto-recarga que genera un conjunto de temporizadores SW descendentes. ISR_temp

temp. 1 está activo ?

si

decrementar temp. 1

temp. 1 = 0 ?

no

temp. 2 está activo ?

si

activar alarma desactivar temp.

no

si

una estructura equivalente

si

idem

no

temp. m está activo ? no RET RETI

Si el temporizador HW no utiliza un modo con auto-recarga, la recarga debe hacerse por software al entrar en la rutina (ISR_temp). Para arrancar el temporizador SW, se debe realizar la siguiente secuencia: - Cargar el valor que corresponda al tiempo a medir. - Borrar una posible alarma anterior. Activar el temporizador. Para comprobar si ya ha transcurrido el tiempo programado, se consulta la alarma. 6

LSP: Teclado matricial

Estructura general del programa de control del teclado a) Inicializaciones de variables: Temporizadores SW inactivos, etc. b) Inicializaciones de periféricos: Modo de temporizadores HW, interrupciones que se habilitan, etc. c) Bucle en el que se llama a las diferentes rutinas utilizadas de forma cíclica. Por ejemplo: #include “io517.h”; /* utilizar “#define” para asignar valores a símbolos (por ejemplo #define led P3.5) */ /* declarar variables globales y prototipos de funciones */ main(){ /* declarar variables locales */ /* inicializar variables globales */ while(1){ kb_scan(); kb_reb(); send_key(); } } /* definir contenidos de las funciones, incluidas las funciones de interrupción */ La función send_key() podría enviar el ascii de la tecla pulsada al puerto serie o a la pantalla LCD. Para enviar el ascii al puerto serie (de forma que lo reciba el terminal del PC) se deben inhibir las interrupciones del puerto serie (o todas) con objeto de no interferir con el programa monitor de la placa Altair. Por ejemplo: EA= 0; TI= 0; SBUF= kbout; while(TI= =0); TI= 0; EA= 1; 7

LSP: Teclado matricial

Además, pueden utilizarse interrupciones para atender otras tareas urgentes. En general, se procurará que las interrupciones realicen solamente la parte esencial de la respuesta. Pueden dejar un aviso (mensaje) para que una rutina del bucle principal realice el resto del trabajo. VER TAMBIÉN DOCUMENTO “Uvi51Ce.pdf”

8

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.