Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO MICROCONTROLADORES
Página 1 de 5
MICROCONTROLADORES
LABORATORIO N° 07
Participantes(s)
DIAZ MAMANI
Nombres: HOSHENSON
RODRIGO
%
100%
participación:
Grupo
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega
Nro.
LABORATORIO MICROCONTROLADORES
Página 2 de 5
1. Vamos a realizar una lectura de la entrada analógica AN3 en el cual está conectado un
POTENCIÓMETRO el cual nos brinda un voltaje variable entre 0 y 5 voltios. Esto se ve en el
entrenador virtual de PROTEUS:
2. Vamos a mostrar en el LCD la lectura directa del valor leído con 10 bits (de 0 a 1023) y vamos
a convertir dicho valor a un valor flotante entre 0.00 y 5.00, lo cual va a representar el voltaje
que ingresa a dicho pin del uC. En pocas palabras estamos creando un VOLTÍMETRO. El
código se muestra en las diapositivas y en el video introductorio al tema.
#include <16f877A.h>
#device adc=10
#use delay (clock=20M)
#fuses HS, NOPROTECT, NOWDT
#include <lcd.c>
int16 lectura=0;
float voltios;
void main()
{
Nro.
LABORATORIO MICROCONTROLADORES
Página 4 de 5
lcd_init() ;
printf (lcd_putc, "\fLECTURA ANALOGICA") ;
delay_ms(2000);
setup_adc_ports (AN0_AN1_AN3);
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel (3);
delay_us (20);
WHILE (true)
{
lectura = read_adc ();
voltios = lectura*5.0/1023.0;
delay_ms (20) ;
lcd_gotoxy(1,1);
printf (lcd_putc, "Valor ADC:%4lu ",lectura);
lcd_gotoxy(1,2);
printf (lcd_putc, "Voltaje: %1.3f ", voltios);
delay_ms(100);
}
}
Nro.
LABORATORIO MICROCONTROLADORES
Página 5 de 5
4. El código es similar al anterior, solo que esta vez, antes de hacer la lectura, necesitamos
direccionar a la entrada respectiva, por este motivo parte del código se va al bucle WHILE
(true):
Nro.
LABORATORIO MICROCONTROLADORES
Página 6 de 5
#include <16f877a.h>
#device adc=10
#include <lcd.c>
int16 lectura1=0;
int16 lectura2=0;
void main()
{
lcd_init ();
printf (lcd_putc, "\f LECTURA ANALOGICA");
delay_ms(2000);
setup_adc_ports (AN0_AN1_AN3);
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel (3);
delay_us (20);
while (true)
{
set_adc_channel (3);
delay_ms (20);
lectura1= read_adc ();
delay_ms (20);
Nro.
LABORATORIO MICROCONTROLADORES
Página 7 de 5
lcd_gotoxy(1,1);
printf (lcd_putc, "Valor POT: %4lu ", lectura1),
set_adc_channel (1);
delay_ms (20);
lectura2= read_adc ();
delay_ms (20);
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor LDR: %4lu ", lectura2);
delay_ms(100);
}
}
Nro.
LABORATORIO MICROCONTROLADORES
Página 8 de 5
#device adc=10
#use delay(clock=20M)
#fuses HS, NOPROTECT, NOWDT
#define LCD_ENABLE_PIN PIN_D3
#define LCD_RS_PIN PIN_D2
#define LCD_RW_PIN PIN_A0
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>
int16 lectura1=0;
int16 lectura2=0;
Nro.
LABORATORIO MICROCONTROLADORES
Página 9 de 5
void main()
{
lcd_init ();
printf (lcd_putc, "\f LECTURA ANALOGICA");
delay_ms(2000);
setup_adc_ports (AN0_AN1_AN3);
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel (3);
delay_us (20);
while (true)
{
set_adc_channel (3);
delay_ms (20);
lectura1= read_adc ();
delay_ms (20);
lcd_gotoxy(1,1);
printf (lcd_putc, "Valor POT: %4lu ", lectura1),
set_adc_channel (1);
delay_ms (20);
lectura2= read_adc ();
delay_ms (20);
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor LDR: %4lu ", lectura2);
delay_ms(100);
}
}
1. Utilizando los programas anteriores como base, programe con PIC un TERMÓMETRO
utilizando el sensor LM35 conectado a la entrada AN0 del PIC y cuyo rango de medición va de
-55ºC a 150ºC, 1ºC equivale a 10mV. El programa debe medir SOLO temperaturas positivas
de 0 a 150ºC y debe mostrarlo en una pantalla LCD.
I. OBSERVACIONES Y CONCLUSIONES:
OBSERVACIONES de XXX:
• Tener en cuenta la conexión del entrenador al CPU ya que a veces por malas conexiones no
podemos importar el PIC C COMPILER a PICkit.
• Tener mucho cuidado al monto de tipear los códigos al PIC C COMPILER ya que los mayores
errores de estos son confundir ( ; - , )
• Acondicionar el código para ejecutarlo en el ENTRENADOR FÍSICO.
CONCLUSIONES de XXX: