Está en la página 1de 12

Nro.

LABORATORIO MICROCONTROLADORES
Página 1 de 12

MICROCONTROLADORES

LABORATORIO N° 05

Programación y Simulación del


Aplicativo 1.

Participantes(s)

Foto:

Ccotahuana Huarca Aragón Aguilar


Nombres:
Dilman Carlos
%
100% 100%
participación:
Nro.
LABORATORIO MICROCONTROLADORES
Página 2 de 12

Grupo
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega

I.COMPETENCIAS ESPECÍFICAS DE LA SESIÓN


 Diseñar y hacer un programa aplicativo utilizando un microcontrolador.
 Programar LCD y Teclado.

II.CONTENIDOS A TRATAR
 Uso de software de desarrollo.
 Aplicaciones.
 Manejo de un teclado matricial junto a una pantalla LCD de 16x2.

III.MATERIALES Y EQUIPO
 CCS Compiler instalado.
 Entrenador de PICS
 PIC16F877A
 PC con Software de simulación.

IV.FUNDAMENTO TEÓRICO
 Para la realización de este laboratorio se requiere haber realizado y aprobado la EVALUACIÓN
DE LA FASE ASÍNCRONA
 La lectura previa de la información proporcionada para el curso, como el texto y el manual del
fabricante.
 Revise la bibliografía recomendada en la FASE ASÍNCRONA.

V.SEGURIDAD EN LA EJECUCIÓN DEL LABORATORIO

Tener cuidado con el tipo y niveles de voltaje con


los que trabaja.

Antes de utilizar el multímetro, asegurarse que


está en el rango y magnitud eléctrica adecuada.

Tener cuidado en la conexión y en la desconexión


de los equipos utilizados
Nro.
LABORATORIO MICROCONTROLADORES
Página 3 de 12

VI.EXPERIENCIA 1 – TECLADO DE 4 COLUMNAS X 3 FILAS CON FUNCIONES

1. Vamos a iniciar realizando el control de un teclado utilizando FUNCIONES. Para esto vamos a
dibujar primero el circuito en PROTEUS tal como se muestra en la figura y luego vamos a
realizar el programa correspondiente:
Nro.
LABORATORIO MICROCONTROLADORES
Página 4 de 12

2. Como EVIDENCIA, peque aquí la simulación en PROTEUS mostrando la ventana PIC CPU
Source Code y mostrabdo en el LCD el texto: “Tecla Pulsada: 7” (incluir NOMBRES DE LOS
INTEGRANTES)

3. Pegue aquí su CÓDIGO en formato TEXTO:

#include <16f877a.h> //Librería para usar el PIC


#fuses HS, PUT, NOWDT, NOPROTECT //Configuración de fusibles.
#use delay (clock=20M) // FOSC =4MHz.
#define use_portb_kbd TRUE
#include <lcd.c>
Nro.
LABORATORIO MICROCONTROLADORES
Página 5 de 12

#byte PORTB=0x06
#define Col_1 0b11111110
#define Col_2 0b11111101
#define Col_3 0b11111011
#define Col_4 0b11110111
char var=0;

void Teclado (){


PORTB=Col_1;
if(PORTB==0b11111110) var='1';
if(PORTB==0b11011110) var='4';
if(PORTB==0b10111110) var='7';
if(PORTB==0b01111110) var='*';

PORTB=Col_2;
if(PORTB==0b11101101) var='2';
if(PORTB==0b11011101) var='5';
if(PORTB==0b10111101) var='8';
if(PORTB==0b01111101) var='0';

PORTB=Col_3;
if(PORTB==0b11101011) var='3';
if(PORTB==0b11011011) var='6';
if(PORTB==0b10111011) var='9';
if(PORTB==0b01111011) var='#';
}

void main(void){
set_tris_b(0xF0);
lcd_init();
port_b_pullups(true);
PORTB=0x00;
lcd_putc('\f');
lcd_gotoxy(3,1);
printf(lcd_putc,"Teclado 4x3");
lcd_gotoxy(1,2);
printf(lcd_putc,":Tecla Pulsada");

while(TRUE){
Teclado();
lcd_putc(var);
lcd_putc("\b");
}
}

VII.EXPERIENCIA 2 – TECLADO DE 4 COLUMNAS X 3 FILAS UTILIZANDO LIBRERIA:

1. Ahora vamos a realizar el control del teclado, pero esta vez utilizando una librería llamada
“kbd.c” mediante la cual vamos a simplificar el código. Es necesario CAMBIAR la conexión del
teclado tal como se muestra en el diagrama siguiente:
Nro.
LABORATORIO MICROCONTROLADORES
Página 6 de 12

2. El código a utilizar se muestra en la ventana siguiente:

3. Vamos a conectar un BUZZER (zumbador) a nuestro circuito de tal manera que cada vez que
pulsemos una tecla, escuchemos un “bip” para confirmar que la tecla ha sido pulsada. Añadir
Nro.
LABORATORIO MICROCONTROLADORES
Página 7 de 12

una función llamada BIP al código principal. En el PROTEUS debemos añadir un Buzzer
Active o en su defecto una salida digital que debe guiñar después de cada pulsación.

