Está en la página 1de 8

UNIVERSIDAD MAYOR REAL Y PONTIFICIA DE SAN FRANCISCO

XAVIER DE CHUQUISACA
FACULTAD DE INGENIERIA MECANICA, ELECTRICA, ELECTRÓNICA
CARRERA DE INGENIERIA ELECTRÓNICA

CONTROL DEL ENCENDIDO Y APAGADO DE OCHO LED’S

Universitarios: Benítez Calani Jhonatan Alan

Cárdenas Cardozo Michael Gabriel

Orta Pérez Sergio José

Materia: Microcontroladores

Número de Practica: 1

Fecha: 19-04-2024

Nombre del Docente: Ing. Hernán Acebey


Sucre – Bolivia
CONTROL DEL ENCENDIDO Y APAGADO DE OCHO LED’S

1. Resumen.
- Objetivo del Laboratorio. – El objetivo de este laboratorio es diseñar e implementar
un sistema de control para encender y apagar 8 LEDs utilizando un microcontrolador. El
propósito principal es familiarizarse con el proceso de programación de un
microcontrolador para controlar dispositivos externos y comprender los fundamentos
de la interacción entre hardware y software en sistemas embebidos. Además, se busca
adquirir experiencia práctica en la conexión de componentes electrónicos básicos,
como LEDs y resistencias, al microcontrolador, así como en la redacción y ejecución de
programas simples para controlar la salida de estos dispositivos.
- Metodología Utilizada:
Selección de Componentes:
8 leds junto con las resistencias adecuadas para limitar la corriente a través del led.
Se utilizo el microcontrolador PIC16F628A, debido a que tiene los pines suficientes
para realizar las tareas del control de leds y es de precio económico.
Diseño del Circuito:
Se diseño un circuito simple que consta de 8 leds conectados a puertos digitales del
microcontrolador, cada uno con su resistencia limitadora.
Programación del Microcontrolador:
Se utilizo el MPLAB X IDE para escribir el código fuente necesario para controlar los 8
leds.
- Resultados Principales. – Se logro controlar los 8 leds en las diferentes secuencias.
- Conclusiones. – Este proyecto ha proporcionado la oportunidad de poder empezar en
la programación, también como parte de adquirir experiencia práctica en el diseño y
programación del microcontrolador.
2. Introducción.
- Contexto General. – En el ámbito de la electrónica y la informática, los
microcontroladores desempeñan un papel fundamental en una amplia gama de
aplicaciones, desde dispositivos domésticos hasta sistemas industriales y dispositivos
médicos. Estos dispositivos integrados, que combinan un procesador, memoria y
periféricos de entrada/salida en un solo chip, son esenciales para el control y la
supervisión de sistemas en tiempo real.
Uno de los proyectos más comunes en el aprendizaje de microcontroladores es el
control de LEDs, debido a su simplicidad y versatilidad para ilustrar los conceptos
fundamentales. En este contexto, el presente informe se centra en el diseño y la
implementación de un sistema de control para encender y apagar 8 LEDs utilizando un
microcontrolador.
- Objetivos del Laboratorio. – El objetivo principal del proyecto es de controlar los 8
leds y programarlo tal que funcione en diferentes secuencias, esto se lograra
empezando de lo más básico como es el diseño, armado y programación del
microcontrolador.
- Justificación. – El laboratorio del control de 8 leds es relevante porque en principio nos
induce a lo que es el campo de la programación, asi como también la selección de
componentes como el microcontrolador y el aprendizaje de los distintos lenguajes de
programación que existen para los PICs.
3. Marco Teórico.
- Microcontroladores PIC. – El microcontrolador PIC16F84A ha sido seleccionado para
este proyecto debido a varias razones:
- Disponibilidad: El PIC16F84A es uno de los microcontroladores más conocidos y
utilizados en el mundo de la electrónica. Es ampliamente disponible en el mercado y
cuenta con un gran soporte de desarrollo, lo que facilita su adquisición y la obtención
de recursos educativos y de referencia.
- Simplicidad y facilidad de uso: El PIC16F628A es conocido por su diseño simple y su
fácil programación. Esto lo hace ideal para proyectos educativos y de aprendizaje,
especialmente para aquellos que están comenzando en el campo de los
microcontroladores.
- Amplia gama de recursos: A pesar de su simplicidad, el PIC16F628A ofrece una amplia
gama de recursos y periféricos que son suficientes para muchos proyectos básicos y
medianamente complejos. Su arquitectura incluye puertos de entradas/salidas
digitales, temporizadores entre otros, lo que lo hace versátil para una variedad de
aplicaciones.
- Herramientas de Programación. – Existen diferentes softwares de programación, para
este utilizamos lo que es el MPLAB X IDE, debido a la simplicidad de programa como
también es el programa recomendado por MICROCHIP por sus distintos compiladores.
- Herramientas de Hardware. – Se utilizo el PICkit 3 como herramienta, ya que es el mas
popular en el mercado, como también su versatilidad con diferentes
microcontroladores PIC.
- Componentes Utilizados. – Se utilizo los siguientes componentes:
 PIC16F84A.
 LEDs.
 Resistencias.
 Cristal Oscilador.
 Capacitores.
 Fuente de Alimentación.
