La librería para el teclado matricial es la siguiente a desarrollar, de igual manera, es importante conocer su principio de funcionamiento para poder realizar una librería que le permita al usuario utilizar este dispositivo de la mejor manera La librería para el teclado matricial permite controlar un teclado 3×4 y devuelve un valor numérico indicando la tecla que se ha presionado.
Declaración De Pines
El teclado matricial 3×4 cuenta con 7 pines, 4 para las filas y 3 para las columnas. La declaración de pines se puede ver a continuación y pueden cambiarse al gusto del usuario si es necesario.
//Declaración de pines de la librería (Cambiar al gusto si es necesario) #define C3 PORTDbits.RD7 #define C2 PORTDbits.RD6 #define C1 PORTDbits.RD5 #define F4 LATDbits.LATD4 #define F3 LATDbits.LATD3 #define F2 LATDbits.LATD2 #define F1 LATDbits.LATD1
Nota: En el programa principal deben configurarse los pines del puerto D o el utilizado como salidas o entradas digitales según sea el caso.
Funciones
La librería cuenta con una función principal denominada BOTON. Esta función es utilizada para conocer el botón que ha sido pulsado. La función devuelve un número entero en función del botón presionado con ayuda de estructuras if y ciclos for tal y como se muestra en la siguiente tabla.
Valor que devuelve la librería |
|
Botón presionado |
Número almacenado |
0 |
0 |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
9 |
9 |
* |
10 |
# |
11 |
Es necesario declarar una variable de tipo entero donde se almacenará el valor que devuelve la librería
Por ejemplo:
int x = BOTON();
Conexiones (Miuva 18 / PIC 18F46F22)
Las conexiones mencionadas en la librería pueden observarse en la siguiente ilustración, pero pueden cambiarse según lo requiera el usuario.
Código de ejemplo (Miuva 18 / PIC 18F46F22)
//Configuracion de los fusbibles #pragma config PLLDIV = 2, CPUDIV = OSC1_PLL2, USBDIV = 2 #pragma config FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF #pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF #pragma config WDT = OFF #pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF #pragma config STVREN = ON, LVP = OFF, ICPRT = OFF, XINST = OFF #include <xc.h> //Declarar frecuencia del oscilador #define _XTAL_FREQ 48000000 //Incluir librerías #include "T_matricial.h" void main(void) { //Configuramos todos los pines como salidas digitales TRISB = 0x00; TRISD = 0b11100000; //Limpiamos los pines de los puertos LATB = 0x00; //Ciclo infinito while(1){ int x = BOTON(); if (x == 0){ LATB = 0b00001111; } else if (x == 1){ LATB = 0b00000001; } else if (x == 2){ LATB = 0b00000010; } else if (x == 3){ LATB = 0b00000011; } else if (x == 4){ LATB = 0b00000100; } else if (x == 5){ LATB = 0b00000101; } else if (x == 6){ LATB = 0b00000110; } else if (x == 7){ LATB = 0b00000111; } else if (x == 8){ LATB = 0b00001000; } else if (x == 9){ LATB = 0b00001001; } else if (x == 10){ LATB = 0b00001010; } else if (x == 11){ LATB = 0b00001011; } } return; }