Guia de Laboratorio de Sistemas Microcontrolados
Guia de Laboratorio de Sistemas Microcontrolados
Versión 1.1
MICROCONTROLADOS Página 1 de 10
1. DATOS GENERALES
ASIGNATURA: SIGLA CURRICULAR: ETN 07 3 42
MICROPROCESADORES II
BIBLIOGRAFÍA A SEGUIR:
2. COMPETENCIA DE LA ASIGNATURA
“Desarrolla soluciones integrales de hardware y software mediante la programación de
microprocesadores y sistemas embebidos; aplicando la teoría de control automático y
digital; identificando procesos de automatización, almacenamiento e interfaces;
comparando soluciones hardware y soluciones software; utilizando algoritmos basados en
modelos matemáticos; distinguiendo a la interacción de recursos físicos y lógicos y
realizando la implementación de prototipos electrónicos”.
1
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 2 de 10
1. OBJETIVOS
2. FUNDAMENTO TEÓRICO
3.1. MATERIALES
2
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 3 de 10
3.2. EQUIPO
3.3. REACTIVOS
3.5. OTROS
4. PROCEDIMIENTO
3
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 4 de 10
Paso 3: Abrir el programa IDE de Arduino y elaborar el programa que permita que el mcu
se comporte como una ALU de 4 bits:
//Declaracion de Variables
byte A = 0, B = 0, R = 0;
//Declaracion de funciones
void setup()
{
//Sentencias de codigo que se ejecutan una sola vez
DDRD = 0b11111111; //0xFF 255
DDRC = 0x00;
DDRB = 0x00;
}
void loop()
{
//Programa principal
A = PINB;
B = PINC;
A &= 0x0F; //A = A and 0xFF
B &= 0x0F;
if(digitalRead(PX) == 0 && digitalRead(PY) == 0 && digitalRead(PZ)== 0)
4
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 5 de 10
{
PORTD = A+B;
}
else if(digitalRead(PX) == 0 && digitalRead(PY) == 0 && digitalRead(PZ)== 1)
{
PORTD = A-B;
}
else if(digitalRead(PX) == 0 && digitalRead(PY) == 1 && digitalRead(PZ)== 0)
{
PORTD = A*B;
}
else if(digitalRead(PX) == 0 && digitalRead(PY) == 1 && digitalRead(PZ)== 1)
{
PORTD = A/B;
}
else if(digitalRead(PX) == 1 && digitalRead(PY) == 0 && digitalRead(PZ)== 0)
{
PORTD = A|B;
}
else if(digitalRead(PX) == 1 && digitalRead(PY) == 0 && digitalRead(PZ)== 1)
{
PORTD = A&B;
}
else if(digitalRead(PX) == 1 && digitalRead(PY) == 1 && digitalRead(PZ)== 0)
{
B << 4;
PORTD = (~A)|(~B);
}
else
{
PORTD = 0x00;
}
}
5
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 6 de 10
Paso 6: Abrir el programa IDE de Arduino y elaborar el programa que permita realizar el
conteo de 0 a 999 cada segundo.
#define fm 67
#define TMD 5
void setup()
{
6
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 7 de 10
DDRD = 0xFF;
DDRC = 0xFF;
}
void loop()
{
for(int frec = 0;frec<=fm;frec++)
{
for(int cen = 0;cen < 10;cen++)
{
for(int dec = 0;dec < 10;dec++)
{
for(int uni = 0;uni < 10;uni++)
{
PORTD = num[uni];
PORTC = sel[0];
delay(TMD);
PORTD = num[dec];
PORTC = sel[1];
delay(TMD);
PORTD = num[cen];
PORTC = sel[2];
delay(TMD);
}
}
}
}
}
7
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 8 de 10
Paso 9: Abrir el programa IDE de Arduino y elaborar el programa que permita mostrar las
siguientes frases según la siguiente tabla:
Paso 10: El siguiente programa permite mostrar y desplegar los mensajes según la tabla
propuesta la cual debe ser completada para que pueda mostrar todas frases según la
selección que se realiza:
#define PM 4 //4 ms
#define frec 50 //50 Hz
//C1 C2 C3 C4 C5
byte flecha[5]={0b11101111,0b11101111,0b10101011,0b11000111,0b11101111};
byte LA[5]={0b11101111,0b11101111,0b11101111,0b11101111,0b11101111}; //Se debe
codificar la letra A
byte LB[5]={0b11101111,0b11101111,0b11101111,0b11101111,0b11101111}; //Se debe
codificar la letra B
//Codificar las letras faltantes
byte COL[5] = {0x01,0x02,0x04,0x08,0x10};
8
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 9 de 10
{
PORTD = caracter[i];
PORTB = COL[i];
delay(PM);
}
}
}
void setup()
{
DDRD = 255;
DDRB = 255;
DDRC = 0;
}
void loop()
{
9
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca
GUIA DE LABORATORIO DE SISTEMAS Codigo ETN-CBBA-GL-MICII-01
Versión 1.1
MICROCONTROLADOS Página 10 de 10
if(PINC == 0)
{
MCaracter('*');
MCaracter('a');
MCaracter('d');
MCaracter('a');
MCaracter('%');
}
else if(PINC == 1)
{
MCaracter('*');
MCaracter('p');
MCaracter('1');
MCaracter('5');
MCaracter('%');
}
}
Paso 11: Elaborar un programa para el microcontrolador AVR Atmega328p que permita
implementar una matriz de 8x8 que permita mostrar caracteres, según el siguiente
diagrama:
5. PRESENTACIÓN DE RESULTADOS
10
Guía de Laboratorio – Microprocesadores II 1.0 Ing. Erick Benitez Gareca