"Aquí nadie está loco, solo vive un realidad distinta" Jim Morrison.

" ¿De qué serviría hablar de aquello? Nadie me creería". Napoleón Bonaparte.

lunes, 24 de noviembre de 2014

Multiplexado de displays de 7 segmentos, utilizando un PIC16F84A programado en ensamblador con el MPLABX

Hace unos meses atrás, uno de mis amigos me pidió apoyo para hacer un pequeño obsequio para su novia. Yo le dije: "Trata de portarte bien con ella y e intenta cumplir la mayoría de sus deseos o antojos, ése es un buen regalo"; después de conversar y bromear un rato mi amigo y yo, optamos por hacer un circuito que mostrara la muy famosa frase: "I love you". 

El diseño inicial que le propuse a mi compañero, consistía en utilizar un contador BCD, un circuito integrado NE555 como temporizador astable y circuitos lógicos combinacionales, para que mediante minitérminos y mapas de Karnaugh, controlar el encendido/apagado de displays de 7 segmentos y mostrar la frase antes mencionada, desplazándose en modo marquesina. Años atrás, en el 2002, me había tocado diseñar y armar un circuito similar para la materia de Circuitos Lógicos II en el bachillerato; de dicho circuito sólo encontré una fotografía entre el acervo de imágenes que tengo, el procedimiento de diseño plasmado en papel lo deseché a finales del 2013. El circuito de aquel entonces se muestra a continuación:


(Para expandir, clic en la imagen).

En éste documento en formato PDF, se muestra parte del diseño inicial del circuito para la novia de mi compañero (puede tardar un poco en cargar el documento, ya que pesa 3 MB):


Después, le hice la observación a mi compañero, de que el circuito quedaría un poco extenso, que lo mejor era tratar de hacerlo compacto y portable. Y opté por cambiar el diseño y armar dicho circuito con un microcotrolador (le sugerí el PIC16F84A), enviando datos a través de un BUS de 7 bits conectado a los displays de 7 segmentos, y multiplexando éstos últimos para mostrar datos diferentes en cada uno.

Después de un par de días programando en lenguaje ensamblador y alambrando el circuito en una tablilla de experimentación, se obtuvo un diagrama final, que se muestra a continuación:



En éste video, se muestra el circuito armado de manera física y funcionando, en una tablilla de experimentación (protoboard):


Por último, para aquell@s que deseen armar éste circuito, pueden descargar el diagrama y el código en lenguaje ensamblador (se compila con el MPLABX de Microchip), en el siguiente link:
¡Muchas gracias por leer ésta entrada del blog!

ALF

2 comentarios:

  1. Estimado. Cuanto tiempo dejás para multiplexar?
    Yo estoy haciendo lo siguiente:
    // Display 1
    RB5 = 0;

      __delay_ms (2);
    RB4 = 1;
    __delay_ms (2);
    PORTC = 0B11000000;

    // Display 2
    RB4 = 0;

      __delay_ms (2);
    RB5 = 1;
    __delay_ms (2);
    PORTC = 0B10000110;

    ResponderEliminar