4. Metodología.
- Diseño del Circuito. –

ALIMENTACIÓN MICROCONTROLADOR
RESISTENCIAS LEDS
5V PIC 16F84A

CRISTAL
OSCILADOR
- Simulación del Circuito. –

- Programación. –
- Procedimiento Experimental. – Se realizo el armado del circuito tal como en la
simulación, posterior a eso se hizo la programación en lenguaje C en el software
MPLAB X IDE y se paso a guardar el programa en el microcontrolador PIC16F628A con
el programa MPLAB X IPE, este proceso se realizo 3 veces para cumplir con las 3
secuencias pedidas .
5. Resultados.
- Funcionamiento del Circuito. – El circuito cumple con la orden de laboratorio, que
pide controlar los 8 leds en distintas secuencias.
- Observaciones. – La configuración de pines en el programa es importante, es asi que
podemos decir de que manera en general trabajara el microcontrolador en este caso
como WTDE(watchdog timer), MCLR(reset), FOSC(tipo de oscilador), entre otros.
- Fotografías y Capturas de Pantalla. –
6. Discusión.
- Análisis de Resultados. – Los resultados son los esperados, no existe ninguna falla o
error.
- Problemas Encontrados. – Fallas en la programación que fueron solucionados con la
ayuda de la inteligencia artificial.
7. Conclusiones.
- Logros de Laboratorio. – Se logro que funcione el circuito tal y como se había pedido,
se cumplieron los objetivos como el diseño y armado del circuito, también se aprendió
el proceso de programación y cargado de código al microcontrolador.
- Aplicaciones Prácticas. – Con esta base y un poco más de practica llegaremos a
desarrollar proyectos más grandes y complejos.
-
8. Referencias.
- https://chat.openai.com/share/7168a107-b375-469e-a268-98d27ed89e0c
9. Anexos.
- Códigos Fuente Completos. –
Código 1.
#include <xc.h>
#define _XTAL_FREQ 4000000 // Frecuencia de oscilación del microcontrolador (en Hz)
// Definición de pines para los LEDs
#define LED_TRIS TRISB
#define LED_PORT PORTB
// Definición del vector para los patrones de luces
unsigned char patrones_luces[][14] = {
{0b10000000, 0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100,
0b00000010, // De izquierda a derecha
0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000,
0b01000000} // De derecha a izquierda
};
void main(void) {
unsigned char i; // Índice para recorrer los elementos del vector
unsigned char patron_actual = 0; // Índice del patrón de luces actual
// Configura todos los pines del puerto B como salidas
LED_TRIS = 0b00000000;
while(1) {
// Muestra el patrón de luces actual en los LEDs
for (i = 0; i < 13; i++) {
LED_PORT = patrones_luces[patron_actual][i];
__delay_ms(150); // Espera un tiempo para que se vea el patrón de luces
}
// Desplaza al siguiente patrón de luces
patron_actual++;
// Verifica si se alcanzó el final del vector de patrones de luces
if (patron_actual >= sizeof(patrones_luces) / sizeof(patrones_luces[0])) {
patron_actual = 0; // Reinicia al primer patrón de luces
}
}
}
Código 2.
#include <xc.h>
#define _XTAL_FREQ 4000000 // Frecuencia de oscilación del microcontrolador (en Hz)
#define LED_TRIS TRISB
#define LED_PORT PORTB
void main(void) {
unsigned char numero_binario; // Variable para almacenar el número binario
unsigned char i;
LED_TRIS = 0b00000000; // Configura los pines del puerto B como salidas
while(1) {
// Enciende los LEDs con el patrón correspondiente al número binario
for (numero_binario = 0; numero_binario < 256; numero_binario++) {
LED_PORT = numero_binario;
__delay_ms(100); // Espera un tiempo para ver el estado de los LEDs
}
}
}

Código 3.
#include <xc.h>
#define _XTAL_FREQ 4000000 // Frecuencia de oscilación del microcontrolador (en Hz)
// Definición de pines para los LEDs
#define LED_TRIS TRISB
#define LED_PORT PORTB
// Definición del vector para los patrones de luces
unsigned char patrones_luces[][13] = {
{0b00011000, 0b00111100, 0b00100100, 0b01100110, 0b01000010, 0b11000011,
0b10000001, // Del centro a los costados
0b11000011, 0b01000010, 0b01100110, 0b00100100, 0b00111100, 0b00011000} //
De los costados al centro
};
void main(void) {
unsigned char i; // Índice para recorrer los elementos del vector
unsigned char patron_actual = 0; // Índice del patrón de luces actual
// Configura todos los pines del puerto B como salidas
LED_TRIS = 0b00000000;
while(1) {
// Muestra el patrón de luces actual en los LEDs
for (i = 0; i < 12; i++) {
LED_PORT = patrones_luces[patron_actual][i];
__delay_ms(150); // Espera un tiempo para que se vea el patrón de luces
}
// Desplaza al siguiente patrón de luces
patron_actual++;
// Verifica si se alcanzó el final del vector de patrones de luces
if (patron_actual >= sizeof(patrones_luces) / sizeof(patrones_luces[0])) {
patron_actual = 0; // Reinicia al primer patrón de luces
}
}
}
- Datos Adicionales. -

También podría gustarte