求助12864液晶
1:在12864里是不是页就是行,而每一页里就包含了八行,这样就是八页六十四行的意思?
2:还有一个为什么在清屏是是64列,为什么不是清理128列?12863不是128列吗!
void LCD_clear() //清屏
{
uchar i,j;
cs1=0;cs2=0;
LCD_write_cmd(0xb8+0);
LCD_write_cmd(0x40+0);
for(i=0;i<8;i++) //8页
{
LCD_write_cmd(0xb8+i);
for(j=0;j<64;j++) //清理64列
{
LCD_write_cmd(0x40+j);
LCD_write_data(0x00);
}
}
}3:在主函数中,这些又是为什么?
void LCD_display(uchar page,uchar colnum,uchar *s) //显示函数
{
uchar i,j;
for(i=0;i<2;i++) ///这里为什么是i=2
{
LCD_write_cmd(0xb8+page+i);
LCD_write_cmd(0x40+colnum);
for(j=0;j<16;j++)
LCD_write_data(s[16*i+j]); //这里为什么是16*i+j
}
}4:在忙等待时为什么不是和LCD1602一样。在12864这里是这样的,这样子不是相当于没有读P0的值嘛,相当于是直接给P0赋值P0=0X00;
void LCD_check_busy() //忙检测
{
uchar state;
rs=0;
rw=1;
do
{
P0=0x00;////这样子不是相当于没有读P0的值嘛,相当于是直接给P0赋值P0=0X00
en=1;
state=P0&0x80;
delay(2);
en=0;
}
while(state!=0x00);
}我的理解:128是从左到右是128个像素,从上到下是64个像素,但是屏幕只显示64*64个像素。
清屏没必要清128,因为只有前面64显示出来了,后面没显示的清不清无所谓。
忙信号是先给P0置低,然后和0X80与,如果不忙,得出的结果就不等于0X80,就跳出函数。
12864分两页,一般扫屏的时候分左半屏和右半屏,用CS0和CS1进行片选,所以一次清128列是没有用的,需要分两次清掉左右半屏,这样整个屏才被清掉。