用STC90C516RD+单片机做12864显示动画的问题
是不是数据的问题
我仔细看了下,确切的说是,他把有点16个点显示到了左边(整列都是那样),查看了数据是对的,不知道是怎么回事?
程序时这样的: void check_busy()
{
rs=0;
rw=1;
e=1;
DataPort=0xff;
while((DataPort&0x80)==0x80);
e=0;
}
void write_cmd(uchar cmd)
{
check_busy();
rs=0;
rw=0;
e=1;
DataPort=cmd;
delayUs(5);
e=0;
delayUs(5);
}
void write_data(uchar dat)
{
check_busy();
rs=1;
rw=0;
e=1;
DataPort=dat;
delayUs(5);
e=0;
delayUs(5);
}
void init()
{
delayMs(40);
psb=1;
delayMs(1);
res=0;
delayMs(5);
res=1;
delayMs(10);
write_cmd(0x30);
delayMs(5);
write_cmd(0x0c);
delayMs(5);
write_cmd(0x01);
delayMs(5);
}
void clear_gcrom()
{
uchar i,j,k;
lcd_x=0x80;
lcd_y=0x80;
write_cmd(0x34);
for(i=0;i<2;i++)
{
for(j=0;j<32;j++)
{
write_cmd(lcd_y+j);
write_cmd(lcd_x);
for(k=0;k<16;k++)
{
write_data(0x00);
}
}
lcd_x=0x88;
}
write_cmd(0x36);
write_cmd(0x30);
}
void write_image(uchar*p)
{
uchar i,j,k;
write_cmd(0x34);
lcd_y=0x80;
lcd_x=0x80;
for(i=0;i<2;i++)
{
for(j=0;j<32;j++)
{
write_cmd(lcd_y+j);
write_cmd(lcd_x);
for(k=0;k<16;k++)
{
write_data(*p++);
}
}
lcd_x=0x88;
}
write_cmd(0x36);
write_cmd(0x30);
}
求帮忙啊。