viernes, 25 de octubre de 2019

LABORATORIO NRO. 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:
Display de 7 segmentos de cátodo común:

Es un componente electrónico muy utilizado para representar visualmente números y letras, es de gran utilidad dado su simpleza para implementar en cualquier proyecto electrónico. Está compuesto por 7 dispositivos lumínicos (Led) que forman un “8”, de esta forma controlando el encendido y apagado de cada led, podremos representar el numero o letra que necesitamos.

En los 7 segmentos de Cátodo Común, el punto circuital en común para todos los Led es el Cátodo (Gnd), cero volt. Para controlar el número que queremos mostrar en el display, nos basamos en la siguiente tabla de verdad dado el caso que corresponda.


Tipos de variables:
   La variables se utilizan para nombrar posiciones de memoria RAM. Se deben      declarar obligatoriamente antes de utilizarlas, para ello se debe indicar el           nombre y el tipo de dato que se utilizará. Se definen de la siguiente manera.

BÁSICO
Sin embargo  el compilador CCS también admite los siguientes tipos de datos definidos en el estándar C y que son los que normalmente se utilizan a la hora de programar:
*Por defecto o equivalencia
Todos los tipos excepto float son por defecto sin signo, aunque pueden llevar el especificador  unsigned ó signed y su rango de valores será el que corresponda a su tipo básico.

El nombre de la variable no puede ser una palabra clave, ya que está reservada por el compilador para realizar unas funciones determinadas y los caracteres que podemos utilizar son las letras: a-z y A-Z (ñ o Ñ no está permitida), los números: 0-9 y el símbolo de subrayado _. Además hay que tener en cuenta que el primer carácter no puede ser un número.
  
ENTERO:
Se usan para representar números enteros que pueden ser tanto positivos como negativos. 

Los tipos de datos enteros son: short, int, long y long long, cada uno representando un número entero de un tamaño o capacidad determinado. Según el compilador y la plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en memoria.

Además, se hace la distinción de si el entero es con signo (signed) o sin signo (unsigned). En caso de que no se declare si es con signo o sin signo, se toma con signo.

Algunos ejemplos de declaraciones de enteros:

  int a;
  unsigned int a;
  signed long a;
  signed long long a = 10000000;

ENTERO CON SIGNO:
Representa a los datos que abarcan los valores tanto en positivos como negativos: del -2147483648 al 2147483647. Esto en caso se disponga de 4 bytes de memoria, si se quiere almacenar el número. 

ENTERO SIN SIGNO:
Representa un dato entero que sólo puede ser positivo, definido usando  unsigned char, unsigned int, unsigned short, unsigned long o unsigned long long. Entre los valores:  del 0 al 4294967295. Esto en caso se disponga de 4 bytes de memoria, si se quiere almacenar el número. 

NÚMEROS FLOTANTES DE PUNTOS O REALES:
Representan a los números reales (números fraccionarios), definido usando el float y el double, que son 4 bytes y 8 bytes respectivamente. Se les utiliza tanto para representar números decimales, como números enteros con un orden de magnitud muy grande.

La forma de declarar una variable flotante es escribiendo en una línea uno de los tipos de datos flotantes y a continuación el nombre de la variable y tal vez algún valor que se les quiera dar.

Algunos ejemplos:

  float a;
  double a = 1e23;
  double a = 3.1416;
  float a = 4e-9;
  double a = -78;


Hay que tener en cuenta que los valores flotantes son más convenientes para algunas aplicaciones, pero también hay casos en los que se prefieren los enteros. Esto se debe a que los números flotantes no necesariamente tienen soporte de hardware, en particular en las plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.

CARACTERES:
Los caracteres se representan utilizando el tipo char, que tiene sólo 1 byte de tamaño. Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del sistema. El tipo char es también un tipo entero, ya que puede tomar valores de 0 a 255. Por lo tanto también puede ser signed o unsigned.

En cuanto a la forma de declarar variables de tipo char es la misma forma que con los otros tipos.

