Mplab xc8 max7219 display 7 segmentos


En este post vamos a aprender a conectar un display de 7 segmentos de 4 dígitos al pic utilizando el controlador de pantalla MAX7219

oscar Escrito por oscar 30 October 2020 2224 0

Contenido

Vídeo

A continuación encontrara el vídeo en donde se explica el funcionamiento del circuito.

Acerca del proyecto

En este post vamos a aprender a conectar un display de 7 segmentos de 4 dígitos al microcontrolador pic16f877a utilizando el controlador de pantalla MAX7219, este circuito nos permite visualizar valores numéricos en las pantallas LCD de 7 segmentos con la facilidad de desacoplar la lógica qué necesita para visualizar en el display de nuestro código principal, es decir ya no necesitamos hacer la multiplexacion, ni enventos relacionados para poder visualizar un número, ya que lo único que necesitamos hacer es enviarle el número que necesitamos visualizar al controlador y éste se encargará de mostrarlo en la pantalla.

Vamos a ver el paso a paso de lo que necesitamos hacer para poder visualizar los números, vamos a ver los materiales, y las conexiones necesarias para poder utilizar este display; en este caso vamos a trabajar con cuatro dígitos pero este tipo de circuitos puede soportar hasta 8 dígitos o más dependiendo la configuración que realicemos en el MAX7219.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
MAX7219 datasheet Tenemos la hoja de datos del circuito integrado de damos su descripción principal, los valores que puede soportar en corriente y voltaje, y la descripción de cada uno de los pines.
Introducción a mplab xc8 En este post encontará links para realizar la instalación y configuración del entorno mplab xc8.
PIC16F877A Esta es la hoja de datos del pic 16f877a.

Display 7 segmentos cátodo común

El display es básicamente un arreglo de diodos leds organizados de tal forma que nos puedan mostrar el dígito. En la siguiente imagen tenemos la forma de cómo se vería por dentro el display donde todos los catodos están conectados hacia negativo y la salida de cada uno de los pines que se va a encargar de encender el correspondiente segmento.

A continuación tenemos varios proyectos que se han realizado con arduino y el display de 7 segmentos:

Link Descripción
Mplab xc8 display 7 segmentos En este post mostramos la conexión de un display 7 segmentos ánodo común al pic usado el entorno mplab xc8 y damos el paso a paso en el código para poder visualizar los dígitos.
Conectar display 7 segmentos cátodo común En este post se explica la conexión básica del display de 7 segmentos.

MAX7219 Descripción general

Los MAX7219 / MAX7221 son controladores de pantalla de cátodo común compactos de entrada y salida en serie que interconectan microprocesadores (µPs) con pantallas LED numéricas de 7 segmentos de hasta 8 dígitos, pantallas de gráficos de barras o 4 LED individuales. En el chip se incluye un decodificador de código B BCD, circuitos de exploración multiplex, controladores de segmento y dígitos, y una RAM estática de 8x8 que almacena cada dígito.

Modulo MAX7219 display 7 segmentos

Para trabajar este circuito ya tenemos la opción del módulo dónde viene conectado dos displays de cuatro dígitos que en total nos van a dar ocho dígitos, este módulo ya está listo para trabajar lo único que hay que hacer es conectarlo con los pines correspondientes hacia el arduino y realizar la programación.

A continuación tenemos la tabla donde explicamos a que pin del módulo tiene que ir conectado al arduino.

Modulo max7219 Arduino
din24
cs25
clk26

Con esto ya podemos ir al código si están trabajan do con este modulo.

MAX7219 display 7 segmentos

Para realizar la conexión desde cero del del circuito si no desean trabajar con el módulo, vamos a realizar los siguientes pasos para poder hacer la conexión del display con el circuito integrado y luego con el arduino, no se necesitan tantos materiales y lo único complejo es realizar la conexión de esos dos componentes.

La imagen anterior estamos identificando cada uno de los pines, para saber cuales son los segmentos del display y cuales son los digitos, en este caso solo trabajaremos con 4 dígitos es decir un modulo display 7 segmentos.

Materiales

Material Cantidad Descripción
pic16f877a 1 Controlador del proyecto, en este caso usaremos el pic16f877a.
Cristal de 20Mhz 1 Reloj externo del pic
Display 7 segmentos 4 digitos 1 Display para visualizar los numeros del 0 al 9
MAX7219 1 Controlador del display de 7 segmentos
Resistencia 33k Resistencia para iset
Capacitor 10uf Capacitor de proteccción del circuito, conectado al iset

Circuito

Una vez que tengamos identificados los pines y listos los materiales vamos a proceder con la conexión, observamos la siguiente imagen del esquemático donde indicamos como se tienen que conectar cada uno de los pines de los segmentos y de los dígitos, adicionalmente tenemos que conectar el circuito MAX7219 a negativo con sus dos pines y a positivo con el pin correspondiente (la alimentacioón es a 3.3v), por último tenemos que colocar la resistencia en el pin iset con el condensador como no sugieren la imagen:

Ahora en la siguiente tabla identificamos el número del pin del circuito integrado con el número del pin del display para poder realizar la conexión.

MAX7219 Display 7 segmentos
26
69
712
118
1411
1510
167
175
204
211
223
232
4 GNDN/A
9 GNDN/A
18 ISETN/A
19 V+ (3.3v)N/A

Por ultimo tenemos la conexión del max7219 al PIC, observemos la siguiente tabla en donde relacionamos los pines:

MAX7219 PIC
124
1225
1326

Código

El proyecto se encuentra en el repositorio como xc8 max7219 display 7 segmentos.

// Paso 1
#include 
#include 
#include "config.h"
#define _XTAL_FREQ 20000000
#include "max7219.h"

//Paso 2
void displayNumber( int number);

//Paso 4
void main(void) {
    TRISB = 0;
    max7219_Config();

    max7219_Clear();
    
    for(int i = 0; i < 9999; i++) {
        displayNumber(i);
        __delay_ms(2000);
    }
    return;
}

//Paso 3
void displayNumber( int number) {
    int result;
    int pos = 0 ;
    max7219_Clear();
    while ( number > 0 ) {
        result = number % 10 ; 
        number = number / 10 ;
        max7219_WriteDigito(pos++, result);
    }
}
  1. Incluimos la librería del pic, compilador entre otras que debemos descargar previamente, link en sección conocimiento previo.
  2. Inicilizamos la función displayNumber para mostrar los numeros en el display.
  3. Creamos la función displayNumber que se encargara de descomponer el valor numérico que queremos visualizar para poder enviarlo a la función max7219_WriteDigito, lo que hacemos es obtener es el numero que queremos visualizar y comenzar a obtener cada dígito para mostrarlo en su posición correspondiente.
  4. Por ultimo llamamos la función displayNumber y con random generamos números aleatorios de 0 a 9999 para probar el display.

La librería de max7219.h la encontramos en el repositorio.


Comentario

Debe aceptar antes de enviar