#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);//無限循環
}
|