Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO MICROCONTROLADORES
Página 1 de 12
MICROCONTROLADORES
LABORATORIO N° 05
Participantes(s)
Foto:
Grupo
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega
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.
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)
#byte PORTB=0x06
#define Col_1 0b11111110
#define Col_2 0b11111101
#define Col_3 0b11111011
#define Col_4 0b11110111
char var=0;
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");
}
}
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
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).
// Integrantes:
//-aragon aguilar carlos
//Ccotahuana Huarca Dilman
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”.
//Integrantes:
//-Ccotahuana Huarca Dilman
//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
//Integrantes:
//-Ccotahuana Huarca Dilman
}
// FUNCION PRINCIPAL
void main(void)
Nro.
LABORATORIO MICROCONTROLADORES
Página 11 de 12
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
OBSERVACIONES:
OBSERVACIONES:
CONCLUSIONES: