kaus9952083382
Member level 4
sir i have interface 16x2 lcd display with microcontroller at89c51 and it is working fine in proteus as well as keil compiler ... but when i m burning hex code and interfacing with my hardware i am not able to get the output .... i m posting my coding over here .... please help me out ... thanks in advance
#include<reg51.h>
#define dp P0
sbit rs=P0^1;
sbit en=P0^2;
sbit rw=P0^3;
lcdcomm(unsigned char val);
lcddat(unsigned char val);
msdelay(unsigned int val);
write_nibble(unsigned int val);
unsigned char mydat[]="hello kaushal";
unsigned char urdat[]="hello amit";
main()
{
P0=0xff;
msdelay(10);
lcdint();
lcdcomm(0x01);
msdelay(1);
lcdcomm(0x80);
msdelay(1);
lcddat('*');
msdelay(1);
lcdcomm(0x82);
msdelay(1);
dis_measure();
lcdcomm(0xc2);
msdelay(1);
dis_d_t();
}
unsigned char z;
lcdint()
{
rs=0;
rw=0;
dp=0x28;
en=1;
msdelay(1);
en=0;
msdelay(1);
lcdcomm(0x28);
msdelay(1);
lcdcomm(0x0f);
msdelay(1);
}
dis_measure()
{
unsigned char z;
for(z=0;z<=15;z++)
{
lcddat(urdat[z]);
msdelay(1);
}
}
dis_d_t()
{
unsigned char z;
for(z=0;z<=15;z++)
{
lcddat(mydat[z]);
msdelay(1);
}
}
/********************************/
lcdcomm(unsigned char val)
{
rs=0;
rw=0;
write_nibble();
}
/*****************************/
lcddat(unsigned char val)
{
rs=1;
rw=0;
write_nibble();
}
/**************************/
msdelay(unsigned int val)
{
unsigned int i,j;
for(i=0;i<=val;i++)
for(j=0;j<=200;j++);
}
/************************/
write_nibble(unsigned int val)
{
unsigned char i,j,k;
i=val&0xf0;
j=dp&0x0f;
dp=j|i;
en=1;
msdelay(1);
en=0;
msdelay(1);
val=val<<4;
i=val&0xf0;
k=dp&0x0f;
dp=k|i;
en=1;
msdelay(1);
en=0;
msdelay(1);
}
#include<reg51.h>
#define dp P0
sbit rs=P0^1;
sbit en=P0^2;
sbit rw=P0^3;
lcdcomm(unsigned char val);
lcddat(unsigned char val);
msdelay(unsigned int val);
write_nibble(unsigned int val);
unsigned char mydat[]="hello kaushal";
unsigned char urdat[]="hello amit";
main()
{
P0=0xff;
msdelay(10);
lcdint();
lcdcomm(0x01);
msdelay(1);
lcdcomm(0x80);
msdelay(1);
lcddat('*');
msdelay(1);
lcdcomm(0x82);
msdelay(1);
dis_measure();
lcdcomm(0xc2);
msdelay(1);
dis_d_t();
}
unsigned char z;
lcdint()
{
rs=0;
rw=0;
dp=0x28;
en=1;
msdelay(1);
en=0;
msdelay(1);
lcdcomm(0x28);
msdelay(1);
lcdcomm(0x0f);
msdelay(1);
}
dis_measure()
{
unsigned char z;
for(z=0;z<=15;z++)
{
lcddat(urdat[z]);
msdelay(1);
}
}
dis_d_t()
{
unsigned char z;
for(z=0;z<=15;z++)
{
lcddat(mydat[z]);
msdelay(1);
}
}
/********************************/
lcdcomm(unsigned char val)
{
rs=0;
rw=0;
write_nibble();
}
/*****************************/
lcddat(unsigned char val)
{
rs=1;
rw=0;
write_nibble();
}
/**************************/
msdelay(unsigned int val)
{
unsigned int i,j;
for(i=0;i<=val;i++)
for(j=0;j<=200;j++);
}
/************************/
write_nibble(unsigned int val)
{
unsigned char i,j,k;
i=val&0xf0;
j=dp&0x0f;
dp=j|i;
en=1;
msdelay(1);
en=0;
msdelay(1);
val=val<<4;
i=val&0xf0;
k=dp&0x0f;
dp=k|i;
en=1;
msdelay(1);
en=0;
msdelay(1);
}