I'm using this code to interface LM35 with 16F877A
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
char *tempC = "000.0";
unsigned int tempinC;
unsigned long temp_value;
void Display_Temperature( ) {
if (tempinC/10000)
tempC[0] = tempinC/10000 + 48;
else tempC[0] = ' ';
tempC[1] = (tempinC/1000)%10 + 48;
tempC[2] = (tempinC/100)%10 + 48;
tempC[4] = (tempinC/10)%10 + 48;
Lcd_Out(2, 6, tempC);
}
void main() {
ADCON1 = 0b00000001;
TRISD = 0b00000000;
TRISA = 0b11111111;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(2,1,"temp=");
Lcd_Chr(2,11,223);
Lcd_out(2,12," C");
while(1) {
temp_value = ADC_Read(0);
temp_value = temp_value*488;
tempinC = temp_value/10;
Display_Temperature();
Delay_ms(1000); // Temperature sampling at 1 sec interval
}
}
it works great on the proteus simulator but it didn't work in the real life the Lcd didn't show anything just turned its light on ..
Please any Help .
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
char *tempC = "000.0";
unsigned int tempinC;
unsigned long temp_value;
void Display_Temperature( ) {
if (tempinC/10000)
tempC[0] = tempinC/10000 + 48;
else tempC[0] = ' ';
tempC[1] = (tempinC/1000)%10 + 48;
tempC[2] = (tempinC/100)%10 + 48;
tempC[4] = (tempinC/10)%10 + 48;
Lcd_Out(2, 6, tempC);
}
void main() {
ADCON1 = 0b00000001;
TRISD = 0b00000000;
TRISA = 0b11111111;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(2,1,"temp=");
Lcd_Chr(2,11,223);
Lcd_out(2,12," C");
while(1) {
temp_value = ADC_Read(0);
temp_value = temp_value*488;
tempinC = temp_value/10;
Display_Temperature();
Delay_ms(1000); // Temperature sampling at 1 sec interval
}
}
it works great on the proteus simulator but it didn't work in the real life the Lcd didn't show anything just turned its light on ..
Please any Help .