12
---------------------------------------------------------------- ------------------------------------------------------------- SISTEMAS MICROPROCESADOS INFORME Integrantes: Nelson Romo – David Guerra Nivel: 6to CIERCOM Fecha: 2012-06-27 I. Tema: UTILIZACIÓN DEL TECLADO MATRICIAL II. Objetivos: Utilizar el teclado matricial junto con el micro-controlador y la LCD para la configuración de un programa en el cual cuando se presione una tecla del teclado, aparezca en la LCD la tecla que se presionó. o Usar las interrupciones en la configuración del programa que estará en lenguaje C. o Conocer los parámetros y características de funcionamiento del teclado matricial. o Analizar la configuración y función del decodificador mm74c922n para el teclado matricial. III. Marco Teórico INTERRUPCIONES: Las interrupciones son eventos que se producen fuera de la ejecución del programa, inclusive pueden ser externas al circuito integrado, que obligan al micro-controlador a continuar con otra secuencia de instrucciones que se denominada la rutina de servicio a la interrupción. Identificación del evento de interrupción El micro-controlador identifica al evento que se ha producido cuando se enciende la bandera asociada la ejecución se encamina a la rutina de servicio, si está habilitada la interrupción y si el bit I del SREG está en uno (bandera de habilitación global de las interrupciones). Interrupciones externas ---------------------------------------------------------------- -------------------------------------------------------------

98580864 El Teclado Matricial

Embed Size (px)

Citation preview

Page 1: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

SISTEMAS MICROPROCESADOS

INFORME

Integrantes: Nelson Romo – David GuerraNivel: 6to CIERCOMFecha: 2012-06-27

I. Tema: UTILIZACIÓN DEL TECLADO MATRICIAL

II. Objetivos:

Utilizar el teclado matricial junto con el micro-controlador y la LCD para la configuración de un programa en el cual cuando se presione una tecla del teclado, aparezca en la LCD la tecla que se presionó.

o Usar las interrupciones en la configuración del programa que estará en lenguaje C.o Conocer los parámetros y características de funcionamiento del teclado matricial.o Analizar la configuración y función del decodificador mm74c922n para el teclado

matricial.

III. Marco Teórico

INTERRUPCIONES:

Las interrupciones son eventos que se producen fuera de la ejecución del programa, inclusive pueden ser externas al circuito integrado, que obligan al micro-controlador a continuar con otra secuencia de instrucciones que se denominada la rutina de servicio a la interrupción.

Identificación del evento de interrupción

El micro-controlador identifica al evento que se ha producido cuando se enciende la bandera asociada la ejecución se encamina a la rutina de servicio, si está habilitada la interrupción y si el bit I del SREG está en uno (bandera de habilitación global de las interrupciones).

Interrupciones externas

Además del RESET existen tres interrupciones externas y cuatro interrupciones por cambio de estado en los puertos de E/S.

Los ATMEGA 164PA tienen tres interrupciones externas:

INT0 es el pin PD2 INT1 es el pin PD3 INT2 es el pin PB2

Por estos terminales, que se los configura como entradas, se ingresan las señales que producen interrupciones.

-----------------------------------------------------------------------------------------------------------------------------

Page 2: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

Configuración del registro EICRA

Habilitación de las interrupciones externas (Configuración del registro EIMSK)

Los bits INT0, INT1 e INT2 en 1 habilitan los pedidos individuales de interrupción, causados por la actividad en la respectiva entrada de la señal para que surtan efecto estos pedidos también debe estar en 1 la bandera general de habilitación de interrupciones.

Banderas de las interrupciones externas (Configuración del registro EIFR)

INTF0, INTF1 e INTF2 se ponen en 1 por efecto de la actividad de la entrada de la señal respectiva regresan a 0 cuando se ejecuta la rutina de interrupción o cuando se escribe un 1 lógico

Interrupciones por cambios en los puertos

L os ATMEGA 164PA tienen cuatro interrupciones para los cambios en los puertos:

PCINT0 para el PUERTO A PCINT1 para el PUERTO B PCINT2 para el PUERTO C PCINT3 para el PUERTO D

-----------------------------------------------------------------------------------------------------------------------------

Page 3: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

Que también se los configura como entradas.

Habilitación de las interrupciones por cambio (Configuración del registro PCICR)

Los bits PCIE0, PCIE1, PCIE2 y PCIE3 en 1 habilitan los pedidos de interrupción, causados por los cambios en las entradas de los puertos A, B, C y D respectivamente para que surtan efecto estos pedidos también debe estar en 1 la bandera general de habilitación de interrupciones.

Banderas de las interrupciones por cambio (Configuración del registro PCIFR)

PCIF0, PCIF1, PCIF2 y PCIF3 se ponen en 1 por efecto de cambios producidos en las entradas de los puertos A, B, C y D respectivamente regresan a 0 cuando se ejecuta la rutina de interrupción o cuando se escribe un 1 lógico.

Identificación de las entradas

La denominación que tiene cada uno de los terminales de los puertos como interrupciones es:

PCINT 7...0 para los del PUERTO A PCINT 15...8 para los del PUERTO B PCINT 23…16 para los del PUERTO C PCINT 31...24 para los del PUERTO D

Mascara de las interrupciones por cambio (Configuración de los registros PCMSK <3:0>)

-----------------------------------------------------------------------------------------------------------------------------

Page 4: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

Los bits PCINT7…0, PCINT15…8, PCINT23...16 y PCINT31...24 en 1 habilitan individualmente las entradas de los puertos A, B, C y D respectivamente para que los cambios generen pedidos de interrupción.

TECLADO MATRICIAL:

Es un teclado construido en forma de matriz. El teclado que utilizamos es un teclado de 4x4=16 teclas. El diagrama a continuación muestra como está constituido el mismo:

