Está en la página 1de 19

T.S.

U MECATRONICA ÁREA DE
AUTOMATIZACIÓN

MICROCONTROLADORES

“UNIDAD 2: Compilador C para


Microcontroladores”

Tema 2.1 Introducción al Entorno


de Desarrollo y Simulación

Actividad 2 Semana 3

ÁNGEL GABRIEL HERNÁNDEZ VARGAS

DOCENTE: JUAN VARGAS FERRER

5° cuatrimestre grupo: “A” SEMANA


del 17-23 de enero

Fecha:
04 / Febrero / 2021
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Nombre de la Práctica: “Salidas Digitales”


Alumno: Ángel Gabriel Hernández Vargas Grupo: “A”
URL video de No solicitado
funcionamiento

Material, herramienta y/o equipo.

• Protoboard.
• PIC18F45K50.
• Equipo de computo (Con los softwares de: MPLAB X ID3, XC8, PROTEUS y PICKIT 3).
• Jumpers
• Resistencias (220 ohm).
• LED’s (diferentes colores)
Desarrollo.

Ejercicio 1
Diagrama Eléctrico
Ahora tenemos 2 leds (rojo y verde, por ejemplo), queremos que cuando el led rojo este encendido el led
verde esté apagado y cuando el led rojo esté apagado el led verde esté encendido. Frecuencia que usted
desee.

Materiales que se ocuparon (en este caso en simulación):


• PIC18F45K50
• Resistencias (220 ohm).
• LED’s (De color Rojo y Verde)

Página: 1 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Funcionamiento

Código
/*
* File: Practica3_Ejercicio1.c
* Author: AngelGabriel020111
*
* Created on 25 de enero de 2022, 09:20 AM
*/

#include <xc.h>

Página: 2 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

#pragma config PLLSEL = PLL4X, CFGPLLEN = OFF, CPUDIV = CLKDIV3, LS48MHZ = SYS48X8
#pragma config FOSC = INTOSCIO, PCLKEN = ON, FCMEN = OFF, IESO = OFF
#pragma config nPWRTEN = OFF, nLPBOR = OFF
#pragma config WDTEN = OFF
#pragma config PBADEN = OFF, MCLRE = ON
#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 16000000 //16MHz

//Variables globales

void main(void) {
//Configuración del oscilador.
OSCCON = 0x70;

//Configuracion de puertos
TRISDbits.RD0 = 0; //Configurar RD0 como salida
TRISDbits.RD1 = 0; //Configurar RD1 como salida
LATDbits.LD0 = 0; // Limpio/apago RD0
LATDbits.LD1 = 0; //limpiar RD1

while (1) {
//Instrucciones a ejecutar
LATDbits.LD0 = 1; //Activo RA0
LATDbits.LD1 = 0; //apago RA1
__delay_ms(1000); //retardo de 1 segundo
LATDbits.LD0 = 0; //apago RA0
LATDbits.LD1 = 1; //activo RA1
__delay_ms(1000); //retardo de 1 segundo

}
return;
}

Ejercicio 2
Diagrama Eléctrico
Monta un led amarillo y crea un programa para que se enciendan los led con la siguiente secuencia Verde-
Amarillo-Rojo. Frecuencia de 1 segundo, esperar 2 segundos todos y apagarlos en el siguiente orden Rojo-
Amarillo-Verde esperar 2 segundos todos apagados, repita el proceso indefinidamente.

Materiales que se ocuparon (en este caso en simulación):


• PIC18F45K50
• Resistencias (220 ohm).
• LED’s (De color Rojo, Amarillo y Verde)

Página: 3 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Funcionamiento

Página: 4 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Código
/*
* File: Practica3_Ejercicio2.c
* Author: AngelGabriel020111
*
* Created on 25 de enero de 2022, 10:42 AM
*/

#include <xc.h>

#pragma config PLLSEL = PLL4X, CFGPLLEN = OFF, CPUDIV = CLKDIV3, LS48MHZ = SYS48X8
#pragma config FOSC = INTOSCIO, PCLKEN = ON, FCMEN = OFF, IESO = OFF

Página: 5 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

#pragma config nPWRTEN = OFF, nLPBOR = OFF


#pragma config WDTEN = OFF
#pragma config PBADEN = OFF, MCLRE = ON
#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 16000000 //16MHz

//Declaracion de la funcion personalisada para el tiempo


void retardo (unsigned int tiempo);

//Variables globales

