//功能：显示两行英文字符
/***********************头文件*********************/
#include "regx52.h"
#define uint unsigned int
#define uchar unsigned char

sbit lcdrs=P1^5;      //1602：0写指令，1写数据
sbit lcdwr=P1^6;	  //1602读写信号
sbit lcden=P1^7;	  //1602片选信号

uchar code dispbuf[]=" i love mcu";
uchar code dispbuf1[]="welcome to using";

/***********************1ms延时函数**********************/
void delayms(uint ms)
{
	uint y;
	while(ms--)
	{
		for(y=0;y<125;y++);
	}
}												  

/***********************LCD写指令 写数据**********************/
void write_comdata(uchar rs,uchar comdata)
{
	lcdrs=rs;			//0写指令，1写数据
	lcdwr=0;			//0写数据，1读数据
	P0=comdata;
	;
	lcden=1;
	delayms(1);
	lcden=0;	
}

/***********************指针形式写一个字符串*********************/
void write_charchuan(uchar add, uchar *zfc)
{
	write_comdata(0,add);
	for(;*zfc!='\0';zfc++)
	{
		write_comdata(1,*zfc);
	}

}

/***********************LCD初始化*********************/
void lcdinitial()
{
	lcden=0;									  
	write_comdata(0,0x38);		//显示模式5*7
	write_comdata(0,0x0c);
	write_comdata(0,0x06);		//设置指针+1 屏幕不移动
	write_comdata(0,0x01);		//清屏
    write_comdata(0,0x80);		//初始化显示地址
}															  

/**********************主函数*********************/
main()
{
	lcdinitial();						//液晶显示初始化
	write_charchuan(0x80,dispbuf);		//写第二行字
	write_charchuan(0x80+0x40,dispbuf1);//写第一行字
									//为稳定性考虑,最好把它写到循环里面
	while(1);
}







