lcd1602字符串显示问题

AT89C52
为什么我LCD1602,只能显示字符,但不能显示字符串

img

img

img

看着图和程序都没啥问题,是不是液晶初始化有啥问题

img


/主函数/
void main(void)
{

LCD_init();
LCD_clear();
LCD_Write_String(0,0,"1234");
while(1)
{
}

}
/////////////
#include <lcd1602.h>
#include <Common.h>

#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1

//LCD 控制线接口
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

uchar Convert(uchar In_Date)
{

return In_Date;

}

void LCD1602_write_word(unsigned char *s)
{
while(*s>0)
{
LCD_write_Data(*s);
s++;
}
}

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_write_com(0x80 + x);
}
else
{
LCD_write_com(0xC0 + x);
}
while (*s)
{
LCD_write_Data( *s);
s ++;
}
}

//
/* 写一字节指令 */
/
/
void LCD_write_com(unsigned char com)
{
RW =0;
RS_CLR;
EN_SET;
P0 = com;
delay_us(5);
EN_CLR;
}
//
/* 写一字节数据 */
/
/
void LCD_write_Data(unsigned char Data)
{
RW =0;
RS_SET;
EN_SET;
P0 = Data;
delay_us(5);
EN_CLR;
}
//
/* 清屏 */
/
/
void LCD_clear(void)
{
LCD_write_com(0x01);
delay_ms(5);
}

//
/* 在指定位置写字符 */
/
/
void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_write_com(0x80 + x);
}
else
{
LCD_write_com(0xC0 + x);
}
LCD_write_Data( Data);
}
//
/* lcd初始化 */
/
/
void LCD_init(void)
{
LCD_write_com(0x38); //显示模式设置
delay_ms(5);
LCD_write_com(0x0c); //显示开及光标设置
delay_ms(5);
LCD_write_com(0x06);//显示光标移动位置
delay_ms(5);
LCD_write_com(0x01);//显示清屏
}