Está en la página 1de 6

UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

SALIDAS DIGITALES CON EL PIC 16F877A


Práctica 2

Integrante 1 (Arial, 11 Pts, centrado)


e-mail: integrante1@institución (quitar hipervínculo)
Caizaluisa Patiño Bernardo Jose
e-mail: bcaizaluisa@est.ups.edu.ec

RESUMEN: Esta práctica de electrónica se centró en el


uso del microcontrolador PIC 16F877A para controlar Frecuencia de Operación: Puede operar a
una serie de LEDs mediante distintas entradas. Se frecuencias de hasta 20MHz, lo que proporciona
comenzó con la activación de un LED al presionar un flexibilidad en términos de velocidad de procesamiento.
botón, apagándolo al soltarlo. Luego, se expandió para
encender ocho LEDs individualmente, cada uno Voltaje de Funcionamiento: El rango de voltaje de
controlado por su propio interruptor. Finalmente, se operación es de 4,2 a 5,5 voltios. Es crucial no exceder
implementó una secuencia de encendido de LEDs que los 5,5 voltios para evitar daños permanentes al
podía ser iniciada por dos botones, permitiendo efectos dispositivo.
visuales distintos. En conjunto, esta práctica brindó
habilidades fundamentales en programación y control de Oscilador: A diferencia de algunos otros
periféricos, esenciales para proyectos que requieren microcontroladores, el PIC 16F877A no posee un
control preciso de dispositivos y sensores. oscilador interno. Esto significa que requiere un cristal
externo o un circuito de oscilador para establecer su
frecuencia de operación.
PALABRAS CLAVE: PIC 16F877A, microcontrolador,
LEDs, botón. Corriente Máxima por Puerto: Cada puerto del
microcontrolador puede absorber o generar hasta
aproximadamente 100 mA de corriente. Esto implica que
1. OBJETIVOS el límite de corriente por pin GPIO es de 10
miliamperios.
1.1. OBJETIVO GENERAL:
Encapsulado: Se encuentra disponible en diferentes
presentaciones, incluyendo PDIP de 40 pines, PLCC de
Implementar en el microcontrolador PIC entradas y 44 pines, TQFP de 44 pines y QFN de 44 pines.
salidas digitales
Además, el dispositivo cuenta con módulos de
1.2. OBJETIVOS ESPECIFICOS: temporizadores de 8 y 16 bits, así como módulos de
captura y comparación. También dispone de puertos
 Desarrollar en mikroC el código para control de seriales y paralelos, junto con cinco puertos de
salidas digitales en el PIC. entrada/salida.
 Simular en proteus los circuitos diseñados.
Proporcionan una solución entre computadoras de
 Implementar en protoboard los circuitos
un solo chip y el uso de chips lógicos y temporizadores
diseñados.
separados en una aplicación. Son compatibles con una
amplia gama de los dispositivos más populares que se
utilizan en la actualidad, y se agregan nuevos
2. MARCO TEÓRICO dispositivos mensualmente. La compatibilidad con PIC
incluye PIC10xxx, PIC12xxx, PIC16xxx, PIC17Cxxx,
El microcontrolador PIC 16F877A es un dispositivo PIC18xxx, PIC24xxx, dsPIC y la serie PIC32xxx más
versátil y ampliamente utilizado en aplicaciones de reciente (Salvatierra, 2012).
control y automatización. A continuación, se presentan
algunas de sus características y especificaciones clave:

Conjunto de Instrucciones: El PIC 16F877A cuenta


con un conjunto de 35 instrucciones, lo que lo hace
adecuado para una variedad de aplicaciones. Estas
instrucciones permiten realizar operaciones lógicas,
aritméticas y de control de flujo.

1
UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

Figura 1. Programador de PIC, Fuente: (Technology Figura 3. Diseño electrónico para encendido de un Led
Microchip, 2022). empleando un botón.

Por otro lado, el compilador mikroC PRO para PIC Para encender un LED utilizando un
facilita la programación en lenguaje C estándar. Los microcontrolador PIC y un botón (o pulsador),
proyectos en mikroC PRO están compuestos por necesitamos configurar un puerto digital como entrada
archivos interrelacionados, y el proceso de desarrollo para el botón y otro como salida para el LED. Cuando el
implica la creación del proyecto, la escritura del código botón se presiona, se debe enviar una señal de voltaje
fuente en C y la generación del código ejecutable lógico alto al puerto del LED para encenderlo.
(.HEX).
Procedimiento:

Conexiones físicas:

Conecta el pin del botón al puerto digital que has


elegido en el microcontrolador PIC.

