代码供大家参考!
#include<reg52.h>
#define unchar unsigned char
#define unint  unsigned int
unchar nb,ww,x;
sbit SCL=P1^1;
sbit SDA=P1^2;
sbit RS=P2^4;
sbit RW=P2^5;
sbit EN=P2^6;
void dslcd_wradd(unchar com);
void dslcd_wrdate(unchar date);
void lcd_xy(unchar aa,unchar bb);
void init_1602();
unchar code tebol[]={"   www.eepwcom.cn.welcom to MCUDIY-51   "};
void delay(unint z)
{
 unint x,y;
 for(x=z;x>0;x--)
    for(y=120;y>0;y--);
 
 }
void main()
{ 
 SCON=0x50; //串口方式1,允许接收
 T2CON=0x34; //设定时器2 开始计数 
  RCAP2H = 0xFF;
  RCAP2L = 0xD9;//设定波特率为9600
  TR2=1;//启动定时器2
  ES=1;
  EA=1;
  init_1602();
  lcd_xy(1,2);
  for(x=0;x<40;x++)
  {
   dslcd_wrdate(tebol[x]);
   }
  lcd_xy(2,2); 
  
 while(1)
 {
  
  
  } 
  
 
 }
 
void uart0() interrupt 4
{
 
  ww=SBUF;   
  if(RI==1)
  {
   RI=0;
   REN=0;
   //delay(1);
   SBUF=ww;
   REN=1;
   dslcd_wrdate(ww);
  }  
 
 } 
void dslcd_wradd(unchar com)
{
 RS=0;
 RW=0;
 EN=0;
 P0=com;
 delay(2);
 EN=1;
 delay(2);
 EN=0; 
} 
 
void dslcd_wrdate(unchar date)
{
 RS=1;
 RW=0;
 EN=0;
 P0=date;
 delay(2);
 EN=1;
 delay(2);
 EN=0; 
} 
  
 
void lcd_xy(unchar aa,unchar bb)
{
 unchar k;
 if(aa==1)
 k=0x80+bb;  
 else
 k=0xC0+bb; 
 dslcd_wradd(k);
 delay(20);
} 
void init_1602()
{
 dslcd_wradd(0x38);
 delay(5);
 dslcd_wradd(0x01);
 delay(5);
 dslcd_wradd(0x06);
 delay(5);
 dslcd_wradd(0x0d);
 delay(2);
 }