4. Como EVIDENCIA, capture la pantalla de PROTEUS mostrando la ventana PIC CPU Source
Code: (incluir NOMBRES DE LOS INTEGRANTES).

5. Pegue aquí su CÓDIGO en formato TEXTO:

// Integrantes:
//-aragon aguilar carlos
//Ccotahuana Huarca Dilman

#include <16f877A.h> // pic a utilizar


#use delay (clock=20000000) // Fosc=20Mhz
#fuses HS,NOWDT, NOPROTECT, PUT // Ordenes para el programador
#define use_portb_kbd TRUE // Definir portb lcd
#include <lcd.c>
#include <kbd.c>
void BIP()
{
output_high(PIN_C5);
delay_ms(100);
output_low(PIN_C5);
}
// FUNCION PRINCIPAL
void main(void)
Nro.
LABORATORIO MICROCONTROLADORES
Página 8 de 12

[5:56 p. m., 9/11/2021] Tecs Aragon: {


char c=0; // Variable donde se almacena tecla pulsada
lcd_init(); // Iniciamos LCD
kbd_init();
port_b_pullups(true);
lcd_putc('\f'); // Limpiamos LCD
lcd_gotoxy(3,1); // Línea 1 y columna 6
printf(lcd_putc,"Teclado 4x3");
lcd_gotoxy(1,2); // Línea 2 y columna 2
printf(lcd_putc,"Tecla Pulsada: ");
while(TRUE){ // Bucle infinito
do
{ // Espera hasta ...
c=kbd_getc();
}
while(c==0); // ...pulsar una tecla
BIP();
lcd_putc(c); // Muestra tecla pulsada
lcd_putc("\b"); // Retrocede una posición (escribe encima
} // de la última tecla mostrada

VIII.RETO DE PROGRAMACIÓN: (Por fases, de menor a mayor dificultad)

1. Utilizando los programas anteriores como base, modifica el mismo de tal manera que
hagamos un juego de ADIVINANZA, en el cual el LCD muestre el mensaje inicial “ADIVINA EL
NUMERO”, luego se presiona las teclas. Si se acierta, mostrar el mensaje “ADIVINASTE!!!”; si
no se acierta, mostrar el mensaje “Sigue intentando”.

Video demostrativo: https://www.loom.com/share/d2f9fe347a8948a1bc9fbb06baf007e9

2. Como EVIDENCIA 1, grabe un video de su simulación en PROTEUS utilizando la aplicación


LOOM o YOUTUBE y coloque el LINK en el recuadro siguiente. En la simulación debe
visualizarse los nombres de los integrantes claramente. El video NO debe durar más de 2
minutos.

3. Como EVIDENCIA 2, pegue en el recuadro siguiente el CÓDIGO EN MODO TEXTO:

//Integrantes:
//-Ccotahuana Huarca Dilman

#include <16f877A.h> // pic a utilizar


#use delay (clock=20M) // Fosc=20Mhz
#fuses HS, NOWDT, NOPROTECT, PUT // Ordenes
para el programador
#define use_portb_kbd TRUE // Definir portb lcd
#include <lcd.c>
#include <kbd.c>
LABORATORIO MICROCONTROLADORES
Nro.
Página 9 de 12
4. Agregar lo siguiente: Si se acierta, mostrar el número
de intentos que se ha utilizado
Nro.
LABORATORIO MICROCONTROLADORES
Página 9 de 12

4. Agregar lo siguiente: Si se acierta, mostrar el número de intentos que se ha utilizado


mostrando el mensaje: “ADIVINASTE EN n INTENTOS”.
Video demostrativo: https://www.loom.com/share/e2cd3895b7d5483994ef6c43a3b98a96

Código en formato TEXTO:

//Integrantes:
//-Ccotahuana Huarca Dilman
#include <16f877A.h> // pic a utilizar
#use delay (clock=20M) // Fosc=20Mhz
#fuses HS, NOWDT, NOPROTECT, PUT // Ordenes para el programador
#define use_portb_kbd TRUE // Definir portb lcd
#include <lcd.c>
#include <kbd.c>
void BIP()
{
output_high(PIN_C5);
delay_ms(100);
output_low(PIN_C5);
}
// FUNCIÓN PRINCIPAL
void main(void)
{
char c=0; // Variable donde se almacena tecla pulsada
int i=0;
lcd_init(); // Iniciamos LCD
kbd_init();
port_b_pullups(true);
lcd_putc('\f'); // Limpiamos LCD
lcd_gotoxy(1,1);
printf(lcd_putc,"ADIVINA EL");
lcd_gotoxy(1,2);
printf(lcd_putc,"NUMERO..");
Nro.
LABORATORIO MICROCONTROLADORES
Página 10 de 12

while(TRUE){ // Bucle infinito


do
{ // Espera hasta ..
c=kbd_getc();
}
while(c==0); // ...pulsar una tecla
BIP();
if(c=='5')
{
lcd_gotoxy(3,1);
lcd_putc('\f');
printf(lcd_putc,"ADIVINASTE");
lcd_gotoxy(1,2);
printf(lcd_putc,"en ");
lcd_gotoxy(3,2);
printf(lcd_putc,"%3u intentos",i+1);
delay_ms(100); // retardo 100ms
lcd_putc('\f');
}
else
{
i++;
lcd_putc('\f');
printf(lcd_putc,"SIGUE INTENTANDO");
delay_ms(100); // retardo 100ms
lcd_putc('\f');
}
}
}

5. Agrega lo siguiente: el mensaje inicial deberá especificar un número máximo de intentos


mediante el mensaje: “ADIVINA EL NUMERO EN 5 INTENTOS”. Si se acierta se mostrará:
“ADIVINASTE EN n INTENTOS”; si no se acierta en el número máximo (5), se mostrará el
mensaje “GAME OVER!!”.
Video demostrativo: https://www.loom.com/share/03c83c2e602340fda1973da6ae050f89

Código en formato TEXTO:

//Integrantes:
//-Ccotahuana Huarca Dilman

#include <16f877A.h> // pic a utilizar


#use delay (clock=20M) // Fosc=20Mhz
#fuses HS, NOWDT, NOPROTECT, PUT // Ordenes para el programador
#define use_portb_kbd TRUE // Definir portb lcd
#include <lcd.c>
#include <kbd.c>
void BIP()
{
output_high(PIN_C5);
delay_ms(100);
output_low(PIN_C5);

}
// FUNCION PRINCIPAL
void main(void)
Nro.
LABORATORIO MICROCONTROLADORES
Página 11 de 12

char c=0; // Variable donde se almacena tecla pulsada


int i=0;
lcd_init(); // Iniciamos LCD
kbd_init();
port_b_pullups(true);
lcd_putc('\f'); // Limpiamos LCD
lcd_gotoxy(1,1);
printf(lcd_putc,"Adivina en ");
lcd_gotoxy(1,2);
printf(lcd_putc,"5 intentos");
while(TRUE){
do
{
c=kbd_getc();
}
while(c==0);
BIP();

if(c=='5')
{
lcd_gotoxy(3,1);
lcd_putc('\f'); // Limpiamos LCD
printf(lcd_putc,"Adivinaste");
lcd_gotoxy(1,2);
LABORATORIO MICROCONTROLADORES
Nro.
Página 12 de 12
printf(lcd_putc,"en ");
lcd_gotoxy(3,2);
printf(lcd_putc,"%3u intentos",i+1);
delay_ms(100); // retardo 100ms
}
else
{
i++;
lcd_putc('\f'); // Limpiamos LCD
printf(lcd_putc,"Sigue intentando");
delay_ms(100); // retardo 100ms
lcd_putc('\f'); // Limpiamos LCD
}
if(i>=5)
{
lcd_putc('\f'); // Limpiamos LCD
printf(lcd_putc,"Game Over!!");
delay_ms(100); // retardo 100ms
lcd_putc('\f'); // Limpiamos LCD
}
}
}
Nro.
LABORATORIO MICROCONTROLADORES
Página 12 de 12

