EL Módulo de Matriz LED es un arreglo de 64 LED’s de ánodo común que facilita el encendido de los LED’s ya que incorpora todos los transistores y resistencias necesarios para el funcionamiento de la matriz. Puede ser utilizando con un FPGA, microcontrolador o algún otro sistema de entrenamiento, siendo ideal para proyectos estudiantiles.
Declaración De Pines
El MOD matriz LED cuenta con 18 pines de los cuales 2 son para la alimentación. De los restantes, 8 pines son para las columnas y 8 son para las filas.
Las conexiones se mencionan en la librería, y es necesario destinar dos puertos del microcontrolador para su uso; sin embargo puede cambiarse según los requerimientos del usuario.
* EN CASO DE CMABIAR LAS CONEXIONES, LA FILA 1 DEBE IR CON EL PIN 7 DEL PUERTO EN CUESTION * B - Filas * R1 ----> LB7 ----- LD7 ----- LA7 * R2 ----> LB6 ----- LD6 ----- LA6 * R3 ----> LB5 ----- LD5 ----- LA5 * R4 ----> LB4 ----- LD4 ----- LA4 * R5 ----> LB3 ----- LD3 ----- LA3 * R6 ----> LB2 ----- LD2 ----- LA2 * R7 ----> LB1 ----- LD1 ----- LA1 * R8 ----> LB0 ----- LD0 ----- LA0 * EN CASO DE CMABIAR LAS CONEXIONES, LA COLUMNA 1 DEBE IR CON EL PIN 7 DEL PUERTO EN CUESTION * D - Columnas * C1 ----> LD7 ----- LB7 ----- LA7 * C2 ----> LD6 ----- LB6 ----- LA6 * C3 ----> LD5 ----- LB5 ----- LA5 * C4 ----> LD4 ----- LB4 ----- LA4 * C5 ----> LD3 ----- LB3 ----- LA3 * C6 ----> LD2 ----- LB2 ----- LA2 * C7 ----> LD1 ----- LB1 ----- LA1 * C8 ----> LD0 ----- LB0 ----- LA0 */ //Delcaración de pines CAMBIAR AL GUSTO SI ES NECESARIO #define PUERTO_FILAS LATB #define PUERTO_COLUMNAS LATD
Funciones
- DIGITO(x): Permite mostrar un dígito entre el cero y el nueve, el parámetro de entrada es igualmente un dígito entre el 0 y el 9.
- MAYUS(x): Esta función muestra una letra mayúscula del alfabeto, el parámetro de entrada es un número entre el 1 y el 26 de acuerdo con la letra de que dese mostrarse.
- MINUS(x): Función que muestra una letra minúscula del alfabeto, de la misma manera, el parámetro de entrada es un número entre el 1 y el 26.
- SIMBOLO(x): Sirve para mostrar símbolos de uso común, el parámetro de entrada es un número entre el 1 y el 18.
Para poder utilizar la librería, basta con declarar los pines del puerto B, D o los utilizados como salidas digitales y limpiarlos, para posteriormente utilizar alguna de las siguientes sentencias en un ciclo inifnito
DIGITO(7); MAYUS(4); MINUS(16); SIMBOLO(1);
- En la primera sentencia solo se muestra el número “7”
- En la segunda sentencia se muestra la letra “D” mayúscula
- En la tercera sentencia se muestra la letra “p” en minúscula
- En la cuarta sentencia se muestra el símbolo “π”
Conexiones (Miuva 18 / PIC18F46K22)
Las conexiones mencionadas en la librería pueden observarse en la siguiente ilustración, pero pueden cambiarse según lo requiera el usuario.
-
Conexiones entre la tarjeta Miuva 18 y el MOD matriz LED
Disposición
Filas
Nombre
R1
R2
R3
R4
R5
R6
R7
R8
Pin
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
Disposición
Columnas
Nombre
C1
C2
C3
C4
C5
C6
C7
C8
Pin
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
Código de ejemplo (Miuva 18 / PIC18F46K22)
Nota: Es muy importante incluir la librería después de declarar la frecuencia del oscilador en el programa principal.
//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 #include "Matriz_LED.h" int contador = 0; void main(void) { //Configuramos todos los pines como salidas digitales TRISD = 0x00; TRISB = 0x00; //Limpiamos los pines de los puertos LATD = 0x00; LATB = 0x00; //Configuramos interrupciones del PIC INTCONbits.GIE_GIEH = 0; //Deshabilitamos interrupciones globales INTCONbits.PEIE_GIEL = 0; //Deshabilitamos interrupciones periféricas RCONbits.IPEN = 0; // apagamos prioridades T0CONbits.TMR0ON = 0; //Apagamos módulo de TIMER0 //Configuramos fuentes de interrupción INTCONbits.TMR0IE = 1; //Habilitamos interrupción por desbordamiento INTCONbits.TMR0IF = 0; //Limpiamos bandera de interrupción del TMR0 //Configuramos módulo TMR0 T0CONbits.T08BIT = 0; //Seleccionamos registro de 16 bits T0CONbits.T0CS = 0; //Fuente de reloj viene de FOSC T0CONbits.PSA = 0; //Activamos preescaler T0CONbits.T0PS = 0b111; //Preescala seleccionada de 1:32 TMR0 = 28035; //Vslor de incio del timer 0 T0CONbits.TMR0ON = 1; //Encendemos módulo de TIMER0 INTCONbits.GIE_GIEH = 1; //habilitamos interrupciones globales INTCONbits.PEIE_GIEL = 1; //habilitamos interrupciones periféricas while(1){ //DIGITO(contador); MAYUS(contador); //MINUS(contador); //SIMBOLO(contador); } return; } void __interrupt() myISR(){ //Funcion de interrupciones, my interruption service rutine if(INTCONbits.TMR0IF == 1){ //Estructura if, preguntamos activación de la bandera del timer1 contador++; //Iniciamos el conteo ascendente //if (contador > 9) contador = 0; //El contador para los números if (contador > 26) contador = 1; //El contador para letras mayusculas y minuscuñas //if (contador > 18) contador = 1; //El contador para los simbolos TMR0 = 28035; //Valor de incio del timer 0 INTCONbits.TMR0IF = 0; //Limpiamos bandera de interrupcion } return; }
Funcionamiento