pravin b
Member level 5
- Joined
- May 20, 2012
- Messages
- 85
- Helped
- 2
- Reputation
- 4
- Reaction score
- 1
- Trophy points
- 1,288
- Location
- Mumbai, India
- Activity points
- 2,083
hello mates;
I have written the code for displaying characters on 16*2 LCD with 8051 in C language (in 8 bit mode);
however i could not see any output on my Proteus simulator.
I checked my code again and again, can i have your expert looks please...
thanks & regards,
Pravin B
here is code:::::::::
I have written the code for displaying characters on 16*2 LCD with 8051 in C language (in 8 bit mode);
however i could not see any output on my Proteus simulator.
I checked my code again and again, can i have your expert looks please...
thanks & regards,
Pravin B
here is code:::::::::
Code:
#include<REG51.H>
sbit rs=P0^0; //rs connected to p0.0
sbit rw=P0^1; //rw connected to p0.1
sbit en=P0^2; //en connected to p0.2
sbit busy=P2^7; //busy connected to p2.7
void delay(unsigned int count) //delay subroutine
{
unsigned int i,j;
for(i=0;i<=count;i++)
for(j=0;j<=1275;j++);
}
void ready() //subroutine to check if lcd is busy
{
busy=1; //make busy pin input
rs=0; //rs=low
rw=1; //rw=high
while(busy==0) //check if busy flag is equal to 0
{
en=0;
delay(2);
en=1;
}
}
void lcd_cmd(unsigned int value) //sub. to write commands
{
ready();
P2=value;
rs=0;
rw=0;
en=1;
delay(2);
en=0;
}
void lcd_data(unsigned int value) //sub to write data
{
ready();
P2=value;
rs=1;
rw=0;
en=1;
delay(2);
en=0;
}
void lcd_init() //lcd initializtion
{
lcd_cmd(0x38);
lcd_cmd(0x0E);
lcd_cmd(0x01);
lcd_cmd(0x06);
lcd_cmd(0x80);
}
void main()
{
rs=0; //rs=output
rw=0; //rw=output
en=0; //en=output
P2=0x00; //port2=output
while(1)
{
lcd_init(); //call lcd initializtion
lcd_data('A'); //send char A
lcd_data('b');
lcd_data('c');
lcd_data('D');
delay(50);
}
}