Sei sulla pagina 1di 10

----------------------------------------------------------------------------------------------------------------------------SISTEMAS MICROPROCESADOS

INFORME
Integrantes: Nelson Romo David Guerra
Nivel: 6to CIERCOM
Fecha: 2012-06-27
I.

Tema: UTILIZACIN DEL TECLADO MATRICIAL

II.

Objetivos:

Utilizar el teclado matricial junto con el micro-controlador y la LCD para la configuracin de un


programa en el cual cuando se presione una tecla del teclado, aparezca en la LCD la tecla que
se presion.
o
o
o

III.

Usar las interrupciones en la configuracin del programa que estar en lenguaje C.


Conocer los parmetros y caractersticas de funcionamiento del teclado matricial.
Analizar la configuracin y funcin del decodificador mm74c922n para el teclado
matricial.
Marco Terico

INTERRUPCIONES:
Las interrupciones son eventos que se producen fuera de la ejecucin 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 interrupcin.
Identificacin del evento de interrupcin
El micro-controlador identifica al evento que se ha producido cuando se enciende la bandera
asociada la ejecucin se encamina a la rutina de servicio, si est habilitada la interrupcin y si
el bit I del SREG est en uno (bandera de habilitacin global de las interrupciones).
Interrupciones externas
Adems 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
INT1
INT2

es el pin PD2
es el pin PD3
es el pin PB2

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

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

----------------------------------------------------------------------------------------------------------------------------Configuracin del registro EICRA

Habilitacin de las interrupciones externas (Configuracin del registro EIMSK)

Los bits INT0, INT1 e INT2 en 1 habilitan los pedidos individuales de interrupcin, causados por
la actividad en la respectiva entrada de la seal para que surtan efecto estos pedidos tambin
debe estar en 1 la bandera general de habilitacin de interrupciones.
Banderas de las interrupciones externas (Configuracin del registro EIFR)

INTF0, INTF1 e INTF2 se ponen en 1 por efecto de la actividad de la entrada de la seal


respectiva regresan a 0 cuando se ejecuta la rutina de interrupcin o cuando se escribe un 1
lgico
Interrupciones por cambios en los puertos
L os ATMEGA 164PA tienen cuatro interrupciones para los cambios en los puertos:

PCINT0
PCINT1
PCINT2
PCINT3

para el PUERTO A
para el PUERTO B
para el PUERTO C
para el PUERTO D

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

----------------------------------------------------------------------------------------------------------------------------Que tambin se los configura como entradas.


Habilitacin de las interrupciones por cambio (Configuracin del registro PCICR)

Los bits PCIE0, PCIE1, PCIE2 y PCIE3 en 1 habilitan los pedidos de interrupcin, causados por los
cambios en las entradas de los puertos A, B, C y D respectivamente para que surtan efecto
estos pedidos tambin debe estar en 1 la bandera general de habilitacin de interrupciones.
Banderas de las interrupciones por cambio (Configuracin 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
interrupcin o cuando se escribe un 1 lgico.
Identificacin de las entradas
La denominacin que tiene cada uno de los terminales de los puertos como interrupciones es:

PCINT 7...0
PCINT 15...8
PCINT 2316
PCINT 31...24

para los del PUERTO A


para los del PUERTO B
para los del PUERTO C
para los del PUERTO D

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

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

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

Los bits PCINT70, PCINT158, 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
interrupcin.

TECLADO MATRICIAL:
Es un teclado construido en forma de matriz. El teclado que utilizamos es un teclado de 4x4=16
teclas. El diagrama a continuacin 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 requeriran 16 pines.

Funcionamiento:
Cuando no se ha oprimido ninguna tecla (todos los interruptores estn abiertos) no hay
conexin entre renglones y columnas. Pero cuando se oprime una tecla se hace una conexin
entre la columna y el rengln de la tecla. Por ejemplo: si la tecla 6 es presionada.

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

----------------------------------------------------------------------------------------------------------------------------Desventajas:
Por el mismo principio de construccin matricial que reduce el nmero de pines E/S
necesarios, existen dos problemas cuando se presiona ms de una tecla, stos son el Ghosting
y el Enmascarado.
Ghosting: Sucede cuando son presionadas tres o ms teclas de forma que una de ellas
comparta rengln 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 enva al micro el cdigo de la tecla presionada y un
pin de interrupcin para que el micro lea el dato.
2) Decodificar la columna y la fila empleando los puertos como entrada y como salida
alternadamente.
Cmo se ve cul tecla se oprimi:

DECODIFICADOR MM74C922N:
Configuracin de los pines:

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

----------------------------------------------------------------------------------------------------------------------------En nuestro caso no usaremos el decodificador. Pero aqu ponemos el diagrama de cmo se
conecta el decodificador con el teclado:

Teclado
IV.

Decodificador

Micro-controlador

Simulacin

Presionando la tecla 2:

V.

Cdigo (en lenguaje C)

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

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

----------------------------------------------------------------------------------------------------------------------------// Alphanumeric LCD functions


#include <alcd.h>
// Declare your global variables here
typedef 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 optsizeCLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
-----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------PORTB=0x00;
DDRB=0xF0;
// Characters/line: 16
lcd_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");
-----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------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;
}
}
}
}
}
-----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------VI.

Conclusiones:

Mediante la configuracin del teclado mediante las interrupciones obtuvimos resultados


ptimos en la visualizacin en la LCD ya que al presionar cada tecla del teclado matricial ocurre
adecuadamente el evento de interrupcin.

Bibliografa:

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-coninterrupciones
http://es.scribd.com/doc/28886646/Capitulo-2

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

Potrebbero piacerti anche