Algunos ejemplos:
  char a;
  char a = 's';
  unsigned char a = 48;

En muchas situaciones se utiliza el tipo char para almacenar números pequeños, ya que ocupa en memoria sólamente un byte.

"Cada tipo de variable define sus límites. A  char solo puede oscilar entre -128 y 127, mientras que a   long puede oscilar entre -2,147,483,648 y 2,147,483,647 (long  y otros tipos de datos numéricos pueden tener otro rango en diferentes computadoras, por ejemplo, desde -9,223,372,036,854,775,808 hasta 9,223,372,036,854,775,807 en una computadora de 64 bits)."


6. TAREA GUIADA DENTRO DEL LABORATORIO:
1.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;
int = 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(true)//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. TAREA A SER EVALUADA:
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:
a. Al empezar el programa, se debe mostrar el número 500.
b. Al presionar D0, el número mostrado se debe incrementar en 5 unidades, además debe zonar un pitido.
c. Al presionar D1, el número mostrado debe disminuir 5 unidades pero de de 1 en 1 cada segundo.
d. 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. EVIDENCIA DE TRABAJO EN LABORATORIO:


Link del video: https://youtu.be/D6tesEcnlhY

9. OBSERVACIONES:
  • Al simular la programación en el entrenador de Proteus, no se obtenía el mismo resultado de visualización a como se tenía en el módulo físico.
  • Pese a aumentar el porcentaje de la resistencia variable en el entrenador Proteus a su 100% o valores próximos, los segmentos de cada dígito del display no se lograban ver de la manera correcta.
  • El código que se implementó en físico, mostraba el funcionamiento propio de la programación realizada en este laboratorio.
10. CONCLUSIONES:
  • Se conoció más de las funciones de las que tiene control un PIC 16F877A, en este caso se enfocó en la programación de conteo visualizado mediante displays de 7 segmentos, mostrando tres dígitos (centenas, decenas y unidades) y su previa catalogación del conexionado de sus pines en el PIC.
  • Para obtener los datos calculados y llevarlos al lenguaje de la activación de los displays, debemos descomponer el dato que leemos; en este caso centenas, decena y unidades, empleando una serie de ecuaciones sucesivas y reemplazo de valores para obtener el dato de cada dígito.
  • Para mostrar los datos obtenidos mediante los cálculos realizados, se crea la función visualizar que tomará los resultados obtenidos en los cálculos de la función anterior.
  • Los retardos que se implementaron en la función de visualizar son mínimos ya que se requiere tener una muestra constante, de modo tal no es perceptible al ojo humano, cuando se realiza este cambio o parpadeo; sin embargo, si se le incrementa el valor de retardo podremos notar estos cambios.

sábado, 19 de octubre de 2019

LABORATORIO NRO. 9

MICROCONTROLADORES

Laboratorio Nº 9

Programación básica 

con bucle de control

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:

● Manejo de puertos de forma grupal e independiente para manejo de luces
● Programación de sonidos mediante subrutinas.
● Creación de Subrutinas mediante funciones.
● Declaración de variables enteras.

3. CONTENIDOS A TRATAR: 
En este laboratorio se desarrollará:
● Control de puertos como entradas y/o salidas
● Generación de salida pulsante
● Bucles de control


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:
● Programa CCS Compiler:
CCS C Compiler / PIC C Compiler es un compilador C muy optimizado, completo, bastante sencillo y fácil de manejar. Es un amplio conjunto de herramientas donde se encuentran todas esas utilidades necesarias para la optimización del código y para gestionar todos los aspectos del desarrollo de software.

Esta herramienta contiene:

•  Operadores estándar del lenguaje de programación C.
•  Una amplia biblioteca repleta de funciones específicas para registros de PIC.
•  Incluye más de 307 funciones integradas, simplifican el proceso de acceso al hardware, obteniendo siempre una producción eficiente y un código en lenguaje de programación C muy optimizado.Destacando: 
    •  Temporizadores y módulos PWM.
    •  Convertidores A / D.
    •  Controladores LCD.
    •  Memoria externa bus.
    •  Datos on-chip EEPROM.
    •  Manejo inteligente de interrupciones, entre otras muchas.

