jueves, 14 de noviembre de 2019

Laboratorio Nº 10

MICROCONTROLADORES

Laboratorio Nº 10

(Programación con Display 

de 7 segmentos)


1. CAPACIDAD TERMINAL:
  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC
  • Programar y configurar interfaces básicas del microcontrolador.

2. COMPETENCIA ESPECÍFICA DE LA SESIÓN:

  • Conocer el Display de 7 segmentos y su funcionamiento.
  • Conocer las técnicas de multiplexación.
  •  Programar HMI para juego de encestar.
3. CONTENIDOS A TRATAR: 

  • Display 7 segmentos
  • Multiplexación de datos
4. RESULTADOS:

  • Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.

5. MATERIALES Y EQUIPO

  • CCS Compiler instalado.
  • Entrenador de PICS
  • PIC16F877A
  • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
  • PC con Software de simulación.
6. FUNDAMENTO TEÓRICO

  • Display de 7 segmentos de Ánodo y Cátodo común.

El display 7 Segmentos

El display de 7 segmentos tiene una estructura casi estándar en cuanto al nombre de los segmentos. Para dicho elemento, se cuenta con 7 leds, uno para cada segmento. Para cada segmento, se le asigna una letra desde la «a» hasta la «g».  El display tiene por nombre a cada uno de los siguientes segmentos, es decir, el símbolo del display 7 segmentos es:

Display 7 Segmentos

DISPLAY 7 SEGMENTOS 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’ s lógicos o con voltaje positivo. El arreglo para un display de cátodo común seria el siguiente:
Display 7 segmentos cátodo común
DISPLAY 7 SEGMENTOS Á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, es decir que el microcontrolador o MCU, FPGA o microprocesador, le asigna a cada segmento un cero lógico (también llamada tierra digital). El esquema o diagrama del display de 7 segmentos en ánodo común es:
Display de 7 segmentos ánodo común
Display 7 Segmentos
Display 7 Segmentos
Display 7 SegmentosDisplay 7 SegmentosDisplay 7 Segmentos

FUNCIONAMIENTO DEL DISPLAY DE 7 SEGMENTOS

El display de 7 segmentos funciona al activar y desactivar cada uno de los leds para formar los números deseados. Por ejemplo, en la siguiente imagen te mostramos como debe de ser la activación de cada segmento para representar los números 0 y 3.
Funcionamiento del display 7 segmentos
6. TAREAS GUIADAS DENTRO DEL LABORATORIO:

  • Transcriba el programa mostrado, compile dicho programa, simule en Proteus y compruebe funcionamiento en Tarjeta Entrenadora.
  #include <16f877a.h>             // Incluimos archivo con PIC a utilizar
#use delay (clock=20M)           // Indicamos que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT      // Configuración básica de los fusibles

int tabBCD[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,
               0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
int delay=5;                   // Completar con valor de retardo adecuado en ms
int16 dato=0;                    // Declaramos una variable ENTERA de 16 bits 
int16 unidades=0, decenas=0, centenas=0;

/******************************************************/
// Funcion que descompone un número Entero de 4 cifras
/******************************************************/
void descomp_entero(int16 valor)
{
   centenas = (int16) valor / 100;  // 1er Dígito o Centenas
   valor -= centenas * 100;       // y se lo resto al valor
   decenas = (int16) valor / 10;   // 2do Dígito o Decenas
   valor -= decenas * 10;        // y también se lo resto
   unidades = (int16) valor;      // y por último solo me quedan las unidades
}

/*************************************************/
// Funcion para displayar en forma multiplexada
/************************************************/
void visualizar(void)
{
  
   output_b(tabBCD[centenas]);
   output_a(0b00001000);
   delay_ms(delay);
   
   output_b(tabBCD[decenas]);
   output_a(0b00000100);
   delay_ms(delay);
   
   output_b(tabBCD[unidades]);
   output_a(0b00000010);
   delay_ms(delay);
}

/*************************************************/
// Funcion para emitir un pitido
/************************************************/
void BIP()
{
   FOR (i=0;i<=100;++i)
   {
      output_high(PIN_E1);    // Pone a "1" el pin E1 (envía 5 voltios)
      delay_ms(1);            // "Congela el tiempo" durante 1ms
      output_low(PIN_E1);     // Pone a "0" el pin E1
      delay_ms(1);            // "Congela el tiempo" durante 1ms
   }
}

/*************************************************/
// FUNCION PRINCIPAL VOID (MAIN)
/************************************************/









void main ()                     
   dato = 123;                  // ingrese numero inicial a visualizar
   descomp_entero(dato);
   visualizar();                 // mostramos el valor de "dato" en displays
  
while(1)
   {
      IF (!input(PIN_E0))        // si pulsamos E0.....
      {
         dato = dato + 1;        // el valor "dato" se incrementa en uno
         descomp_entero(dato);   // descomponemos el valor "dato"
         delay_ms(300);          // congelamos el tiempo para evitar falsos disparos
      }
            
      visualizar();              // mostramos el valor de "dato" en displays
   }
}


7. TAREAS A SER EVALUADAS:
  • Realice las modificaciones que se sugieren al programa, experimente y responda las preguntas planteadas:

  1. Se tiene un sistema con 2 pulsadores (D0, D1) de entrada y 3 displays de salida, además de un zumbador en el pin E1. Programe según lo siguiente:
    1. Al empezar el programa, se debe mostrar el número 500.
    2. Al presionar D0, el número mostrado se debe incrementar en 5 unidades, además debe sonar un pitido.
    3. Al presionar D1, el número mostrado debe disminuir 5 unidades pero de 1 en 1 cada segundo.
    4. Si el número llega a ser mayor a 600, debe sonar 3 pitidos.
  2. Describa el funcionamiento del programa previamente diseñado, demuestre funcionamiento
mediante simulación y en tarjeta entrenadora. Grabe en video para evidencia. 

8. Video explicativo:





9. OBSERVACIONES Y CONCLUSIONES:
  • OBSERVACIONES:
  1. Se observó que en el simulador PROTEUS no se pudo utilizar correctamente el acople de displays de 7 segmentos, pues las conexiones en la simulación se encontraban desordenadas.
  2. Se utilizó una función FOR para realizar una condición por las veces que se requieran.
  3. Se observó que para activar el buzzer del entrenador solo se utilizó una salida y delays para configurar el tiempo respectivo.
  4. Se observó que para mostrar un numero en el display de 7 segmentos se debe crear un bucle llamado descomposición de entero, lo cual nos permite convertir los valores de centenas,decenas y unidades para así visualizarlo en el conjunto de display.
  • CONCLUSIONES:
  1. Se reconoció el Display de 7 segmentos, su estructura y su funcionamiento.
  2. Se implementaron las técnicas de multiplexación para realizar multiples tareas enviadas a un solo receptor, en este caso fue el display de 7 segmentos.
  3.  Se realizaron modificaciones de programas para realizar la tarea solicitada por el docente.
  4. Se verificaron conexiones del entrenador para determinar las posiciones de los dispositivos utilizados (display, buzzer y pulsadores).













No hay comentarios:

Publicar un comentario