Anda di halaman 1dari 18

UNIVERSIDAD AUTÓNOMA DE LA CIUDAD DE

MÉXICO
(U.A.C.M)

PLANTEL SAN LORENZO TEZONCO

APLICACIONES CON MICROPROCESADORES Y


MICROCONTROLADORES
PRÁCTICA # 2
TECLADO MATRICIAL4X4
PROF. ROBERTO MARTÍNEZ SERRANO

ALUMN. ADRIÁN MARTÍNEZ MÉNDEZ


Objetivo.

Que el estudiante aprenda a decodificar un teclado matricial 4x4 y posteriormente visualizar en un


Display de 7 Segmentos Cátodo Común las 16 teclas de este.

Para la lectura del teclado debemos tener en cuenta la disposición de las filas y las columnas como
se observa en la figura con la cual realizando la operación allí descrita se debe obtener un número
consecutivo de las teclas en la organización mostrada.

Luego, mediante el acceso a una tabla se decodifica la tecla leída para obtener el patrón final
observado en el diagrama del hardware de la figura anterior. Ej. Sí se oprime la tecla C del teclado,
el código de exploración correspondiente a esta es el 13d que debe ser representado como el
1100b en las salidas DCBA.

Material.

1- PIC16F887. 1 pieza.
2- Cristal de 8MHz. 1 pieza.
3- 2 Capacitores de 20Pf.
4- 1 Teclado 4x4. 1 pieza.
5- 7 Resistencias de 220Ω 1/4watt. 7 Piezas
6- 1 Display de 7 Segmentos Cátodo Común.
7- 1 Protoboard.
8- 1 PICKIT 3.

INTRODUCCIÓN.

Los teclados matriciales son ensamblados en forma de matriz como se ilustra en la figura.

El diagrama muestra un teclado como una matriz de 4x4-16teclas configuradas en 4 columnas y 4


renglones.

Cuando no se ha oprimido ninguna tecla, (todas las teclas abiertas) no hay conexión entre
renglones y columnas.

Cuando se oprime una tecla se hace una conexión entre la columna y el renglón de la tecla.

Muchos teclados comerciales ya tienen incluido su decodificador que escanea el teclado y si, una
tecla es presionada, regresa un número que identifica la tecla.
Figura1.

El display de 7 segmentos, es un componente que se utiliza para la


representación de números en muchos dispositivos electrónicos.

Figura2.
Cada vez es más frecuente encontrar LCD´s en estos equipos (debido a su
bajísima demanda de energía), todavía hay muchos que utilizan el display de 7
segmentos por su simplicidad.

Este elemento se ensambla o arma de manera que se pueda activar cada


segmento (diodo LED) por separado logrando de esta manera combinar los
elementos y representar todos los números en los displays (del 0 al 9). El

display de 7 segmentos más común es el de color, por su facilidad de


visualización.

Cada elemento del display tiene asignado una letra que identifica su posición
en el arreglo del display. Ver el gráfico arriba

 Si se activan todos los segmentos: “a,b,c,d,e,f,g” se forma el número “8”


 Si se activan sólo los segmentos: “a,b,c,d,e,f,” se forma el número “0”
 Si se activan sólo los segmentos: “a,b,g,e,d,” se forma el número “2”
 Si se activan sólo los segmentos: “f,g,b,c” se forma el número “4”
 Si se activan sólo los segmentos: “a,b,g,c,d,” se forma el número “3”
 Si se activan sólo los segmentos: “a,f,g,c,d,” se forma el número “5”

p.d. representa el punto decimal.

Display de Cátodo Común

El display cátodo común tiene todos los ánodos de los diodos LED unidos y
conectados a tierra. Para activar un segmento de estos hay que poner el ánodo
del segmento a encender a Vcc (tensión de la fuente) a través de una
resistencia para limitar el paso de la corriente.

Figura3.

Desarrollo.

Se deben decodificar las 16 teclas del teclado matricial 4x4 y visualizar la tecla en un Display de 7
segmentos cátodo común.

Nota: Las teclas “*” y “#”; a esta última se le dará el valor de “F” y a la primera el de “E”.
Diagrama de Flujo.

En el siguiente diagrama de flujo se puede observar el planteamiento del problema para


posteriormente pasar a la programación y después la implementación física.

Figura4.

Código.

#include <16F887.h> //Archivo de definiciones del MCU


#FUSES HS,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP

#use delay(clock=8000000) //Frecuencia del cristal para el cálculo de los retardos

Byte CONST display[16]=


{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};

#define use_portb_kbd TRUE //Habilitamos la lectura del Teclado por el Puerto B

#INCLUDE <kbd_lib.c>

#BYTE PORTC= 7

#BYTE PORTB= 6

#BYTE WPUB= 0X95 // declarar registro option

#BYTE OPTION_REG = 0X81

CHAR K;

VOID MAIN()

PORT_B_PULLUPS(TRUE);

OPTION_REG = 0; //en el MAIN desactivas el registro OPTION

WPUB= 0B11111111;// y seleccionas los pullups q vas a utilizar

KBD_INIT(); //Inicializar la rutina del teclado

SET_TRIS_C(0); //Configurar el puerto C como salida

// PORTC=(display[0]);//Muestre en el display el número cero

WHILE (TRUE)

{
K=0; //Ponga la variable K en cero

K=KBD_GETC(); //Captura cualquier tecla oprimida

IF(K=='0') //Si la tecla que se oprime es igual al caracter cero

PORTC=(display[0]);//Muestre en el display el número cero

IF(K=='1') //Si la tecla que se oprime es igual al caracter uno

PORTC=( display [1]);//Muestre en el display el número uno

IF(K=='2') //Tecla que se oprime = al caracter dos

PORTC=( display [2]); //Muestre en el display el número dos

IF(K=='3') // Tecla que se oprime = al caracter tres

PORTC=( display [3]);//Muestre en el display el número tres

IF(K=='4') // Tecla que se oprime = caracter cuatro

PORTC=( display [4]);//Muestre en el display el número cuatro

IF(K=='5') // Tecla que se oprime = caracter cinco

PORTC=( display [5]);//Muestre en el display el número cinco

IF(K=='6') // Tecla que se oprime = caracter //seis

PORTC=( display [6]);//Muestre en el display el número seis

IF(K=='7') // Tecla que se oprime = caracter

//siete

PORTC=( display [7]);//Muestre en el display el número siete

IF(K=='8') // Tecla que se oprime = caracter

//ocho

PORTC=( display [8]);//Muestre en el display el número ocho

IF(K=='9') // Tecla que se oprime = caracter

//nueve
PORTC=( display [9]);//Muestre en el display el número nueve

IF(K=='A') // Tecla que se oprime = caracter

// A

PORTC=( display [0b00001010]);//Muestre en el display el caracter A

IF(K=='B') // Tecla que se oprime = caracter

// B

PORTC=( display [0b00001011]);//Muestre en el display el caracter b

IF(K=='C') // Tecla que se oprime = caracter

// C

PORTC=( display [0b00001100]);//Muestre en el display el caracter c

IF(K=='D') // Tecla que se oprime = caracter

// D

PORTC=( display [0b00001101]);//Muestre en el display el caracter d

IF(K=='*') // Tecla que se oprime = caracter

// *

PORTC=( display [0b00001110]);//Muestre en el display el caracter E

IF(K=='#') // Tecla que se oprime = caracter

// #

PORTC=( display [0b00001111]);//Muestre en el display el caracter F

Simulación.

En la simulación mediante el software de Proteus se observan las conexiones que se deben realizar
para la implementación física.
Figura5.

Capturas de Pantalla.

En las siguientes imágenes se observa que, en el Proteus, programa de simulación electrónica el


funcionamiento correcto del circuito.
Figura6.

Figura7.
Figura8.

Figura9.
Figura10.

Figura11.
Figura12.

Figura13.
Figura14.

Figura15.
Figura16.

Figura17.
Figura18.

Figura19.
Figura20.

Conclusión.

Esta fue una de las prácticas que más se me complicó ya que se me presentó muchos errores de
compilación, así como también cabe mencionar que si no colocamos la librería correspondiente
para que el programa PIC C Compiler nos pueda hacer el barrido de columnas y filas.

Uno de los detalles que también note en esta práctica que si no declaramos los 16 números del
teclado; no podremos visualizar los números en el Display de 7 segmentos.

Cabe mencionar que al principio si me sacaba la mayoría de los números en el Display, pero lo que
eran los números A,B,C,D,*,# solo me mandaba el valor de 0.

Me pude dar cuenta que era un error de programación; ya que, al hacer una prueba de introducir
un número, este apareció el número correcto en el Display, hasta que por fin pude decodificar
todas las teclas del teclado 4x4.

Con este tipo de teclados podemos desarrollar más proyectos de ingenieria más complejos como
por ejemplo una chapa eléctrica con combinación con propósitos de seguridad, etc.

BIBLIOGRAFÍA

Juan Ricardo Clavijo Mendoza, Diseño y Simulación de Sistemas Microcontrolados en


Lenguaje C.
Eduardo García Breijo, Compilador C CCS y Simulador PROTEUS para
Microcontroladores PIC, Alfaomega Marcombo ediciones técnicas.

Anexo (Hojas de Especificaciones de los componentes utilizados).