● Entrenador de PICS:
Uno de los microcontroladores más conocidos y populares pertenecen a Microchip, debido a su bajo costo, herramientas e información abundante en Internet, actualización continua de su entorno de programación MPLAB, herramientas de software de terceros para programación en C o Basic, fácil programación y robustez. La tarjeta de desarrollo HFK-010U a sido diseñada para trabajar con los microcontroladores PIC de diferentes tamaños, desde 8 pines para las series PIC10F y PIC18F, hasta PICs de las series PIC18F de 40 pines, cuenta con programador en circuito mediante puerto USB, lo que facilitará y ahorrará tiempo al usuario cuando realice su proyecto, este programador es compatible con PICKIT2 de Microchip, también pudiendo usarse el programador desde MPLAB. 



BUCLE DE CONTROL:

Es un sistema en el que se repite un proceso las veces que se le programe o infinitas veces, eso ya dependerá de la forma en la que se quiera programar o utilizar, un ejemplo fácil se puede ver en los semáforos ya que repite el mismo proceso indefinidamente.


 

Los códigos más usados en lo que respecta a bucles de control son los siguientes:

IF:

Se usa para tomar decisiones, este evaluá básicamente una operación lógica, es decir una expresión que de como resultado True o False, y ejecuta la pieza de código siguiente siempre y cuando el resultado sea verdadero. Es decir, significa, Si se cumple la expresión condicional se ejecuta el bloque de sentencias seguidas.




ELSE IF:

Es una combinación de "if" y "else"; del mismo modo que "else", extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresión "if" original se evalúe como FALSE. Sin embargo, a diferencia de "else", esa expresión alternativa sólo se ejecutará si la expresión condicional del "else if" se evalúa como TRUE.


WHILE:

Una sentencia que se ejecuta mientras la condición se evalúa como verdadera. Para ejecutar múltiples sentencias dentro de un bucle, utiliza una sentencia block ({ ... }) para agrupar esas sentencias.



FOR:

La sentencia for (réplica del lenguaje C) es una sentencia que implementa un bucle, es decir, que es capaz de repetir un grupo de sentencias un número determinado de veces.



6. TAREA GUIADA DENTRO DEL LABORATORIO:

1. 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 al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT      // Configuración básica de los fusibles

int salida=1;                    // Declaramos variable "salida" como entera y valor UNO
int variable=0;

void main ()                     // FUNCION PRINCIPAL del programa, indispensable
{
   output_c(0b00000000);         // Sacamos por el puerto C el valor de salida (00000000)
                                 // Este comando se realiza por única vez
   while (true)                  // Bucle de REPETICION infinita por valer "true"
   {
      IF (!input(PIN_A5))        // SI detectamos 0 voltios en PIN A5 (presionando pulsador)
      {
         output_c(salida);       // Sacamos por el puerto C el valor de salida (00000001)
         delay_ms(500);          // "Congela el tiempo" durante 500 ms para evitar falsos disparos
      }
     
      IF (!input(PIN_D0))        // SI detectamos 0 voltios en PIN D0 (presionando pulsador)
      {
         output_high(PIN_C5);    // Pone a "1" el pin C5 (envía 5 voltios)
         output_bit(PIN_C4, 1);  // Pone a "1" el pin C4 (envía 5 voltios)
         output_toggle (PIN_C1); // Invierte el valor del PIN C1 (si estaba en 0, pasa a 1 y viceversa)
         delay_ms(500);          // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
      }
     
      IF (!input(PIN_D1))        // SI detectamos 0 voltios en PIN A5 (presionando pulsador)
      {
         salida = salida << 1;   // Recorremos el contenido de "salida" una posición a la izquierda
         output_c(salida);       // Sacamos por el puerto C el valor de salida (00000001)
         variable = 1;           // asignamos el valor "1" a variable
         delay_ms(500);          // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
      }
     
      IF (!input(PIN_E2) && (variable == 1))   // SI detectamos 0 voltios en PIN E2 variable vale 1....
      {
         output_bit(PIN_C5,0);    // Pone a "0" el pin C0 (envía cero voltios o GND)
         variable = 0;            // asignamos el valor "0" a variable
         delay_ms(500);          // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
      }
     
   }
   }