IX.OBSERVACIONES Y CONCLUSIONES: (Deben estar convenientemente redactadas)

OBSERVACIONES:

OBSERVACIONES:

 En la experiencia 2 se observó que al trabajar con la librería “Kbd” hace el


procedimiento más reducido a comparación de la experiencia 1.
 Se observó que el reto planteado en este laboratorio presenta una mayor
dificultad
 Para la correcta realización del laboratorio, es necesario seguir todos los pasos al pie
de la letra, con el fin de prevenir errores y pérdidas de tiempo.
 El uso de librerías y macros en el desarrollo de la programación facilito la
programación, ya que, se evita hacer instrucciones que hacen perder el tiempo.
 Se puede hacer modificaciones en la libreria al gusto del proyectista, como se hizo en
este proyecto, en donde se hizo una pequeña modificación de la libreria del teclado
para hacer más simple el trabajo.

CONCLUSIONES:

 En conclusión, vimos la importancia del código “c” que se compila al pic,


 para poder darle funcionamiento al teclado físico.
 En conclusión, es más facil trabajar con la librería “Kbd”
 A partir de lo visto en la experiencia 2 se realizó el reto con una mayor dificultad
donde se le agrega” el número de intentos” y el mensaje
 Se logró utilizar las instrucciones necesarias para programar al microcontrolador
PIC16F877A, es por ello que se pudo realizar de manera exitosa la aplicación de lo
aprendido que consistía en el control de un keyboard, este control se podía visualizar
en la pantalla LCD.
 Por lo expresado anteriormente la elaboración de este proyecto me sirvió para
comprender un poco más la teoría de los microcontroladores y su aplicación; de ahí
la importancia del mismo, pues a través de él se puede apreciar lo interesante que es
la programación en nuestra vida cotidiana.
 Se utiliza de manera correcta el software de desarrollo proporcionado por el
fabricante, gracias a ello se pudo despejar dudas y con ello se logró comprender de
forma eficiente los problemas propuestos y las utilidades que se les puede dar.

También podría gustarte