Nro.
LABORATORIO MICROCONTROLADORES
Página 1 de 12
MICROCONTROLADORES
LABORATORIO N° 04
Puertos de Entrada y Salida - Parte 2.
Participantes(s)
Foto:
Chisi Chavez Ccotahuana
Nombres:
Salomon Spenser Huarca Dilman
%
100% 100%
participación:
Grupo A
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega
Nro.
LABORATORIO MICROCONTROLADORES
Página 2 de 12
I. COMPETENCIAS ESPECÍFICAS DE LA SESIÓN
• Modificar E/S de los puertos del microcontrolador.
• Hacer diagrama de flujos de un programa.
II. CONTENIDOS A TRATAR
• Display de 7 segmentos de 1 y 2 dígitos.
• 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 – DISPLAY DE 7 SEGMENTOS
1. Vamos a iniciar realizando un contador con un display de CÁTODO COMÚN simple. 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: (incluir NOMBRES DE LOS INTEGRANTES)
Nro.
LABORATORIO MICROCONTROLADORES
Página 5 de 12
3. Ahora vamos a añadir un pulsador en el PIN A0 de tal manera que el número mostrado en el
display se incremente cada vez que éste sea presionado. La función VOID main () quedaría
como sigue:
1. Agregue otro pulsador en el PIN A1 de tal manera que, SI éste es presionado, el número
mostrado en el display se DECREMENTE. Como EVIDENCIA, capture la pantalla de
PROTEUS mostrando la ventana PIC CPU Source Code: (incluir NOMBRES DE LOS
INTEGRANTES)
Nro.
LABORATORIO MICROCONTROLADORES
Página 6 de 12
VII. EXPERIENCIA 2 – PANTALLA LCD DE 16x2:
1. Agregue al diagrama anterior una pantalla LCD de 16 columnas por 2 filas. Ubíquelo en el
PROTEUS como LM016L. El circuito debe quedar como se muestra a continuación:
Nro.
LABORATORIO MICROCONTROLADORES
Página 7 de 12
2. Cierre TODOS los archivos con FILE-> CLOSE ALL, y cree un nuevo proyecto. Transcriba el
código mostrado de un CONTADOR ASCENDENTE – DESCENDENTE con pantalla LCD:
1. Como EVIDENCIA, capture la pantalla de PROTEUS mostrando la ventana PIC CPU Source
Code: (incluir NOMBRES DE LOS INTEGRANTES). En lugar de “CONTADOR” que aparezca
tu APELLIDO.
Nro.
LABORATORIO MICROCONTROLADORES
Página 8 de 12
VIII. RETO DE PROGRAMACIÓN:
1. Una los dos códigos anteriores de tal manera que, al presionar los respectivos pulsadores, el
número se muestre tanto en el Display de 7 segmentos como en la pantalla LCD:
a. Al presionar A0 (estado 0), el display debe contar de 0 a 9 y en el LCD, valor debe
cambiar de 0 a 255.
b. Al presionar A1 (estado 0), el display debe descontar desde el número donde esté y de
igual manera el VALOR en el LCD.
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.
https://drive.google.com/file/d/19nHr50Ror_a1P13rPRiblfK9i25pUUdh/view?usp=sharing
Nro.
LABORATORIO MICROCONTROLADORES
Página 9 de 12
3. Como EVIDENCIA 2, pegue en el recuadro siguiente el CÓDIGO EN MODO TEXTO:
/*Chisi Chavez Salomon Spenser
Cotahuana Huarca Dilman Alberto
Sarmiento Chipana Joel Alexander
*/
#include <16f877a.h>
#use delay (clock=4M)
#fuses XT, NOPROTECT, NOWDT, PUT, NOLVP
#include <lcd.c>
#byte PORTB = 0x06 //Le asignamos la direccion del registro correcto en la memoria ram
int Tab7Seg[10]={63,6,91,79,102,109,125,7,127,111}; //Declaramaos una variable tipo matriz, decodificador para LCD
int i = 0;
int numero = 0;
void main()
{
lcd_init(); //Inicializamos la libreria para la pantalla LCD
printf(lcd_putc,"Reto Contador"); //Imprimimos en la pantalla, primera fila y columna, por defecto
lcd_gotoxy(1,2); //Instruccion para imprimir siguiente mensaje en columna 1 fila 2 de la pantalla
printf (lcd_putc,"Valor:%3u", numero); //Imprimimos en pantalla, concatenando la variable i, Valor: 0
set_tris_b(0x00); //Declaramos el puerto B como salidas
PORTB = 0x00; //Limpiamos el puerto B, le damos una señal baja a todos los pines del puerto
while(true) //Bucle , mientras, verdadero
{
PORTB = Tab7Seg[i]; //Imprimimos el numero cero en el display 7 segmentos
if(!input(PIN_A0)) //Pasaremos a las intrucciones del bucle if, si tenemos una señal negativa por el puerto A0
{
i++; //Incrementamos en 1 la variable i
numero++; //Incrementamos en 1 la variable numero
if(i == 10) i = 0; //Cuando i sea 10, darle valor de 0
PORTB = Tab7Seg[i]; //Imprimimos por el puerto B el valor de la posicion de la variable matriz decodificador
lcd_gotoxy(1,2); //Instruccion para imprimir siguiente mensaje en columna 1 fila 2 de la pantalla, borramos el
mensaje anterior
printf (lcd_putc,"Valor:%3u",numero);//Imprimimos el numero siguiente en la pantalla lcd, de 0 a 255
while (!input(PIN_A0)) {} //Rutina antirebote
}
if(!input(PIN_A1))
{
i--; //Decrementamos en 1 la variable i
numero--; //Decrementamos en 1 la variable i
if(i == -1) i = 9; //Cuando i sea -1, darle valor de 9
PORTB = Tab7Seg[i]; //Imprimimos por el puerto B el valor de la posicion de la variable matriz decodificador
lcd_gotoxy(1,2);
printf (lcd_putc,"Valor:%3u",numero);
while (!input(PIN_A1)) {}
}
}
Nro.
LABORATORIO MICROCONTROLADORES
Página 10 de 12
Nro.
LABORATORIO MICROCONTROLADORES
Página 11 de 12
IX. OBSERVACIONES Y CONCLUSIONES: (Deben estar convenientemente redactadas)
OBSERVACIONES:
• Usando una variable entera de 8 bits (unsigned) podemos tener un contador de 0 a
255, si deseamos un contador mas grande podemos usar enteros de 16 o mas bits.
• Colocar una rutina antirebote es mas eficiente que un delay después de laccion de
pulsar un botón.
• La configuración para conectar la pantalla lcd al pic esta predefinida con la librería
lcd,c podemos modificar las conexiones modificando las directivas al incio.
• Usando la función printf() por primera vez esta imprime nuestro mensaje por defecto
en la primera fila y columna.
• El display 7 segementos que se uso es de catodo común es decir el catodo de cada
led esta conectado a una misma tierra, cada led se enciende al recibir una señal alta.
Nro.
LABORATORIO MICROCONTROLADORES
Página 12 de 12
CONCLUSIONES:
• Debemos hacer usos de las librerías predefinidas en CCS , para usar distintos
dispositivos con el PIC.
• Asignar una variable aun puerto asignándole la dirección correcta en los registros de
la memoria RAM, para poder usar todos los pines del puerto al mismo tiempo como
deseemos.
• Usando una variable entera tipo matriz pudimos crear un decodificador para el display
7 segmentos, de la misma forma podemos hacer uso de esto, para presentar distintos
valores (letras o numeros).