发布网友
共1个回答
热心网友
#include
<reg51.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
xpos
,ypos;
sbit
key=P2^0;
sbit
rs=P3^0;
sbit
rw=P3^1;
sbit
e=P3^2;
void
nop(){}
void
delay(uint
z)
//延时
{
uint
x,y;
for(x=z;x>0;x--)
for(y=112;y>0;y--);
}
void
check()
//判忙
{
rs=0;
rw=1;
e=0;
P1=0xff;
e=1;
nop();
nop();
while(P1&0x80){}
}
void
wrc(uchar
com)
//写指令
{
check();
rs=0;
rw=0;
e=1;
P1=com;
nop();
e=0;
nop();
}
void
wrd(uchar
date)
//写数据
{
check();
rs=1;
rw=0;
e=1;
P1=date;
nop();
e=0;
nop();
}
void
init()
//初始化
{
wrc(0x38);
wrc(0x01);
wrc(0x0c);
wrc(0x06);
}
void
lcdpos()
//内部数据地址指针定位
{
xpos&=0x01;
ypos&=0x1f;
if(xpos==0x00)
wrc(ypos|0x80);
else
wrc((ypos+0x40)|0x80);
}
void
lcdw(uchar
x,uchar
y,uchar
*s)
//在指定的坐标下写字符串
{
xpos=x;
for(ypos=y;ypos<20;ypos++)
{
lcdpos();
wrd(*s);
s++;
}
}
void
main()
{
init();
cgram();
while(1)
{
lcdw(0,0,"##########
");
lcdw(1,1,"!!!!!!!!!!
");
lcdw(2,2,"&&&&&&&&&&
");
lcdw(3,3,"$$$$$$$$$$
");
}
}