Conecta un resistor de pull-down (10k ohmios es


común) entre el pin del botón y tierra (GND) para evitar
que el pin flote cuando el botón no está presionado.

Conecta el pin del LED al puerto digital que has


Figura 2. Software MIKRO C, Fuente: (Technology elegido.
Microchip, 2022).
Configuración del puerto:
3. MATERIALES Y EQUIPO
En el código, configura el puerto del botón como
 PIC16F877A entrada y el puerto del LED como salida.
 CRISTAL/ OSCILADOR
TRISB0 = 1; // Configura RB0 (donde está conectado
 LEDS el botón) como entrada
 PULSADORES
TRISC0 = 0; // Configura RC0 (donde está conectado
 RESISTENCIAS
el LED) como salida
 PROGRAMADOR DE PIC
 COMPUTADORA Bucle principal:
 PROTOBOARD
En el bucle principal, verifica si el botón está
presionado. Si lo está, enciende el LED.
4. DESARROLLO Y PROCEDIMIENTO
while (1) {
if (RB0 == 1) { // Si el botón está presionado (RB0
1. Encender el led de un microcontrolador PIC en alto)
utilizando un botón o pulsador. RC0 = 1; // Enciende el LED (RC0 en alto)
} else {
RC0 = 0; // Apaga el LED (RC0 en bajo)
}
}

2. Controlar varios leds empleando entradas


digitales con el microcontrolador PIC

2
UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

void main() {
TRISD = 0xFF; // Configura el puerto D como
entrada (para los DIP switches)
TRISC = 0x00; // Configura el puerto C como
salida (para los LEDs)

while(1) {
PORTC = PORTD; // Copia el estado de los
DIP switches al puerto de LEDs
}
}

3. Controlar una secuencia de leds


Figura 4. Uso de un Dip Switch para controlar un puerto de empleando entradas digitales con el
leds. microcontrolador PIC

Desarrollo:

Los DIP switches (interruptores de posición dual en


inglés) son dispositivos manuales que permiten
establecer una configuración mediante la posición de
sus interruptores. En el contexto de los
microcontroladores, los DIP switches pueden utilizarse
para configurar pines de entrada o salida, por ejemplo,
para controlar LEDs. En este caso, utilizaremos un
conjunto de 8 DIP switches para controlar un puerto de 8
LEDs a través de un PIC 16F877A.
Figura 5. Uso de dos Switch para controlar una secuencia
de leds.
Procedimiento:
Desarrollo:
Conexión Física:
En este escenario, utilizaremos dos botones para
Conecta el conjunto de 8 DIP switches a un puerto controlar una secuencia de 8 LEDs, moviéndose de
de entrada del PIC 16F877A. Cada interruptor debe derecha a izquierda y viceversa. Esto implica el uso de
estar conectado a un pin distinto del microcontrolador. entradas digitales (por ejemplo, pulsadores) para
determinar la dirección del movimiento de la secuencia.
Conecta el conjunto de 8 LEDs a un puerto de salida
del PIC 16F877A. Cada LED debe estar conectado a un Procedimiento:
pin distinto del microcontrolador.
Configuración del Puerto de Entrada: Conexión Física:

En el código, configura el puerto al que están Conecta dos botones (uno para mover de derecha a
conectados los DIP switches como un puerto de entrada. izquierda y otro para mover de izquierda a derecha) a
Configuración del Puerto de Salida: dos pines de entrada del PIC 16F877A.
Conecta un conjunto de 8 LEDs a un puerto de salida
Configura el puerto al que están conectados los del PIC 16F877A.
LEDs como un puerto de salida.
Lectura de los DIP Switches: Configuración de Pines:

Utiliza instrucciones de lectura de puertos para Configura los pines de entrada a los que están
obtener el estado de los DIP switches. Dependiendo de conectados los botones y el puerto de salida a los LEDs.
cómo estén configurados (alto o bajo), puedes asignar Lectura de Botones:
estos valores a variables para su posterior
procesamiento. Lee el estado de los botones en cada iteración del
bucle principal.
Control de los LEDs: Control de la Secuencia de LEDs:

En función del estado leído de los DIP switches, Dependiendo del estado de los botones, incrementa
enciende o apaga los LEDs correspondientes. o decrementa una variable que indica la posición de la
secuencia de LEDs.
Ejemplo guía de Código: Enciende los LEDs de acuerdo a la posición actual.

3
UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

Ejemplo guía de Código: En el código, se leyó el estado del botón y se


