pcusman
Newbie level 3

Hi to all .
I am making a temperature sensor using LM 35 DZ , pic 18f452 and c18 compiler in mplab ide v 8.4
PROBLEM :-( : LCD not displaying TEMPERATURE (decimal) value .. Although Characters are displayed easily ..Please can someone do some sort of conversion from binary to ascii or whatever is required .
THANK YOU IN ADVANCE
Proteus file attached also : View attachment pic_LCD.rar
I am making a temperature sensor using LM 35 DZ , pic 18f452 and c18 compiler in mplab ide v 8.4
PROBLEM :-( : LCD not displaying TEMPERATURE (decimal) value .. Although Characters are displayed easily ..Please can someone do some sort of conversion from binary to ascii or whatever is required .
THANK YOU IN ADVANCE
Proteus file attached also : View attachment pic_LCD.rar
Code:
#include<p18f452.h>
#define ldata PORTD
#define rs PORTBbits.RB0
#define rw PORTBbits.RB1
#define en PORTBbits.RB2
# pragma config OSC=HS
# pragma config WDT=OFF
# pragma config LVP=OFF
void lcdcmd (unsigned char value);
void lcddata (unsigned char value);
void MSDelay (unsigned int itime);
void main(void)
{
unsigned char L_BYTE,H_BYTE,Bin_TEMP;
unsigned char temp1,temp2;
//TRISC=0;
TRISD=0;
TRISB=0;
TRISAbits.TRISA0=1;
TRISAbits.TRISA2=1;
ADCON0=0x81;
ADCON1=0xC5;
en=0;
MSDelay(250);
lcdcmd(0x38);
MSDelay(250);
lcdcmd(0x0E);
MSDelay(15);
lcdcmd(0x01);
MSDelay(15);
lcdcmd(0x06);
MSDelay(15);
lcdcmd(0x86);
lcdcmd(0x01);
MSDelay(15);
MSDelay(15);
lcddata('T');
MSDelay(15);
lcddata('E');
MSDelay(15);
lcddata('M');
MSDelay(15);
lcddata('P');
MSDelay(15);
lcddata(':');
MSDelay(15);
lcddata(Bin_TEMP);
MSDelay(15);
lcddata(temp1);
MSDelay(15);
lcddata(temp2);
while(1)
{
////***********************************////////
ADCON0bits.GO=1;
while(ADCON0bits.DONE == 1)
L_BYTE=ADRESL;
H_BYTE=ADRESH;
L_BYTE>>=2;
L_BYTE&=0x3F;
H_BYTE<<=6;
H_BYTE&=0Xc0;
Bin_TEMP=L_BYTE | H_BYTE;
temp2=0x00;
temp1=0x00;
MSDelay(250);
temp1 = Bin_TEMP/10;
temp1 =temp1 + 48;
MSDelay(250);
temp2 = Bin_TEMP % 10;
temp2 =temp2+48;
//PORTB=Bin_TEMP;
////***********************************////////
//conversion=(5.0*Bin_TEMP)/1024.0;
// display result of ADC in LCD
// print_float(conversion);
//MSDelay(250);
//MSDelay(250);
//MSDelay(250);MSDelay(250);MSDelay(250);MSDelay(250);
}
}
void lcdcmd (unsigned char value)
{
ldata =value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
}
void lcddata (unsigned char value)
{
ldata = value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
}
void MSDelay (unsigned int itime)
{
unsigned int i;
unsigned int j;
for(i=0;i<itime;i++)
for(j=0;j<135;j++);
}