7. TAREA A SER EVALUADA:

Realice las modificaciones que se sugieren al programa, experimente y responda las preguntas planteadas

1. Se tiene un sistema con 3 pulsadores (A5, D0, D1) de entrada y 8 leds de salida (Puerto C): Programar para que se comporte de la siguiente manera:

a. Al iniciar el programa todos los leds deben permanecer apagados.
b. Al presionar A5, debe encender C0, al volver a presionar, debe encender C1 y así sucesivamente.
c. Al presionar D0, los deben encender sucesivamente pero en sentido inverso. d. La entrada D1 debe funcionar como un habilitador, es decir, por defecto el sistema está habilitado y funcionará como lo antes mencionado. Si presiono D1, el sistema quedará “congelado” y nada funcionará. Si vuelvo a presionar D1, el sistema nuevamente queda habilitado.


2.Describa el funcionamiento del programa previamente diseñado, demuestre funcionamiento mediante simulación y en tarjeta entrenadora. Grabe en video para evidencia.

 Código modificado:





8. EVIDENCIA DE TRABAJO EN LABORATORIO:


Link del video: https://youtu.be/RIg2k-xQkqs
9. OBSERVACIONES:

  • El entrenador en Proteus solo presentaba cuatro pulsadores disponibles, por lo cual se realizó ciertas adaptaciones en el código (sólo el PIN_A5 por PIN_E0). 
  • En cuanto al programa Proteus, se podía cambiar el nombre de los pulsadores, mas después de compilar el código y seleccionado en el PIC entrenador, no se daba el funcionamiento programado. Por tal motivo se hizo las adaptaciones correspondientes de los mismos en el código.
  • En el programa es necesario añadirle la función de delay_ms, ya que ayuda a mantener el tiempo para evitar falsos pulsos de los botones/pulsadores. Se le puede configurar un "retardo" de medio segundo (500 ms) o un segundo (1000) para que no se tenga un error de lectura en del estado de cada pulsador.
10. CONCLUSIONES:
  • Con las funciones de la librería fuses :HS ("High Speed"),NOPROTECT y NOWDT ("No watch dog") declarábamos lo que habilitaríamos en el programa; en caso del primero es en base a la velocidad del cristal de 20 MHz que poseemos en el módulo, segundo decidimos no proteger nuestro programa de tal manera que se podría dar lectura de ello por medio de otro dispositivo de donde no provino la programación y por último, no perro guardián ya que no requerimos de una retro-alimentación de lo que sucede en el PIC. 
  • La declaración hecha en décima línea: output_c(0b00000000), indica que el modo de programación será en binario => 0b y los siguientes 8 dígitos hacen referencia a los bits. Además da paso al valor de salida que se grabará en el PIC.
  • Se pueden movilizar datos por medio de la función "salida = salida << 1" o "salida = salida >> 1", los símbolos indican el sentido de dirección y el número que le sigue es la cantidad de recorrido.
  • Respecto a lograr la inhabilitación de las entradas, se tuvo que declarar una variable "int habilitador=1" siendo su valor inicial de 1, se emplea la condición IF citando en la la condición "habilitador = ! habilitador" que el valor de la variable habilitador será negado (conmutación de estado), interpretando de una manera similar a la función "toggle".

viernes, 11 de octubre de 2019

LABORATORIO NRO. 8

MICROCONTROLADORES

Laboratorio Nº 8

Herramientas de Programación 

de Hardware y Software

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:



● Listar las partes internas generales de un microcontrolador. 

● Identificar las funciones generales de un microcontrolador.

● Introducción a la programación en PIC C Compiler.

● Cómo utilizar el Entrenador.



3. CONTENIDOS A TRATAR: 


Datasheet para el microcontroladores de gama media de Microchip. Estructura interna, memorias, CPU, ALU, W.



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:

Programa CCS Compiler:

CCS C Compiler / PIC C Compiler es un compilador C muy optimizado, completo, bastante sencillo y fácil de manejar. Es un amplio conjunto de herramientas donde se encuentran todas esas utilidades necesarias para la optimización del código y para gestionar todos los aspectos del desarrollo de software.

Esta herramienta contiene:

•  Operadores estándar del lenguaje de programación C.
•  Una amplia biblioteca repleta de funciones específicas para registros de PIC.
•  Incluye más de 307 funciones integradas, simplifican el proceso de acceso al hardware, obteniendo siempre una producción eficiente y un código en lenguaje de programación C muy optimizado.Destacando: 
    •  Temporizadores y módulos PWM.
    •  Convertidores A / D.
    •  Controladores LCD.
    •  Memoria externa bus.
    •  Datos on-chip EEPROM.
    •  Manejo inteligente de interrupciones, entre otras muchas.

Entrenador de PICS:
Uno de los microcontroladores más conocidos y populares pertenecen a Microchip, debido a su bajo costo, herramientas e información abundante en Internet, actualización continua de su entorno de programación MPLAB, herramientas de software de terceros para programación en C o Basic, fácil programación y robustez. La tarjeta de desarrollo HFK-010U a sido diseñada para trabajar con los microcontroladores PIC de diferentes tamaños, desde 8 pines para las series PIC10F y PIC18F, hasta PICs de las series PIC18F de 40 pines, cuenta con programador en circuito mediante puerto USB, lo que facilitará y ahorrará tiempo al usuario cuando realice su proyecto, este programador es compatible con PICKIT2 de Microchip, también pudiendo usarse el programador desde MPLAB. 




