请教各位单片机大佬 我在学习1602液晶屏显示 但为什么会这样呢
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="I Love You";
uchar code table2[]="xiao ming";
uchar *str1=table1;
uchar *str2=table2;
#define LcdDB P0
sbit LcdEN=P2^3;
sbit LcdRW=P2^1;
sbit LcdRS=P2^0;
void Lcd_Init();
void LcdWrCmd(uchar cmd);
void LcdWrDat(uchar dat);
void LcdBusy();
void Lcd_Show(uchar x,uchar y);
void main()
{
Lcd_Init();
Lcd_Show(2,0);
while(*str1 !='\0')
{
LcdWrDat(*str1++);
}
Lcd_Show(1,1);
while(*str2 !='\0')
{
LcdWrDat(*str2++);
}
while(1)
{
;
}
}
void Lcd_Init()
{
LcdWrCmd(0x38);
LcdWrCmd(0x0c);
LcdWrCmd(0x06);
LcdWrCmd(0x01);
}
void LcdWrCmd(uchar cmd)
{
LcdBusy();
LcdRS=0;
LcdRW=0;
LcdDB=cmd;
LcdEN=1;
LcdEN=0;
}
void LcdWrDat(uchar dat)
{
LcdBusy();
LcdRS=1;
LcdRW=0;
LcdDB=dat;
LcdEN=1;
LcdEN=0;
}
void LcdBusy()
{
LcdDB=0xFF;
LcdRS=0;
LcdRW=1;
LcdEN=1;
while(LcdDB&0x80);
LcdEN=0;
}
void Lcd_Show(uchar x,uchar y)
{
uchar addr;
if(y==0)
{
addr=0x00+x;
}
else
addr=0x40+x;
LcdWrCmd(addr|0x80);
}