微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助12864液晶

求助12864液晶

时间:10-02 整理:3721RD 点击:
求高手帮帮忙,我看了一些资料,但是就是还是很不清楚。希望哪位大侠可以帮帮忙指点一下。也可以加QQ1003768663
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列是没有用的,需要分两次清掉左右半屏,这样整个屏才被清掉。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top