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
Vídeo
A continuación, encontrará 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 eventos 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 enconará 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 cátodos 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 |
---|---|
din | 24 |
cs | 25 |
clk | 26 |
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 dígitos, 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 dígitos | 1 | Display para visualizar los números del 0 al 9 |
MAX7219 | 1 | Controlador del display de 7 segmentos |
Resistencia | 33k | Resistencia para iset |
Capacitor | 10uf | Capacitor de protecció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 alimentación es a 3.3v), por último tenemos que colocar la resistencia en el pin iset con el condensador como no sugieren la imagen:
Los dígitos del display están organizados de izquierda a derecha, es decir (D0, D1, D2, D3), pero la forma en que el max7219 realiza la visualización de los dígitos es de derecha a izquierda (D3, D2, D1, D0), así que al momento de realizar esta conexiona de los dígitos debemos hacerla cruzada como se muestra en la anterior imagen, esto se hace para que podamos ver los números apareces desde la derecha a la izquierda y no nos compliquemos cuando estemos desarrollado el código.
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 |
---|---|
2 | 6 |
6 | 9 |
7 | 12 |
11 | 8 |
14 | 11 |
15 | 10 |
16 | 7 |
17 | 5 |
20 | 4 |
21 | 1 |
22 | 3 |
23 | 2 |
4 GND | N/A |
9 GND | N/A |
18 ISET | N/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 |
---|---|
1 | 24 |
12 | 25 |
13 | 26 |
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);
}
}
- Incluimos la librería del pic, compilador entre otras que debemos descargar previamente, link en sección conocimiento previo.
- Inicilizamos la función displayNumber para mostrar los números en el display.
- Creamos la función
displayNumber
que se encargara de descomponer el valor numérico que queremos visualizar para poder enviarlo a la funciónmax7219_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. - Por ultimo llamamos la función
displayNumber
y conrandom
generamos números aleatorios de 0 a 9999 para probar el display.
La librería de max7219.h la encontramos en el repositorio.