Capítulo 3. Biblioteca de Driver's

Tabla de contenidos
KEYPAD 4x4
KEYPAD 4x4 FLEX

En esta bibliteca se encuentrán todos los modulos para poder controlar componentes externos, es la parte con mayor potencial apra el aporte de programadores externos.

KEYPAD 4x4

Cuando se desee conectar un keypad de 4x4 con el puerto D o B, sólo se tiene que agregar la siguiente biblioteca.

	//para usar el puerto D
	#define PORTD_FOR_KEYPAD4X4
	#include  <keypad4x4.h> 

	//para usar el puerto B
	#define PORTB_FOR_KEYPAD4X4
	#include  <keypad4x4.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 informacion 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

para compilar necesitas los siguientes comandos

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

ej_pinio.c

#include <pic/p16f877a.h>

#define FOSC_HZ 20000000

#define PORTB_FOR_KEYPAD4X4

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

int main (void)
{
	char tmp;
	char INTRO[]="\nPRESIONA 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;
}