sfr P0=0x80;
sfr P1=0x90;
sfr P2=0xa0;
sfr P3=0xb0;
sbit cs1=P2^0;
sbit cs2=P2^1;
sbit e=P2^2;
sbit rw=P2^3;//可以直接接地
sbit di=P2^4;
sbit rst=P2^5;//默认为1,可以直接接电源
extern unsigned char code abc[] ;
ys(int ms)
{
int k,d;
for(k=0;k<ms;k++)
for(d=0;d<123;d++);
}
write(bit s,unsigned char d)
{
rw=0;//允许写
di=s;//0=命令,1=数据
P0=d;//数据
e=1;//有效,下降沿,上升沿都行?
e=0;//无效
rw=1;//禁止写
}
writexy(unsigned char x,unsigned char y,unsigned char d)
{
cs1=(y/64)%2;//cs1=y/64,//左半=0
cs2=~cs1;//右半=0
write(0,0x3f);//打开显示
write(0,0xc0);//开始地址
write(0,0xb8+x);//x地址
write(0,0x40+(y%64));//y地址
write(1,d);//写数据,高位在下
}
hzk16(unsigned char x,unsigned int y,unsigned int d)
{
unsigned int k;
for(k=0;k<16;k++)
{
writexy(x*2+0,y*16+k,abc[d*32+k]);//上半汉字
writexy(x*2+1,y*16+k,abc[d*32+k+16]);//下半汉字
}
}
main()
{
unsigned int k,d;
while(1)
for(k=0;k<4;k++)//行
for(d=0;d<8;d++)//列
{
hzk16(k,d,d);
}
}