Sensor de temperatura con LM35 y lcd con pic16f887 simulado proteus

Escrito Por: admin Publicado En: Proyectos de microcontroladores PIC Fecha de Creación: 2017-11-29 visitas: 1893

 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:

sensordetemperatura.png

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

     

   }

 

}