Documentos de Académico
Documentos de Profesional
Documentos de Cultura
U MECATRONICA ÁREA DE
AUTOMATIZACIÓN
MICROCONTROLADORES
Actividad 2 Semana 3
Fecha:
04 / Febrero / 2021
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
• 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.
Página: 1 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
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
#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
//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.
Página: 3 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
Funcionamiento
Página: 4 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
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
//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
Página: 6 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
}
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.
Página: 7 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
Funcionamiento
Página: 8 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
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
//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
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:
Página: 10 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
Funcionamiento
Página: 11 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
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
//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
Página: 12 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
__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
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.
Página: 13 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
Funcionamiento
Página: 14 DE 19
Universidad Tecnológica de Xicotepec de Juárez.
T.S.U. EN MECATRÓNICA ÁREA AUTOMATIZACIÓN
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
#pragma config STVREN = ON, LVP = ON, ICPRT = OFF, XINST = OFF
//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
}
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
Página: 18 DE 19