ADC 0804 and 89c51 interfacing

Status
Not open for further replies.

manigr8

Newbie level 2
Joined
Jul 10, 2013
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
21
Hi, I'm facing problem interfacing ADC and 89c51. I'm giving an analog voltage to ADC 0804 from 0-5 volts and the output is connected to port 1 of 89c51. the port 2 of microcontroller is connected to 8 bit LCD. I want to callibrate, when i change the voltage from 0-5 the LCD displays from 0-100. Vref/2 is open, step size is 19.53mV. I've trid a lot but there is nothing on the Lcd except a cursor that shifts towads right three time. I would be very thankful if someone help me trace out the fault.




#include <reg51.h>
#define output P2
#define cmdport P3
#define input P1

sbit read = P3^5;
sbit write =P2^2;
sbit INTR =P2^7;
sbit rs= cmdport^0; //lcd instruction
sbit rw=cmdport^1;
sbit e = cmdport^6;
void delay(unsigned int);
void lcdcmd(unsigned int);
void lcd();
void lcddata(unsigned int);


void main ()
{
unsigned char temp,x,a,b,c,y;

INTR=1;
read=1;
write=1;

while (1)
{
lcd();

write=0;
write=1;
while(INTR==1);
read=1;

y=input;
temp=y/2.55;
x=temp/10;
a=temp%10;
b=x%10;
c=x/10;

lcddata(c);
lcddata(b);
lcddata(a);

read=0;

}
}


void lcd()
{

delay(10);
lcdcmd(0x38); //lcd command
delay(10);
lcdcmd(0x0E); //lcd command
delay(10);
lcdcmd(0x01);
delay(10);
lcdcmd(0x06);
delay(10);

}


// DELAY

void delay(unsigned int msec )
{
unsigned int i;
for (i=0; i<msec; i++)
{

TMOD=0x01;
TH0=0x00;
TL0=0x0f;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;

}
}

// LCD instructions

void lcdcmd(unsigned int item)
{
P2 = item;
rs=0;
rw=0;
e=1;
delay(1);
e=0;

}
// Display Value

void lcddata(unsigned char j)
{
rs=1;
rw=0;
P2 =j;
e=1;
delay(1);
e=0;
}
 


Thanks. It helped a lot
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…