6. Manejo de display 7 segmentos y antirebote

6. Manejo de display 7 segmentos y antirebote

6. Manejo de display 7 segmentos y antirebote
5 (100%) 4 votes

Display 7 SegmentosEl display de 7 segmentos es un componente electronico que me permite visualizar un valor numerico para una determinada aplicación. Cuando se quiere mostrar datos en el display, existen dos opciones para hacerlo, una utilizar un decodificador BCD a 7 segmentos después del microcontrolador, y otra es generar con el mismo microcontrolador el código 7 segmentos equivalente a cada número de 0 a 9.

Para que el microcontrolador maneje el display de 7 segmentos es necesario hacer la siguiente conexión (Para un display 7 segmentos de cátodo común).

Conexion display catodo comun con pic

Para lograr este objetivo se necesita entender el manejo de estructuras en C, que funcionan como una tabla donde el programa puede consultar el contenido de cada posición. Lógicamente en cada posición se encuentra el código 7 segmentos de cada número de 0 a 9.

Tabla display 7 segmentos cátodo común

Para manejar una estructura en C, lo único que se debe hacer es añadir la estructura al encabezado.

El número 10 indica la cantidad de posiciones de la estructura, los códigos 7 segmentos están en hexadecimal.

ANTIREBOTE

Cuando se trabaja con pulsadores o suiches, en el momento en que estos cambian de estado se genera una señal como la que se muestra en la figura:

Antirebote PIC Microcontrolador
Es decir, el suiche o pulsador genera unos y ceros hasta que finalmente se estabiliza debido a que es un dispositivo
electromecánico, el microcontrolador con su velocidad de trabajo se da cuenta de esto.

Para evitar errores en la detección de pulsadores y suiches se utilizan retardos de 150 a 200ms aproximadamente, en el momento en que se detecta que un pulsador o suiche cambió de estado, este tiempo es suficiente mientras se estabiliza y luego, se pregunta nuevamente por el estado del suiche.

Vamos a ver los siguientes ejemplos, con sus respectivos códigos, para que aprendas a programar el display 7 segmentos y el anti rebote. Para esto, también preparé para ti, un video donde te explico detalladamente cada linea del código, para que no te pierdas. Recuerda seguirme en YOUTUBE dandole click al siguiente botón, para que te suscribas a mi canal y puedas saber cuando publico un video nuevo sobre microcontroladores

Ejemplo 1

Realizar un temporizador de 0 a 9, que incremente cada segundo.

Display 7 segmentos + PIC

 

Ejemplo 2

Diseñar un temporizador decremental cada segundo. Pero que pueda seleccionar el numero inicial con un pulsador en RC0, y con otro pulsador en RC1 pueda darle la orden al microcontrolador de iniciar la temporizacion. (Tratar el problema de antirrebote generado por ambos pulsadores). Por ultimo colocar un Led en RC2 que se active en el momento que el temporizador decremental está funcionando.

Microcontrolador con display 7 segmentos

Codigo De Implementacion en CCS C PICC:

A continuación se presenta el código para que lo copies y lo pegues en tu compilador y puedas reproducirlo. Recuerda que para ver el código debes compartir el contenido de este blog para que más personas se beneficien de esta información.

Comparte en Redes Sociales

Si te sirvió de algo la información de la pagina, podrías invitarme a un café y ayudarme a seguir manteniendo en pie el sitio WEB. Solo cuesta $2USD y me ayudarías enormemente a seguir con mi trabajo. Muchas Gracias por tu visita.




Esta entrada tiene 6 comentarios

  1. Hola que fortuna encontrar esta pagina.
    De un Colombiano a otro.
    Gracias y lo felicito, por su labor

    Cesar Alvarez

    1. Gracias Cesar, que bueno que te ha ayudado. Saludos.

  2. Hola sergio, no entiendo esta parte:
    IF (BIT_TEST(SW1))
    {
    DELAY_MS(200); // Antirrebote
    while (BIT_TEST(SW1)); <<<<<<<<<< porque se queda en "stop" el programa y cuando se suelta sube un digito el display?

    1. Daniel, esa linea esta puesta ahi, justamente para hacer eso, para esperar hasta que el usuario deje de pulsar el botón para poder subir un digito. Simplemente se hace un while y se pregunta si el boton esta presionado. Si esto es verdad (es decir si el botón esta presionado) la instrucción BIT_TEST(SW1) siempre entregará un 1, entonces será como tener while(1); osea se quedara en esa instrucción quieto hasta que sea falsa, cuando sueltes el boton la instrucción BIT_TEST(SW1) entregara un 0, entonces será como tener while(0); y puede continuar haciendo su rutina.

      1. muchas gracias sergio, fue muy clara la respuesta ! seguire con el siguiente tutorial

Deja un comentario

Menú de cierre