Está en la página 1de 15

1 Temperatura; 201127 Monroy Lucero Alejandra

1 Temperatura; 201127 Monroy Lucero Alejandra

/*

* File: T3C2_Temperatura_201127.c

* Author: Gloria Alejandra Monroy Lucero

* 201127

* Grupo: "A"

* Cuatrimestre: 7

* Created on 20 de febrero de 2022, 01:11 AM

* Realizar un programa en mplab con XC8 que realice el trabajo de un termómetro digital
utilizando un lm35 en la entrada RA4 y

* desplegando la temperatura en grados Celsius y Fahrenheit en el LCD, el LCD debe mostrar los
datos de la materia, nombre de

* la universidad y el nombre de cada uno al inicio (despliegue y borrado libre).

*/

// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

// CONFIG

#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable
bit (RB3/PGM pin has PGM function; low-voltage programming enabled)

#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code
protection off)

#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off;
all program memory may be written to by EECON control)

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
2 Temperatura; 201127 Monroy Lucero Alejandra

// #pragma config statements should precede project file includes.

// Use project enums instead of #define for ON and OFF.

#define RS RD2 // Se definen los puertos

#define EN RD3

#define D4 RD4

#define D5 RD5

#define D6 RD6

#define D7 RD7

#include <xc.h> //Bibliotecas

#include <stdio.h>

#include <stdlib.h>

#define _XTAL_FREQ 4000000 //Frecuencia de trabajo

#include "lcd.h"; //Libreria del LCD

void main() {

TRISD = 0; //Puertos

TRISA=0B11111111;

PORTA=0B00000000;

ADCON0=0B01100000;

ADCON1=0B10000000;

unsigned int a; //Programa desarrollado implementando el LCD

int i;

TRISD=0x00;

Lcd_Init(); //INICIALIZA LCD


3 Temperatura; 201127 Monroy Lucero Alejandra

Lcd_Clear(); //Limpia LCD

float voltaje,Celsius,F;

char s[16];

Lcd_Clear();

Lcd_Set_Cursor(1,2);

Lcd_Write_String("UPCHIAPAS");

Lcd_Set_Cursor(2,1);

Lcd_Write_String("Microcontroladores 7A");

Lcd_Set_Cursor(2,1);

__delay_ms(800);

for (a=0;a<22;a++){

__delay_ms(100);

Lcd_Shift_Left();

Lcd_Clear();

Lcd_Set_Cursor(1,3);

Lcd_Write_String("Gloria Monroy");

Lcd_Set_Cursor(2,1);

Lcd_Write_String("201127");

Lcd_Set_Cursor(2,1);

__delay_ms(800);

Lcd_Clear();

while (1){ //Condicion del proceso de registros

ADCON0bits.ADON=1;

__delay_us(30);

ADCON0bits.GO=1;

while(ADCON0bits.GO==1);

ADCON0bits.ADON=0;

__delay_ms(200);
4 Temperatura; 201127 Monroy Lucero Alejandra

i =ADRESH;

i =i<< 8;

i =i+ADRESL;

voltaje =i*5.0/1024.0; //Conversion del voltaje a temperatura Celcius

Celsius =voltaje*100.0;

sprintf(s,"Temp C= %f", Celsius);

Lcd_Set_Cursor(1,1);

Lcd_Write_String(s);

F = Celsius*1.8+32; //Conversion de Celcius a Fahrenheit

sprintf(s,"Temp F= %f", F);

Lcd_Set_Cursor(2,1);

Lcd_Write_String(s)

__delay_ms(800);

Lcd_Shift_Left();

CÓDIGO MPLAB CON XC8


5 Temperatura; 201127 Monroy Lucero Alejandra
6 Temperatura; 201127 Monroy Lucero Alejandra
7 Temperatura; 201127 Monroy Lucero Alejandra
8 Temperatura; 201127 Monroy Lucero Alejandra
9 Temperatura; 201127 Monroy Lucero Alejandra

SIMULACIÓN PROTEUS LCD


10 Temperatura; 201127 Monroy Lucero Alejandra
11 Temperatura; 201127 Monroy Lucero Alejandra
12 Temperatura; 201127 Monroy Lucero Alejandra
13 Temperatura; 201127 Monroy Lucero Alejandra

Conversión:
Al hablar del proceso de conversión, puedo mencionar que si bien no fue
del todo sencillo pues se tenía que tener cuidado para evitar errores en el
programa, puesto que nos percatamos que el sensor no admite alguna
temperatura, sino por el contrario, ya nos da una, debe conectarse a
fuentes de 5V para que pueda entregar la lectura en una salida
analógica que será en grados centígrados. Siendo así como el sensor
proporcionará la lectura de la temperatura para que nuestro código lo
interprete en voltaje y así poder convertirlo a grados Celsius o Fahrenheit
dando como resultado que la pantalla LCD lo presente en grados
centígrados.

Conclusión
Para concluir, esta práctica fue de mucho aprendizaje, puesto que a lo
largo de la realización de la misma pude poner en práctica lo ya visto en
clases y no pasar por alto las especificaciones del sensor de temperatura
que fue el protagonista en esta actividad para poder mostrar en la
pantalla LCD lo que deseábamos. Por último, pero no menos importantes
es estar familiarizados con la terminología de los ambos programas y por
supuesto saber identificar nuestras entradas y salidas, ya que serán el
parteaguas del proyecto que queramos implementar.
14 Temperatura; 201127 Monroy Lucero Alejandra

Bibliografía

George, L. (Agosto de 18). Electrosome. Obtenido de Interfacing LCD with PIC Microcontroller – MPLAB XC8:
https://electrosome.com/lcd-pic-mplab-xc8/#google_vignette

• Proteus 8 Professional
• MPLAB IDE v6.00

También podría gustarte