miércoles, 12 de septiembre de 2018

LABORATORIO NRO. 3


Programación con Display de 7 segmentos

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
Descripción de los TIPOS DE VARIABLES: entero, entero con signo, etc.
¿Qué es una variable?

Una variable es un espacio en la memoria, en el cual el programador asigna un valor determinado por el tipo de dato que el lenguaje de programación va soportar.
Es representada por un nombre que es asignado por el programador, y se nombra justo después de su tipo de dato, los siguientes son los tipos de datos esenciales:

  • int; es numérico sirve para números enteros sin punto decimal  (1,2,3,4.. )
  • float; es numérico y sirve para números con parte fraccionaria, es decir con punto decimal ( 1.2, 1.3, 1.4, ….)
  • char; es de tipo carácter y cadena de caracteres, es decir que puedes asignar desde una letra, símbolo o numero hasta una palabra o serie de caracteres ( a, 2, !, &, hola, etc.)
  • bool; es de tipo verdadero o falso, este tipo de dato mostrara en pantalla un “1” en caso de ser true o “0” en caso de ser false.






Sofware

#include <16f877a.h>
 #use delay (clock=20M)
 #fuses HS, NOPROTECT, NOWDT
 int tabBCD[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
 int delay=5;
 int i;
 int16 dato=0;
 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;
 valor -= centenas * 100;
 decenas = (int16) valor / 10;
  valor -= decenas * 10;
  unidades = (int16) valor;
  }
  // 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);
     delay_ms(1);
     output_low(PIN_E1);
     delay_ms(1);
      }
      }
  // FUNCION PRINCIPAL VOID (MAIN)
       void main ()
      {
      dato = 392;
      descomp_entero(dato);
      visualizar();
      while(1)
      {
      IF (!input(PIN_D0))
      {
       BIP();
      dato = dato + 5;
      descomp_entero(dato);
      delay_ms(300);
      }
      IF (!input(PIN_D1))
      FOR (i=0;i<=4;++i)
      {
      {
       dato = dato - 1;
       descomp_entero(dato);
       delay_ms(300);
       visualizar();
       delay_ms(1000);
        }
        }

VÍDEO DE EXPLICACIÓN

https://youtu.be/TCGAm-iGYBk


OBSERVACIONES Y CONCLUSIONES



Observaciones
  • En el comando “int” se declaran las variables como enteras (1 y 0), estas pueden ser denominadas con cualquier nombre.
  • El comando “int 16” a diferencia del comando “int” este nos indica que nuestra variable se está guardando como “Entera de 16 bits”.
  • El bucle “for” permite indicar tres elementos en un solo lugar, al principio del bucle, facilitando así la obtención de un código compacto, pero legible.
  • El comando “IF” evalúa las condiciones que se requieren para realizar las instrucciones que están dentro de este comando, cuenta con dos opciones si las condiciones son verdaderas cumple las instrucciones pero si es falsa el comando ignora esa línea de programación y se pasa a la siguiente .
  • Cabe resaltar que la simulación en el software Proteus no fue exitosa, así que las pruebas se hicieron directamente en el entrenador.
  • Para emitir el bipido se logro gracias al buzzer piezoelectrico, a esta buzzer no se le puede agregar un 0 o 1 así que le enviamos corriente alterna.
  • para cambiar el valor de un variable utilizamos en signo "¡"


Conclusiones
  • Se realizó el código de programación para un sistema con 2 pulsadores de entrada (D0, D1), un zumbador en el pin E1 y 3 displays de salida.
  • Se identificó el funcionamiento de cada uno de los comandos en el programa PIC C Compiler
  • Utilizamos sub rutinas,como: descomp_entero, que descompone el numero entero en 3 cifras, visualizar, el cual displaya en forma multiplexada, y BIP que emite un pitido.
  • Se utilizó el comando “For” para realizar la instrucción del funcionamiento del “pin D1”, el cual tenía que disminuir de 1 en 1 solo 5 veces con solo presionarlo una vez.
  • Realizamos las simulaciones del código de programación en el  microcontrolador  PIC 16F877a para visualizar mejor los valores del display.



INTEGRANTES

1.      Mendiola Espinoza Gilmar Jose

2.      Ticona Condori Nicol Stephanie



Pruebas de Mikroingenieria


Jose Mendiola








Nicol Ticona