Sensor de temperatura con LM35 y lcd con pic16f887 simulado proteus
Sensor de temperatura con LM35 y lcd con pic16f887 simulado proteus
Objetivos:
- Leer la temperatura ambiente con sensor LM35 y mostrarla en un lCD
- Aprender a manejar la libreria lcd del pic
- Aprender a manejar el moduloADC del PIC
Diagrama en proteus:

Diagrama en pic c:
#include <16F887.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOMCLR //Master Clear pin used FOR I/O
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOIESO //Internal External SWITCH Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used FOR I/O
#FUSES NODEBUG //No Debug mode FOR ICD
#FUSES NOWRT //Program memory not write protected
#FUSES BORV40 //Brownout reset at 4.0V
#use delay(clock=8000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include «lcd.c»
void main()
{
INT8 tempdigital; // variable donde guardo la lectura digital
FLOAT temperatura; // varibale que voy escribir en el lcd
setup_adc_ports (sAN0|VSS_VDD); // seleccionamos rA0 con entrada analogica
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel (0); //Seleccionar Canal 0 para sensor de Temperatura
lcd_init(); // Activa lcd
lcd_gotoxy(1,1); // columna 1 renglon 1
lcd_putc(«Temperatura:»); //
WHILE (true)
{
tempdigital=read_adc(); //Leer ADC
delay_ms(1); //Periodo de actualizacion lectura
temperatura=500.0*tempdigital/255; //Escalizar señal de salida temperatura
lcd_gotoxy(1,2); // cursor en columna 1 renglon 2
printf(lcd_putc,»%2.1f C»,temperatura);
delay_ms(100); //Periodo de actualizacion lectura
}
}
