Uso del Teclado y Display con el PIC 16F876A


El módulo de leds es un conjunto de 8 leds que se encienden o apagan, dependiendo del estado lógico que guarden los pines de salida de algún puerto del microcontrolador que se configuró como salida. En la figura 1 vemos el Kit del módulo de leds.


Desarrollo

El Teclado Matricial 4x4

Utilizamos un teclado matricial 4x4 que nos proporciona 16 botones. Lo conectamos de manera que detectemos estados altos. Para poder controlarlo desde un puerto del pic de 8 pines, debemos realizar barridos, es decir, habilitamos una columna poniendo en bajo sólo una de las cuatro columnas (puerto B <0:3>) y preguntamos si se ha pulsado algún botón asociado a la columna habilitada (filas puerto b 4:7) esto es preguntando cual de los cuatro pines se ha puesto en estado alto, por ejemplo ponemos el 1 en los que no queremos y 0 en el que queremos (PORTB pin 0), tenemos habilitados los botones 3, 7, B y F, sabremos cual se pulsó, si preguntamos qué pin está en estado alto PORTB 4, PORTB 5, PORTB 6 y PORTB 7 respectivamente.

Antirrebotes

Cualquier botón que utilicemos tiene una tendencia natural a rebotar (a simple vista no parece) aunque es mínima puede ser detectada por el micro, para poder eliminarlo se debe recurrir a antirrebotes por hardware (algo costoso), como tenemos a nuestro pic podemos programar un retardo de tiempo, es decir, ignorar lo que esté sucediendo durante un pequeño lapso, que es un valor mínimo de 100ms, práctimente imperceptible para nosotros, utilizando el temporizador TMR0.

TMR0 en Modo temporizador

Temporizador/Contador (TMR0) Este dispositivo, llamado Real Time Clock / Counter, es un contador de 8 bits, constituido por el registro TMR0 que se encuentra en la posición 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio de un pin de entrada especial (modo contador RA4) o para contar pulsos internos de reloj de frecuencia constante (modo timer). Además, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del OPTION_REG. La ventaja de temporizar por módulo, es que tenemos valores de tiempo fácilmente calculables por una ecuación, utilizando el retardo máximo que nos puede ofrecer el TMR0; el cual usado en la práctica funciona muy bien (excepto cuando se utilizan dispositivos más lentos como el LCD). Vea la fórmula 1.
Como ven en dicha fórmula, el valor máximo de temporización es 65.5ms.
Al ser un módulo incremental podemos ver que no podemos cargar el valor de 255 (2^8 contando el cero)
Para hacer que llegue a los 255 debemos poner en cero el TMR0 para que se incremente hasta el valor del timer (el valor máximo que debe temporizar), es decir

El Display 7 Segmentos

Sin duda alguna es uno de los dispositivos de salida más utilizados por su simplicidad de uso. En Saber Electrónica ya han salido artículos sobre éstos, donde se ha utilizado una interfase con el 74LS249 y 74LS247 (convertidor bcd a display de 7 segmentos) como solución a un control; ahora podemos no utilizar el convertidor bcd display de 7 segmentos y realizar una solución por software, determinando qué segmentos debemos “prender” con 0 lógico si es cátodo común o 1 lógico si es cátodo común.
Para el display ánodo común, se dispone la tabla 1.
Teniendo la tabla cada vez que se pulse una tecla colocamos el valor para cada carácter a visualizar en el puerto C

Desarrollo de Programa

Configurar el Puerto C como salidas, el puerto B <7:4> como entradas para detectar las teclas pulsadas, puerto B <3:0> como salidas para poder realizar el barrido de las columnas. Este programa y conexiones son una buena base para una cerradura electrónica.

 
De la Redacción de la Revista Saber Electrónica
FIGURA 1
 
 
 
¡¡PROMOCION EXCLUSIVA!!


Posicionado por < ProSEO >