Documentos de Académico
Documentos de Profesional
Documentos de Cultura
/*
* File: T3C2_Temperatura_201127.c
* 201127
* Grupo: "A"
* Cuatrimestre: 7
* 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
*/
// CONFIG
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#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
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7
#include <stdio.h>
#include <stdlib.h>
void main() {
TRISD = 0; //Puertos
TRISA=0B11111111;
PORTA=0B00000000;
ADCON0=0B01100000;
ADCON1=0B10000000;
int i;
TRISD=0x00;
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();
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;
Celsius =voltaje*100.0;
Lcd_Set_Cursor(1,1);
Lcd_Write_String(s);
Lcd_Set_Cursor(2,1);
Lcd_Write_String(s)
__delay_ms(800);
Lcd_Shift_Left();
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