Pantalla LCD:
Es una pantalla de cristal líquido o LCD (Liquid Crystal Display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. 



El mas conocido de los LCDs de caracteres es de la fabrica Hitachi (HD44780), obviamente existen mucha variedad en cuanto a compatibles con este modelo, así que cualquiera compatible a este tipo se puede usar. El LCD se puede manejar en modo de 4 BIT u 8 BIT, siendo mas usual el primero, ya que necesita menos pines del microcontrolador. También existe la posibilidad de usar el LCD con el puerto B o puerto D, debajo del LCD existen 2 dipswitch con los cuales se hace la selección del puerto. 

PIC16F877A:
Es un microcontrolador de MicroChip Technology familia a la cual se le denomina PIC, fabricado por tecnología CMOS. Tiene ventajas como su consumo de potencia que es muy bajo y ademñas es completamente estático (el reloj puede detenerse y los datos de la memoria no se pierden). Tiene una memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje, pues permite reprogramarlo nuevamente sin ser borrado con anterioridad.

  • Memoria de Programa de 2Kwords.
  • Memoria RAM con 224 registros.
  • Memoria EEPROM de 128 bytes.
  • Comparadores analógicos.
  • USART (puerto serie) compatible con nuestro módulo FT232 para USB.
  • Oscilador interno de 4MHz, externo hasta 20MHz.
  • 2 Timer de 8bits.
  • 1 Timer de 16 Bits.
  • 32 instrucciones.
  • Módulo de PWM.
  • Módulo de CCP.
  • Módulo ADC de 10 bits.
6. TAREAS GUIADAS DENTRO DEL LABORATORIO:


1.    Asegúrese de tener instalado en su computadora los siguientes programas: ISIS PROTEUS, PIC C COMPILER y PICKIT2.
2.  Abra el compilador CCS Compiler y transcriba el código mostrado en el link. Luego descargue dicho programa hacia el PIC utilizando PICKIT2.


CÓDIGO A TRANSCRIBIR:
#include <16f877a.h>          // Incluimos archivo con PIC a utilizar
#use delay (clock=20M)        // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT   // Configuración básica de los fusibles

void main ()                  // FUNCION PRINCIPAL del programa, indispensable
{                            // Si la función tiene más de una instrucción, va entre llaves  
   while (true)               // Bucle de REPETICION, si es "true", significa repetición infinita
   {
      output_high(PIN_C3);    // Pone a "1" el pin C3 (envía 5 voltios)
      delay_ms(200);          // "Congela el tiempo" durante 200 ms
      output_low(PIN_C3);     // Pone a "0" el pin C3 (envía cero voltios o GND)
      delay_ms(200);          // "Congela el tiempo" durante 200 ms
   }                         // Este proceso se repite indefinidamente por estar dentro de
                              // while(true)
}



3.    Compile el programa y utilice los archivos generados hex y cof para realizar la simulación del proyecto anterior.
4.    Transfiera el archivo generado HEX al entrenador utilizando el programa PICKIT2 y verifique el correcto funcionamiento del mismo.

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

1. Simule el programa en ISIS PROTEUS utilizando el archivo COF y depure el mismo paso a paso.



                
2. Modifique el programa para diseñar un “semáforo” con 3 salidas (leds) de tal manera que el led ROJO encienda durante 10 segundos, luego encienda el led AMBAR durante 3 segundos y finalmente encienda el led VERDE durante 8 segundos.





3. Reemplace la instrucción output_high(PIN_C0); por output_bit(PIN_C0, 1); ¿Funciona igual?

  • Por medio de la simulación se aprecia, que se opera la misma ejecución pese a haber cambiado la instrucción, la modificación hecha indica que el dato bit que es del led C3 estará en un estado "1" o activo.



4. Elimine o comente la instrucción “while(true)”; ¿qué sucede?

  • Al eliminar esta instrucción, la ejecución se realiza con normalidad pero, en este caso solo se ejecuta una sola vez.

5. Presione el pulsador de RESET, ¿qué sucede?


  • El RESET hace volver a la instrucción a su estado inicial, sin embargo de la misma manera, sólo se ejecuta una vez.



8. EVIDENCIA DEL LABORATORIO (VIDEO):




Link del vídeo: https://youtu.be/Zcax9Mz2cOU

CURSO DE MIKROINGENIERÍA:

Se realizó el cuestionario del primer laboratorio en la plataforma:

                                   








Se completaron todas las preguntas del mismo.

9. OBSERVACIONES:

  • El módulo HFK-010U cuenta con una gran variedad de componentes que lo integran, brindando del mismo modo un alto campo para poder realizar múltiples aprendizajes y proyectos.
  • Debemos considerar siempre las especificaciones de las hojas de datos de los mismos componentes para realizar el conexionado correcto.
  • Respecto a la programación, está dotado de una interfaz fácil de manejar y programar, siendo más prácticas las funciones.

10. CONCLUSIONES:


  • La interfaz de programación se desarrolló por medio de la comunicación de dos software (PIC C Compiler y PicKit2), siendo la primera para realizar el programa y sus respectivas modificaciones; para luego compilar, comunicar y ejecutar el mismo con el módulo usando el PicKit.
  • Se tuvo conocimiento que al momento de compilar la programación se generan dos archivos que son relevantes en el desarrollo de este laboratorio; siendo el archivo ".hex" para dar la escritura en el microcontrolador y tanto el ".hex" como ".cof" se podían emplear en el programa ISIS Proteus, resaltando la diferencia que con el ".hex" únicamente se podría visualizar el estado del módulo y en cambio la otra si te permitía simular el proceso en virtual.
  • Se empleó un solo comando muy conocido, como lo es el "while", cuya función era generar un bucle de las instrucciones que estuviesen bajo su poder o en otras palabras, que estuviesen entre las llaves respectivas.
  • Se realizó el funcionamiento de las modificaciones propuestas en muestra operativa de los Led's, demostrando la correcta citación propuesta.