Mplab xc8 display 7 segmentos

En un post pasado conectamos un display de ánodo común y visualizamos los números de 0 al 9, esto con la ayuda del circuito 7447, el cual es un decodificador de 4 bits. Lo que vamos a hacer el usar el display 7 segmentos con un microcontrolador pic, realizaremos la conexión directa y programaremos cada uno de los dígitos correspondientes.

Contenido

Vídeo

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

Instalación de mplabx y xc8

Antes de empezar a trabajar necesitamos los entornos de trabajo los cuales son el mplabx y el compilador xc8[1], para ello se ha preparado un par de post en donde se realiza la explicación de como instalar los programas en Windows e Linux.

Display 7 segmentos

Es un elemento para visualización de números y letras en electrónica, cada segmento esta hecho de un material que emite luz, los segmentos se organizan o se designan como se muestra en la siguiente imagen.

Existen dos tipos de display de 7 segmentos, su principal diferencia es la conexión de los pines que están asociados a los segmentos, estos dos tipos se conocen como Anodo común y Catodo común.

Display de cátodo común

El display cátodo común es aquel que tiene el pin común conectado a los negativos de los LED’s (cátodo). Esto significa que este tipo de display se “controla” con ‘1’ lógico o con voltaje positivo.

Display de ánodo común

El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de display es controlado por ceros (0).

Materiales

Los materiales a usar los describimos en la siguiente tabla.

Material Cantidad Descripción
PIC16F877A 1 Microcontrolador de la marca microchip
Cristal de 4Mhz 1 Reloj externo del microcontrolador
Resistencias de 1KΩ 8 Resistencia de protecion del led y de MCLR
Display 7 segmentos ánodo común 1 Indicador visual
Pulsador tipo botton 1 Se usa para el reset de MCLR

Conexión

Para trabajar con un microcontrolador pic hay que tener en cuenta dos cosas importantes, la conexión a positivo del pin MCLR con una resistencia de protección y la conexión del cristal externo en este caso de 4Mhz con un par de condensadores de 22uf. A continuación encontrara los planos y el circuito.

Código

Vamos a explicar el código paso por paso, aunque como se puede observar no es tan complicado este ejemplo.

También se ha dejado en el repositorio de la pagina el código por si desea clonarlo, lo encontraras como ejemplo display 7 segementos.

//Paso 1
#pragma config FOSC = XT
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = ON
#pragma config LVP = ON
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF 

//Paso 2
#include <xc.h>
#include <PIC16f877A.h>

//Paso 3
#define _XTAL_FREQ 4000000

//Paso 4
void main(void) {
    TRISD = 0;
    
    //Paso 5
    unsigned char digits[] = {
        0x3F, // 0
        0x06, // 1
        0x5B, // 2
        0x4F, // 3
        0x66, // 4
        0x6D, // 5
        0x7D, // 6
        0x07, // 7
        0x7F, // 8
        0x6F, // 9
    };
    
    while(1) {
        //Paso 6
        for(int i = 0; i <= 9; i++) {

            //Paso 7
            PORTD = ~digits[i];
            __delay_ms(1000);
        }
    }
    
}
  1. Declaramos la configuración de los fuses que necesita el pic para su funcionamiento, el mas importante por el momento es el FOSC en XT, donde le indicamos que usamos un cristal externo.
  2. Incluimos las librerías de xc y del pic, que contienen las configuraciones de los pines e instrucciones básicas de funcionamiento.
  3. Definimos la frecuencia del cristal a 4Mh, el cual estamos trabajando, para ello usamos _XTAL_FREQ.
  4. Inicializamos la función principal que el main donde correrá el programa.
  5. Inicializamos una variable char de tipo array como digits, en donde esta el orden en formato hexadecimal configurado para cada dígito.
  6. Creamos un bucle con un contador de hasta 10, para recorrer el array de digits y poder obtener en la posición del arreglo el valor numérico del display.
  7. Por ultimo podemos hacer lo siguiente, con PORTD son los 8 pines del puerto d, podemos pesarla un binario como 0b00000000 o un hexadecimal como 0x6F y lo que va a hacer es encender cada uno de los pines correspondientes del puerto. Ahora como estamos trabajando con un display de ánodo común y el arreglo de digits es para uno de cátodo común, debemos de negar o invertir los valores de los bits, para ello solo usamos la virgulilla (~), que en programación significa negar, con esto podemos visualizar los números en el display.

Referencias

[1] Microchip http://ww1.microchip.com/downloads/en/devicedoc/50002053g.pdf, Consultado mayo 2019

Comentarios

Para dejar el comentario solo necesitamos tu correo que registraste en la pagina, pero si aun no te haz registrado se creara el usuario automaticamente.

Detalle contenido

base-mplab-xc8-display-7-segmentos
Generic placeholder image
Oscar Fernandez Alzate

08, Junio 2019

463
Categorías
MICROCHIP PIC