Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <xc.h>
- #include <stdio.h>
- #define _XTAL_FREQ 64000000L
- #define LCD_DATA_TRIS TRISD
- #define LCD_RS_TRIS TRISAbits.TRISA2
- #define LCD_E_TRIS TRISAbits.TRISA3
- #define LCD_DATA LATD
- #define LCD_RS LATAbits.LATA2
- #define LCD_E LATAbits.LATA3
- #define LED1 LATBbits.LATB0
- #define LED2 LATBbits.LATB1
- #define LED3 LATBbits.LATB2
- #define HEATER LATBbits.LATB4
- #define FAN LATBbits.LATB5
- void init_ADC(void); //Initialize ADC
- void setup (void);
- void delay (unsigned int x);
- void lcd_init8(void);
- void lcd_data(unsigned char data);
- void lcd_cmd(unsigned char data);
- void lcd_setCursor (unsigned char col, unsigned char row);
- void lcd_clear (void);
- unsigned int ADCResult=0;
- float ActualTemp;
- unsigned char stringKeyActual[10];
- void main(void)
- {
- unsigned char i;
- OSCCON=0x76;
- TRISD = 0x00;
- PORTD =0x00;
- TRISBbits.TRISB0=0;
- TRISBbits.TRISB1=0;
- TRISBbits.TRISB2=0;
- TRISBbits.TRISB4=0;
- TRISBbits.TRISB5=0;
- init_ADC();
- setup();
- lcd_init8();
- lcd_setCursor (0,0);
- printf("Hello");
- lcd_setCursor(0,1);
- printf("measurement");
- delay (100);
- lcd_setCursor (0,0);
- printf("Digital");
- lcd_setCursor(0,1);
- printf("Termometer");
- delay (100);
- lcd_clear();
- HEATER = 0;
- FAN = 0;
- while(1)
- {
- ADCResult = 0;
- ActualTemp = (ADCResult*5.0)/10.24; //conver data into temperature (LM35 produces 10mV per degree celcius)
- sprintf (stringKeyActual, "%.2g", ActualTemp ); //comnvert voltage to string
- lcd_setCursor (0,0);
- printf("Temperature");
- lcd_setCursor(0,1);
- printf("C");
- }
- if (ActualTemp > 40)
- {
- LED3=1;
- FAN=1;
- }
- if (ActualTemp < 41 && ActualTemp > 29)
- {
- LED2=1;
- FAN=1;
- }
- if (ActualTemp < 30)
- {
- LED1=1;
- HEATER=1;
- }}
- void lcd_init8(void)
- {
- LCD_DATA_TRIS = 0;
- LCD_RS_TRIS = 0;
- LCD_E_TRIS = 0;
- lcd_cmd(0x38);
- lcd_cmd(0x0c);
- lcd_cmd(0x06);
- lcd_cmd(0x80); }
- void putch (unsigned char data)
- {
- LCD_DATA = data;
- LCD_RS =1;
- LCD_E =1;
- delay (1);
- LCD_E = 0;}
- void lcd_cmd(unsigned char data)
- {
- LCD_DATA = data;
- LCD_RS = 1;
- LCD_E =1;
- delay (1);
- LCD_E = 0;}
- void lcd_setCursor (unsigned char col, unsigned char row);
- {
- lcd_cmd(row*0x40+col+0x80);
- delay (1);
- }
- void lcd_clear(void)
- {
- lcd_cmd(0x01); delay(10);
- }
- void setup (void)
- {
- ADCON1 = 0b00110000;
- ADCON2 = 0b100000011;
- LATA = 0x00;
- LATB = 0X00;
- LATC = 0x00;
- LATD = 0x00;
- LATE = 0x00;
- }
- void delay (unsigned int x)
- {
- for (;x>0;x--)__delay_ms(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement