KEYPAD 4x4 FLEX

Cuando se desee conectar un keypad de 4x4 con cualquier PIN, sólo se tiene que agregar la siguiente biblioteca.

	#define ROW0	PIN_C0
	#define ROW1	PIN_C1
	#define ROW2	PIN_C2
	#define ROW3	PIN_C3
	#define COL0	PIN_C4
	#define COL1	PIN_C5
	#define COL2	PIN_C6
	#define COL3	PIN_C7

	#include  <keypad4x4flex.h> 
		

Diagrama de Pines

Los KeyPad son un conjunto de pulsadores dispuestos en forma de una matriz de 4 filas y 4 columnas, estos dispositivos son utilizados para introducir información al microcontrolador.

	ROW0	-->	PIN_X0
	ROW1	-->	PIN_X1
	ROW2	-->	PIN_X2
	ROW3	-->	PIN_X3
	COL0	-->	PIN_X4
	COL1	-->	PIN_X5
	COL2	-->	PIN_X6
	COL3	-->	PIN_X7

	 --R-- ROW0 {'1' ,'2' ,'3' ,'A'}
	 --R-- ROW1 {'4' ,'5' ,'6' ,'B'}
	 --R-- ROW2 {'7' ,'8' ,'9' ,'C'}
	 --R-- ROW3 {'*' ,'0' ,'#' ,'D'}
	            COL0 COL1 COL2 COL3
	              |    |    |    |
	              R    R    R    R
	              |____|____|____|___+vcc
		

kbd_get

char kbd_get(void)

Esta funcion no es bloqueante y devuelve una variable de tipo char con el valor de la tecla pulsada, si no encuentra alguna tecla pulsada o si encuentra mas de una tecla, devuelve 0

kbd_getchar

char kbd_getchar(void)

Esta funcion es similar a kbd_get pero bloqueante tambien devuelve una variable de tipo char con el valor de la tecla pulsada

Ejemplo de KeyPad4x4 Flex

para compilar necesitas los siguientes comandos

Ejemplo de compilacion : ./compila.sh ej_keypad4x4flex 16f877a
		

ej_pinio.c

#include <pic/p16f877a.h>

#define FOSC_HZ 20000000

#define ROW0  PIN_B0
#define ROW1  PIN_B1
#define ROW2  PIN_B2
#define ROW3  PIN_B3
#define COL0  PIN_B4
#define COL1  PIN_B5
#define COL2  PIN_B6
#define COL3  PIN_B7

#include <uart.h>
#include <keypad4x4flex.h>
#include <delayms.h>

int main (void)
{
	char tmp;
	char INTRO[]="PRESIONA UNA TECLA\n";
	
	TRISB=0xFF;
	TRISC=0xFF;

	delayms(100);

	uart_open(SET_9600_8N1);
	set_pullup_portb(TRUE);
	uart_puts(INTRO);

	while(TRUE)
	{
		delayms(200);
		tmp = kbd_getchar();
		uart_putc(tmp);
	}
	return 0;
}