encendieron o apagaron los LEDs en consecuencia.
void main() {
TRISD = 0xFF; // Configura el puerto D como Resultados:
entrada (para los botones)
TRISC = 0x00; // Configura el puerto C como Cuando se presiona el botón, los LEDs se encienden
salida (para los LEDs) uno tras otro en secuencia. Al soltar el botón, los LEDs
se apagan.
unsigned char leds = 0x01; // Inicializa la posición
de los LEDs Caso 2: Control de LEDs con DIP Switches
unsigned char boton_derecha, boton_izquierda;
Desarrollo:
while(1) {
boton_derecha = PORTD.F0; // Lee el estado En este caso, se utilizó un conjunto de 8 DIP
del botón de derecha switches para controlar 8 LEDs. Cada switch estaba
boton_izquierda = PORTD.F1; // Lee el estado asociado a un LED, de manera que al activar un switch,
del botón de izquierda se encendía el LED correspondiente.

if (boton_derecha == 0) { // Si se presiona el Procedimiento:


botón de derecha
leds <<= 1; // Desplaza los LEDs hacia la Se conectaron 8 DIP switches a un puerto de entrada
izquierda del PIC 16F877A.
if (leds == 0) leds = 1; // Si alcanza el último
LED, reinicia la secuencia
} Se conectaron 8 LEDs a un puerto de salida del
microcontrolador.
if (boton_izquierda == 0) { // Si se presiona el
botón de izquierda Se configuró el puerto de los DIP switches como
leds >>= 1; // Desplaza los LEDs hacia la entrada y el puerto de los LEDs como salida.
derecha
if (leds == 0) leds = 0x80; // Si alcanza el En el código, se leyó el estado de los DIP switches y
primer LED, reinicia la secuencia se reflejó en los LEDs.
}
Resultados:
PORTC = leds; // Actualiza el estado de los
LEDs Al activar los DIP switches, los LEDs
Delay_ms(100); // Espera para evitar cambios correspondientes se encendieron. Si se desactivan los
rápidos switches, los LEDs se apagan.
}
} Caso 3: Control de Secuencia de LEDs con Botones

5. ANÁLISIS Y RESULTADOS Desarrollo:

Caso 1: Control de LEDs con un Botón En este caso, se utilizaron dos botones para
controlar una secuencia de 8 LEDs que se mueve de
Desarrollo: derecha a izquierda y viceversa.
Procedimiento:
En este caso, se utilizó un botón para encender y
apagar una secuencia de LEDs. Se programó el PIC Se conectaron dos botones a dos pines de entrada
16F877A para que al presionar el botón, los LEDs se del PIC 16F877A.
enciendan en secuencia y al soltar el botón, se apaguen.
Procedimiento: Se conectaron 8 LEDs a un puerto de salida del
microcontrolador.
Se conectó un botón a un pin de entrada del PIC
16F877A. Se configuró los pines de los botones como entrada
y el puerto de los LEDs como salida.
Se conectó un conjunto de LEDs a un puerto de
salida del microcontrolador. En el código, se leyó el estado de los botones y se
controló la secuencia de LEDs.
Se configuró el pin del botón como entrada y el
puerto de los LEDs como salida. Resultados:

Al presionar el botón de derecha, la secuencia de


LEDs se desplaza hacia la izquierda l botón de

4
UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

izquierda. La secuencia se reinicia desde el sentido


contrario.

6. CONCLUSIONES
 El desarrollo de código en mikroC para controlar
salidas digitales en el microcontrolador PIC
16F877A permitió una interacción efectiva con
elementos externos. Se comprendió la
importancia de la programación en la
configuración y gestión de pines.

 La simulación de los circuitos en Proteus resultó


fundamental para la validación y prueba del
funcionamiento antes de la implementación
física. Esto aseguró la corrección de posibles
errores y facilitó la depuración del código.

 En conclusión estos ejercicios proporcionaron


una comprensión detallada de los principios de
entradas y salidas digitales en un
microcontrolador PIC. Se destacó la necesidad
de considerar aspectos como la lectura de
estados de entrada y la manipulación adecuada
de estados de salida.

7. RECOMENDACIONES (Opcional)
Se recomienda tratar de elaborar una parte del
circuito desde casa para poder optimizar el tiempo y
lograr concluir exitosamente la practica.

8. REFERENCIAS (Formato IEE, Arial 8)

[1] Mandado Pérez, F., Menéndez, M., Fernández, E.,


& López, R. (2005).

[2] Salvatierra, J. M. (2012). "Programadores PIC".


Ediciones ENI.

[3] Technology Microchip. (2022). "MikroC PRO for


PIC". [En línea]. Disponible en: [Enlace].

9. ANEXOS

5
UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SEÑALES Y SISTEMAS

Fecha: 30/10/2023

También podría gustarte