void main(void) {
//Configuración del oscilador.
OSCCON = 0x70;

//Configuracion de puertos
TRISDbits.RD0 = 0; //Configurar RD0 como salida
TRISDbits.RD1 = 0; //Configurar RA1 como salida
TRISDbits.RD2 = 0; //configurar RA2 como salida
LATDbits.LD0 = 0; // Limpio/apago RD0
LATDbits.LD1 = 0; //limpiar RA1
LATDbits.LD2 = 0; //limpiar RA2

while (1) {
//Instrucciones a ejecutar
LATDbits.LD0 = 1; //Activo RA0
LATDbits.LD1 = 0; //Apago RA1
LATDbits.LD2 = 0; //Apago RA2
__delay_ms(1000); //retardo de 1 segundo
LATDbits.LD0 = 1; //Activo RA0
LATDbits.LD1 = 1; //Activo RA1
LATDbits.LD2 = 0; //Apago RA2
__delay_ms(1000); //retardo de 1 segundo
LATDbits.LD0 = 1; //Activo RA0
LATDbits.LD1 = 1; //Activo RA1
LATDbits.LD2 = 1; //Activo RA2
__delay_ms(1000); //retardo de 1 segundo

LATDbits.LD0 = 1; //ActivoRA0
LATDbits.LD1 = 1; //Activo RA1
LATDbits.LD2 = 1; //Activo RA2
__delay_ms(2000); //retardo de 2 segundo

LATDbits.LD0 = 1; //Activo RA0


LATDbits.LD1 = 1; //Activo RA1
LATDbits.LD2 = 0; //Apago RA2
__delay_ms(1000);
LATDbits.LD0 = 1; //Activo RA0
LATDbits.LD1 = 0; //Activo RA1
LATDbits.LD2 = 0; //Apago RA2
__delay_ms(1000);

Página: 6 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

LATDbits.LD0 = 0; //Activo RA0


LATDbits.LD1 = 0; //Activo RA1
LATDbits.LD2 = 0; //Apago RA2
__delay_ms(2000); //retardo de 2 segundo

}
return;
}

Ejercicio 3
Diagrama Eléctrico
Genere 6 parpadeos de un led con intervalos de 300 ms, luego haga 2 parpadeos de 1 segundo con un
segundo led, luego haga que los 2 leds parpadeen 3 veces, repita el proceso indefinidamente.

Materiales que se ocuparon (en este caso en simulación):


• PIC18F45K50
• Resistencias (220 ohm).
• LED’s (De color Rojo, Amarillo y Verde)

Página: 7 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Funcionamiento

Página: 8 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Código
/*
* File: Practica3_Ejercicio3.c
* Author: AngelGabriel020111
*
* Created on 3 de febrero de 2022, 10:47 PM
*/

#include <xc.h>

#pragma config PLLSEL = PLL4X, CFGPLLEN = OFF, CPUDIV = CLKDIV3, LS48MHZ = SYS48X8
#pragma config FOSC = INTOSCIO, PCLKEN = ON, FCMEN = OFF, IESO = OFF
#pragma config nPWRTEN = OFF, nLPBOR = OFF
#pragma config WDTEN = OFF
#pragma config PBADEN = OFF, MCLRE = ON
#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 16000000 //16MHz

//Declaracion de la funcion personalisada para el tiempo


void retardo (unsigned int tiempo);

//Variables globales

void main(void) {
//Configuración del oscilador.
OSCCON = 0x70;

//Configuracion de puertos
TRISDbits.RD0 = 0; //Configurar RD0 como salida
TRISDbits.RD1 = 0; //Configurar RA1 como salida
LATDbits.LD0 = 0; // Limpio/apago RD0
LATDbits.LD1 = 0; //limpiar RA1

while (1) {
//Instrucciones a ejecutar
for (int i=0;i<6;i++){ //ciclo de 6 parpadeos
LATDbits.LD0 = 1; //Activo a RD0
__delay_ms(300); //Retardo de 300 ms
LATDbits.LD0 = 0; //Apago a RD0
__delay_ms(300); //Retardo de 300 ms
}
for (int i=0;i<2;i++){ //ciclo de 2 parpadeos
LATDbits.LD1 = 1; //Activo a RD1
__delay_ms(1000); //Retardo de 1 s
LATDbits.LD1 = 0; //Apago a RD1
__delay_ms(1000); //Retardo de 1 s
}
for (int i=0;i<3;i++){ //ciclo de 3 parpadeos
LATDbits.LD0 = 1; //Activo a RD0
LATDbits.LD1 = 1; //Activo a RD1
__delay_ms(1000); //Retardo de 1 s

Página: 9 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

LATDbits.LD0 = 0; //Apago a RD0


LATDbits.LD1 = 0; //Apago a RD1
__delay_ms(1000); //Retardo de 1 s
}
}
return;
}

Ejercicio 4
Diagrama Eléctrico
Diseñe un programa y circuito que permita el control de dos semáforos los cuales tendrán la siguiente
secuencia:

Materiales que se ocuparon (en este caso en simulación):


• PIC18F45K50
• Resistencias (220 ohm).
• LED’s (De color Rojo, Amarillo y Verde)

Página: 10 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Funcionamiento

Página: 11 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Código
/*
* File: Practica3_Ejercicio4.c
* Author: AngelGabriel020111
*
* Created on 3 de febrero de 2022, 11:19 PM
*/

#include <xc.h>

#pragma config PLLSEL = PLL4X, CFGPLLEN = OFF, CPUDIV = CLKDIV3, LS48MHZ = SYS48X8
#pragma config FOSC = INTOSCIO, PCLKEN = ON, FCMEN = OFF, IESO = OFF
#pragma config nPWRTEN = OFF, nLPBOR = OFF
#pragma config WDTEN = OFF
#pragma config PBADEN = OFF, MCLRE = ON
#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 16000000 //16MHz

//Variables globales

void main(void) {
//Configuración del oscilador.
OSCCON = 0x70;

//Configuracion de puertos
TRISD=0X00; //Declarando puertos de salida
LATD=0X00;// Limpiando puertos

while (1) {
//Instrucciones a ejecutar
LATDbits.LD0 = 1;{ //Activo a RD0
LATDbits.LD5 = 1; //Activo a RD5
__delay_ms(5000); //Retardo de 5 S
LATDbits.LD0 = 0; //Apago a RD0
LATDbits.LD5 = 0; //Apago a RD0
__delay_ms(0); //Retardo de 0 segudos
LATDbits.LD1 = 1; //Activo a RD1
LATDbits.LD5 = 1; //Activo a RD5
__delay_ms(1000); //Retardo de 1000 s
LATDbits.LD1 = 0; //Apago a RD1
LATDbits.LD5 = 0; ///Apago a RD5
__delay_ms(0); //Retardo de 0s

LATDbits.LD2 = 1; //Activo a RD2


LATDbits.LD3 = 1; //Activo a RD3
__delay_ms(5000); //Retardo de 5s
LATDbits.LD2 = 0; ///Apago a RD2
LATDbits.LD3 = 0; ///Apago a RD3
__delay_ms(0); //Retardo de 0s
LATDbits.LD2 = 1; //Activo a RD2
LATDbits.LD4 = 1; //Activo a RD4

Página: 12 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

__delay_ms(1000); //Retardo de 1 S
LATDbits.LD2 = 0; //Apago a RD2
LATDbits.LD4 = 0; //Apago a RD4
__delay_ms(0); //Retardo de 0 s

LATDbits.LD0 = 1; //Activo a RD0


LATDbits.LD5 = 1; //Activo a RD5
__delay_ms(5000); //Retardo de 5 s
LATDbits.LD0 = 0; //Apago a RD0
LATDbits.LD5 = 0; //Apago a RD5
__delay_ms(0); //retardo de 0 s
LATDbits.LD1 = 1; //Activo a RD1
LATDbits.LD5 = 1; //Activo a RD5
__delay_ms(1000); //Retardo de 1s
LATDbits.LD1 = 0; //Apago a RD1
LATDbits.LD5 = 0; //Apago a RD5
__delay_ms(0); //retardo de 0 s
}
}
return;
}

Ejercicio 5
Diagrama Eléctrico
Crear cuatro secuencias de encendido de Leds a tu elección mediante funciones, usando Leds conectados al
puerto de tu elección y repetir infinitamente.

Materiales que se ocuparon (en este caso en simulación):


• PIC18F45K50
• Resistencias (220 ohm).
• LED’s (De color Rojo)

Página: 13 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Funcionamiento

Página: 14 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

Código
/*
* File: Practica3_Ejercicio5.c
* Author: AngelGabriel020111
*
* Created on 3 de febrero de 2022, 11:35 PM
*/

#include <xc.h>

#pragma config PLLSEL = PLL4X, CFGPLLEN = OFF, CPUDIV = CLKDIV3, LS48MHZ = SYS48X8
#pragma config FOSC = INTOSCIO, PCLKEN = ON, FCMEN = OFF, IESO = OFF
#pragma config nPWRTEN = OFF, nLPBOR = OFF
#pragma config WDTEN = OFF
#pragma config PBADEN = OFF, MCLRE = ON

Página: 15 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 16000000 //16MHz

//Variables globales
void secuencia1(); //secuencia 1
void secuencia2(); //secuencia 2
void secuencia3(); //secuencia 3
void secuencia4(); //secuencia 4

void main(void) {
//Configuración del oscilador.
OSCCON = 0x70;

//Configuracion de puertos
TRISDbits.RD0 = 0; //Configurar RD0 como salida
TRISDbits.RD1 = 0; //Configurar RD1 como salida
TRISDbits.RD2 = 0; //configurar RD2 como salida
TRISDbits.RD3 = 0; //Configurar RD3 como salida
LATDbits.LD0 = 0; // Limpio/apago RD0
LATDbits.LD1 = 0; //limpiar RD1
LATDbits.LD2 = 0; //limpiar RD2
LATDbits.LD3 = 0; // limpiar RD2

while (1) {
//Instrucciones a ejecutar
LATDbits.LD0 = 1; //Activo a RD0
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD0 = 0; //Apago a RD0
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD1 = 1; //Activo a RD1
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD1 = 0; //Apago a RD0
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD2 = 1; //Activo a RD2
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD2 = 0; //Apago a RD3
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD3 = 1; //Activo a LD3
__delay_ms(500); //Retardo de medio segundo
LATDbits.LD3 = 0; //Apago a RD3
__delay_ms(500); //Retardo de medio segundo
secuencia1();//llamar a secuencia
}
return;
}
void secuencia1(){
for (int i=0;i<6;i++){ //ciclo de 6 parpadeos
LATDbits.LD0 = 1; //Activo a RD0
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD0 = 0; //Apago a RD0
__delay_ms(200); //Retardo de 200 ms

Página: 16 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

LATDbits.LD1 = 1; //Activo a RD1


__delay_ms(200); //Retardo de 200 ms
LATDbits.LD1 = 0; //Apago a RD1
__delay_ms(200); //Retardo de 200 ms

}
secuencia2();//llamar a secuencia
}
void secuencia2(){
for (int i=0;i<2;i++){ //ciclo de 2 parpadeos
LATDbits.LD2 = 1; //Activo a RD2
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD2 = 0; //Apago a RD2
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD3 = 1; //Activo a RD3
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD3 = 0; //Apago a RD3
__delay_ms(200); //Retardo de 200 ms
}
secuencia3();
}
void secuencia3(){
LATDbits.LD0 = 1; //Activo a RD0
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD1 = 1; //Activo a RD1
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD2 = 1; //Activo a RD2
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD3 = 1; //Activo a LD3
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD0 = 0; //Apago a RD0
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD1 = 0; //Apago a RD0
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD2 = 0; //Apago a RD3
__delay_ms(200); //Retardo de medio segundo
LATDbits.LD3 = 0; //Apago a RD3
__delay_ms(200); //Retardo de medio segundo
secuencia4();
}

void secuencia4(){
for (int i=0;i<2;i++){ //ciclo de 2 parpadeos
LATDbits.LD0 = 1; //Activo a RD0
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD0 = 0; //Apago a RD0
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD1 = 1; //Activo a RD1
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD1 = 0; //Apago a RD1
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD2 = 1; //Activo a RD2

Página: 17 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

Microcontroladores Reporte de Práctica

__delay_ms(200); //Retardo de 200 ms


LATDbits.LD2 = 0; //Apago a RD2
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD3 = 1; //Activo a RD3
__delay_ms(200); //Retardo de 200 ms
LATDbits.LD3 = 0; //Apago a RD3
__delay_ms(200); //Retardo de 200 ms
}
}

Observaciones y/o conclusiones.


Al principio se me dificulto utilizar MPLAB ya que sería la primera vez que trabajo con este software, ya
después con el paso del tiempo me fui familiarizando con la interfaz y el cómo generar los archivos (.hex).
También quiero mencionar que la práctica se me hizo muy interesante por ver el funcionamiento tanto del
PIC18F45K50, el código que generamos y el montar nuestros componentes para visualizar el
funcionamiento y/o el resultado que estamos esperando.
Aprendizajes obtenidos.
Ahora se utilizar y como funciona MPLAB X IDE y el para generar los códigos, para hacer funcionar a
nuestro PIC18F45K50, ya que es la primera vez que utilizo este software.

Página: 18 DE 19

También podría gustarte