Codigo PROYECTO4
Codigo PROYECTO4
Codigo PROYECTO4
Main:
#include <xc.h>
#include <stdio.h>
#include <pic18f4550.h>
#include "config.h"
#include "LCD.h"
#include "uart.h"
float temperatura;
char temp[20];
void main(void)
TRISA = 0xFF;
SPBRG=15; //Byte LSB del registro de velocidad en 129 para una velocidad de 9600 baudios con oscilador de 20Mhz.
ADCON1= 0x0E;
ADCON0= 0x00;
T1CON = 0xC9; //
RCONbits.IPEN = 0;
PIE1bits.TMR1IE=0;
cuenta = 0;
cuenta1 = 0;
lcd_init();
lcd_clear_display();
__delay_ms(180);
lcd_goto(2,1);
lcd_print("TEMPERATURA:");
lcd_goto(10,2);
lcd_dato(0xDF);
lcd_print("C");
ADCON0bits.GO_DONE = 1;
while(ADCON0bits.GO_DONE ==1);
aux = ADRESH;
temperatura = (aux)*(500.0/1023.0);
sprintf(temp,"%.2f ",temperatura);
Write_Text_UART(temp);
__delay_ms(5000);
// __delay_ms(250);
} // Fin de main
TMR0L = 6; // 0.4 ms
cuenta++;
if(cuenta==12500)
lcd_goto(4, 2);
cuenta = 0;
INTCONbits.TMR0IF = 0;
TMR1L = 0xAF; // 10 ms
TMR1H = 0x3C;
cuenta1++;
if(cuenta1==612)
cuenta1 = 0;
PIR1bits.TMR1IF = 0;
}
“config.h”:
#pragma config CPUDIV = OSC1_PLL2 // System Clock Postscaler (20 MHz/1 = 20 MHz)
#pragma config CCP2MX = OFF // CCP2 MUX bit (CCP2 is multiplexed with RB3)
#pragma config PBADEN = OFF // PORTB A/D (PORTB<4:0> configured as digital I/O)
#pragma config MCLRE = ON // MCLR Pin Enable bit (MCLR pin enabled)
Esta primera parte debe ser modificada por el usuario, para setear los pines del Micro
*/
#define TRISRS TRISBbits.TRISB4 //Se define el Tris para el RS Para poderlo configurar como Salida
#define TRISEN TRISBbits.TRISB5 //Se define el Tris para el E Para poderlo configurar como Salida
#define PUERTOTRS TRISD // Se define el TRIS del puerto que se usa como interfaz en este caso el Puerto C
#define PUERTO LATD // Se define El LAT del puerto que se usa como interfaz en este caso el C
void lcd_init();
void lcd_control(char);
void lcd_dato(char);
void lcd_clear_diplay();
void lcd_cursor_home();
void lcd_print(char*);
void lcd_time_control();
/*
* Configuracion de Puertos
*/
void lcd_init() {
PUERTOTRS = 0b00001111; //Configuramos El nibble mas significativo como Salidas (Bus de 4 Bits))
RS = 0; //Aseguramos RS en 0
EN = 0; //Aseguramos E en 0
/*
lcd_control(0x28); //Configura el LCD a 4 Bits, 2 Lineas Y Fuente de 5*8; Lineas Esto se llama el function set
lcd_control(0x0C); //LCD Prendido, Cursor Apagado, Destello Cursor apagado; Esto se Llama Diplay on/off Control
lcd_control(0x06); //No rota el mensaje Y se incrementa el contador de direccion. Esto se Llama Entry Mode Set
/*
* teniendo en cuenta que es a 4 bits, por lo tanto tiene que hacer cambio de ninbles
*/
RS = 0;
lcd_time_control();
lcd_time_control();
__delay_ms(2);
/*
*/
RS = 1;
lcd_time_control();
lcd_time_control();
__delay_us(50);
/*
void lcd_clear_display() {
lcd_control(0x01);
/*
*/
void lcd_cursor_home() {
lcd_control(0x02);
/*
*/
/*
*/
char posicion;
switch (y) {
break;
break;
break;
lcd_control(posicion);
lcd_print(dato);
}
/*
*/
char posicion;
switch (y) {
break;
break;
break;
lcd_control(posicion);
/*
*/
int i;
lcd_dato(caracter[i]);
/*
*/
void lcd_time_control() {
EN = 1;
__delay_us(5);
EN = 0;
__delay_us(5);
}
“uart.h”:
char Read_UART()
return RCREG;
unsigned int i;
for(i=0;i<length;i++)
Output[i] = Read_UART();
TXREG = data;
int i;
Write_UART(text[i]);