Ventajas:

- Hay mayor aprovechamiento de los pines de E/S que con un teclado lineal.- #Combinaciones = (#Filas) x (#Columnas): Es decir que el #Combinaciones = 4 * 4 = 16- Se tienen 16 teclas para 4+4=8 pines E/S- En un teclado lineal se requerirían 16 pines.

Funcionamiento:

Cuando no se ha oprimido ninguna tecla (todos los interruptores están abiertos) no hay conexión entre renglones y columnas. Pero cuando se oprime una tecla se hace una conexión entre la columna y el renglón de la tecla. Por ejemplo: si la tecla 6 es presionada.

-----------------------------------------------------------------------------------------------------------------------------

Page 5: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

Desventajas:

Por el mismo principio de construcción matricial que reduce el número de pines E/S necesarios, existen dos problemas cuando se presiona más de una tecla, éstos son el Ghosting y el Enmascarado.

Ghosting: Sucede cuando son presionadas tres o más teclas de forma que una de ellas comparta renglón y columna con cada una de las otras respectivamente.

Enmascarado: al presionar dos teclas y soltarlas el micro no detectará que se soltó una tecla pues la corriente sigue fluyendo por el camino incorrecto.

Lectura del Teclado Matricial

Hay dos formas:

1) Empleando un circuito dedicado el cual envía al micro el código de la tecla presionada y un pin de interrupción para que el micro lea el dato.

2) Decodificar la columna y la fila empleando los puertos como entrada y como salida alternadamente.

Cómo se ve cuál tecla se oprimió:

DECODIFICADOR MM74C922N:

Configuración de los pines:

-----------------------------------------------------------------------------------------------------------------------------

Page 6: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

En nuestro caso no usaremos el decodificador. Pero aquí ponemos el diagrama de cómo se conecta el decodificador con el teclado:

Teclado Decodificador Micro-controlador

IV. Simulación

Presionando la tecla 2:

V. Código (en lenguaje C)

#include <mega164a.h>#include <delay.h>#include <stdio.h>

-----------------------------------------------------------------------------------------------------------------------------

Page 7: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

// Alphanumeric LCD functions#include <alcd.h>

// Declare your global variables heretypedef unsigned char byte;

unsigned char scan_key(void) {PORTB=0x80;

if(PINB.0)return 13;if(PINB.1)return 8;if(PINB.2)return 9;if(PINB.3)return 10;

PORTB=0x40;

if(PINB.0)return 7;if(PINB.1)return 5;if(PINB.2)return 6;if(PINB.3)return 11;

PORTB=0x20;

if(PINB.0)return 4;if(PINB.1)return 2;if(PINB.2)return 3;if(PINB.3)return 12;

PORTB=0x10;

if(PINB.0)return 1;if(PINB.1)return 0;if(PINB.2)return 14;if(PINB.3)return 15;

delay_ms(20);return 21;}

void main(void){unsigned char i;

// Crystal Oscillator division factor: 1#pragma optsize-CLKPR=0x80;CLKPR=0x00;#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endif

-----------------------------------------------------------------------------------------------------------------------------

Page 8: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

PORTB=0x00;DDRB=0xF0;

// Characters/line: 16lcd_init(16); lcd_gotoxy(0,0); lcd_puts("Nelson Romo"); delay_ms(1000); lcd_clear();

while (1) { for (i=0;i<4;i++) { i=scan_key(); if(i!=21) { switch(i) { case 0: lcd_gotoxy(1,1); lcd_puts("4"); break;

case 1: lcd_gotoxy(1,1); lcd_puts("8"); break;

case 2: lcd_gotoxy(1,1); lcd_puts("5"); break; case 3: lcd_gotoxy(1,1); lcd_puts("2"); break; case 4: lcd_gotoxy(1,1); lcd_puts("9"); break; case 5: lcd_gotoxy(1,1); lcd_puts("6"); break; case 6: lcd_gotoxy(1,1); lcd_puts("3");

-----------------------------------------------------------------------------------------------------------------------------

Page 9: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

break;

case 7: lcd_gotoxy(1,1); lcd_puts("/"); break;

case 8: lcd_gotoxy(1,1); lcd_puts("x"); break;

case 9: lcd_gotoxy(1,1); lcd_puts("-"); break;

case 10: lcd_gotoxy(1,1); lcd_puts("+"); break; case 11: lcd_gotoxy(1,1); lcd_puts("="); break; case 12: lcd_gotoxy(1,1); lcd_puts("0"); break; case 13: lcd_gotoxy(1,1); lcd_puts("7"); break; case 14: lcd_gotoxy(1,1); lcd_puts("1"); break; case 15: lcd_gotoxy(1,1); lcd_puts("*"); break; } } } }}

-----------------------------------------------------------------------------------------------------------------------------

Page 10: 98580864 El Teclado Matricial

-----------------------------------------------------------------------------------------------------------------------------

VI. Conclusiones:

Mediante la configuración del teclado mediante las interrupciones obtuvimos resultados óptimos en la visualización en la LCD ya que al presionar cada tecla del teclado matricial ocurre adecuadamente el evento de interrupción.

Bibliografía:

http://galia.fc.uaslp.mx/~cantocar/microcontroladores/SLIDES_8051_PDF/20_MATRI.PDF

http://es.scribd.com/doc/6661021/Teclado-Matricial-4x4 http://ucsystem.blogspot.com/2011/12/interrupciones-atmega.html http://es.scribd.com/doc/94934937/ejercicos-en-atmega-164p-teclado-matricial-con-

interrupciones http://es.scribd.com/doc/28886646/Capitulo-2

-----------------------------------------------------------------------------------------------------------------------------