Pic c compiler display 7 segmentos ánodo común


El proyecto pic c compiler display 7 segmentos ánodo común usamos un pic16f628a para mostrar los números en el display

oscar Escrito por oscar 24 July 2020 13494 0

Acerca del proyecto

Una de las prácticas que podemos utilizar para poder entender las entradas y salidas de un microcontrolador pic es trabajar con un display de 7 segmentos ánodo común, donde conectamos los fines correspondientes a cada uno de los segmentos a un puerto del pic y escribimos en ese puerto el valor hexadecimal correspondiente al carácter que queremos visualizar en el display. En este post vamos a el paso a paso de como trabajar con este display utilizando el microcontrolador pic16F628a utilizando como lenguaje de programación pic C compiler.

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
Display 7 segmentos ánodo común En este post explicamos y definimos el display de 7 segmentos ánodo común su conexión e identificamos los pines con los segmentos.
Conectar display 7 segmentos ánodo común En este post explicamos la conexión del display de 7 segmentos ánodo común el cual tiene las mismas características de conexión que la no solamente que esté para poder encender el dígito necesitamos inyectarle un uno lógico, en el post explicamos a detalle como es el funcionamiento.
Introducción al compilador pic c compiler En este proceso encontrará la introducción a pic c compiler, además de encontrar a los links a los proyectos que hemos realizado con este compilador
PIC16F628A Aquí encontrará la hoja de datos del pic 16F628a y los diagramas de conexión

Display 7 segmentos ánodo común

Display de 7 segmentos ánodo común básicamente es un arreglo de diodos leds conectados en común hacia el ánodo y éste va a ir conectado hacia el positivo, cada una de los leds se va a convertir en un segmento el cual está organizado de una forma que podamos visualizar un número o un dígito del 0 al 9, cada uno de los segmentos está organizado desde la hasta A a la G, para visualizar algún número tenemos que pasar encender y apagar el led que corresponda al segmento. Como tenemos en la última imagen, la tabla de la secuencia de bits que que debemos encender y apagar para cada uno de los pines, estos se conectan al segmento, de tal forma que visualice el número correspondiente. Debemos tener en cuenta que para para encender un dígito se setea un 1 lógico y para apagarlo seteamos un 0 lógico, esta es la característica de este display ánodo común

Arreglo de leds
Arreglo de leds
Display 7 segmentos ánodo común
Display 7 segmentos ánodo común
Display 7 segmentos ánodo común bits
Display 7 segmentos ánodo común bits

Materiales

A continuación vamos a listar los materiales que vamos a utilizar para este proyecto y describimos la funcionalidad qué va a hacer sobre el circuito.

Materia Cantidad Descripción
Display 7 segmentos ánodo común 1 Visualizaremos los digitos del 0 al 9
PIC16f628a 1 Controlador para el display.
Resistencia 7 Resistencia de 1kΩ
Cristal de 4Mhz 1 Reloj externo del microcontrolador.
Cables macho a macho 7 Los usaremos para la conexión.

Conexión del circuito

La conexión que vamos a hacer es del pic16F628a hacia el display va a ser directa por el puerto b, lo único que intermedio son las resistencias de protección de un kilo ohmio esto con el fin para que no se vaya a dañar el segmento del display. En la siguiente tabla tenemos referenciado el segmento del display con el pin del arduino que estamos utilizando para encender el dígito. Cabe aclarar hasta este paso que display de 7 segmentos de ánodo común es decir que el común va conectado a positivo, teniendo en cuenta este dato para encender el segmento desde el arduino tenemos que enviarle un 0 lógico para que se encienda y 1 lógico para que se apague pero esto lo vamos a ver en el código con más detalle.

Pin pic Segmento display ánodo común
6 a
7 b
8 c
9 d
10 e
11 f
12 g
Conexión display 7 segmentos ánodo cómun breadboard
Conexión display 7 segmentos ánodo común breadboard
Conexión display 7 segmentos ánodo cómun schem
Conexión display 7 segmentos ánodo común schem
Conexión display 7 segmentos ánodo cómun foto
Conexión display 7 segmentos ánodo común foto

Tabla de codificación

La siguiente tabla muestra cual es el valor hexadecimal que se le tiene que pasar para poder visualizar cada dígito, este valor hexadecimal se calcula por medio del byte que le vamos a pasar al puerto directamente, también podemos pasarle bit por bit a cada uno de los fines pero ya que tenemos la facilidad de pasarle el hexadecimal completo entonces utilizamos este formato.

Number A B C D E F G PORT_X(Hex)
0 1 1 0 0 0 0 0 0 0x40
1 1 1 1 1 1 0 0 1 0x79
2 1 0 1 0 0 1 0 0 0x24
3 1 0 1 1 0 0 0 0 0x30
4 1 0 0 1 1 0 0 1 0x19
5 1 0 0 1 0 0 1 0 0x12
6 1 0 0 0 0 0 1 0 0x02
7 1 1 1 1 1 0 0 0 0x78
8 1 0 0 0 0 0 0 0 0x00
9 1 0 0 1 0 0 0 0 0x18

Código

Para la compilación de este proyecto les recomiendo que vean el post de instalar pic c compiler si aún no lo tienen y posteriormente cómo crear un proyecto para este entorno de trabajo, esto por si nunca han trabajado con este compilador.

El código lo tenemos en el repositorio de github en la sección pic c compiler code.

// Paso 1
#include <16F628A.h>

// Paso 2
#fuses XT, NOWDT, NOMCLR
#use delay(clock=4M)

// Paso 3
                    //    0    1    2    3    4    5    6    7    8    9   
BYTE CONST DISPLAY[10]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};

// Paso 4
#byte port_b = 0x06

// Paso 5
void main()
{
    // Paso 6
    set_tris_b(0x00);
    
    // Paso 7
    while(TRUE) {

        // Paso 8
        for(int i = 0; i < 10; i++) {
            port_b = DISPLAY[i];
            delay_ms(1000);
        }
    }
}

A continuación explicamos cada uno de los pasos que se esta realizando.

  1. Vamos a incluir todas las características del pic 16F628a con la siguiente instrucción esto permitirá utilizar sus puertos y sus pines.
  2. Vamos a incluir las siguientes instrucciones para poder utilizar el cristal externo en este caso del pic, cristal de 4Mhz y le vamos a indicar en los fusibles la palabra xt que es el cristal de esa frecuencia externo.
  3. Ahora vamos a crear un array constante de bytes en donde vamos a pasarle cada uno de los valores que necesitamos para poder encender el display, aunque en las raíces de bits nosotros podemos indicarle con el formato hexadecimal e internamente el compilador se encarga de transformarlo en bytes.
  4. Ahora vamos a indicarle en el puerto B que vamos a dejar como salida para poder encender los leds y en este caso de los segmentos del display.
  5. Ahora vamos a crear la instrucción principal Main la cual baje cutar nuestro código y nuestro programa principal.
  6. Ahora vamos indicarle con una instrucción set_tris_b vamos a colocar todo el puerto B como salida.
  7. Ahora vamos a crear un bucle infinito al cual vamos a ver qué programa corre indeterminadamente para poder ver el funcionamiento del display.
  8. Por último creamos un bucle que cuente hasta 10 el cual lo que vamos a hacer es primero obtener de nuestra variable array el valor correspondiente del byte según el número contador que se encuentre en ese bucle, y ese valor obtenido del byte o en este caso del hexadecimal se lo vamos a pasar directamente al puerto b, por último generamos un delay de un segundo para ver el efecto del número en el display.

Comentario

Debe aceptar antes de enviar