#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^2;
sbit rw=P2^1;
sbit en=P2^0;
sbit lcdbusy=P0^7;
void delay(uchar ms)
{
uchar i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void busy()//判断忙碌
{
P0=0xff;
rs=0;
rw=1;
en=1;
while(lcdbusy);
e=0;
}
void writecom(uchr com)//写指令
{
busy();先忙
P0=com;
rs=0;
rw=0;
en=1;
en=0;
}
void writedat(uchr dat)//些数据
{
busy();先忙
P0=dat;
rs=1;
rw=0;
en=1;
en=0;
}
void zifu(uchar x,uchar *str)//显示字符串口
{
writecom(x|0x80);
while(*str!='\0')
{
writedat(*str++);
delay(130);//延时
}
*str=0;
}
void lcdxian()//初始化
{
writecom(0x38);//设置两行显示
writecom(0x0c);//不显示光标
writecom(0x06);//光标右移
writecom(0x01);//清零
zifu(0x80,"Happy!!");//第一行显示
zifu(0x40,"I LOVE YOU!!");//第二行显示
}
int main()
{
lcdxian();//初始化
while(1);//无限循环
}
|