首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

12864液晶模块驱动5

12864液晶模块驱动5

//图片模式清屏函数:

void Clear12864Screen()

{

   unsigned char i,j;

   Write12864Command(0x34);//功能设定:8位控制方式,使用扩充指令

   Write12864Command(0x36);//使用扩充指令,绘图显示控制

   for(i=0;i<32;i++)

//ST7920可控制256*32点阵(32256列),而12864液晶实际的行地址只有0-31,

//12864液晶的32-63行的行是0-31行地址从第128列划分一半出来的,所以分为上下两半屏,

//也就是说第0行和第32行同属一行,行地址相同;1行和第33行同属一行,以此类推

   {                           

          Write12864Command(0x80|i);//写行地址(垂直地址)

          Write12864Command(0x80);//写列地址(水平地址)

          for(j=0;j<32;j++)

                    Write12864Data(0x00);//清屏

   }

}



//在任意位置显示任意大小的图片函数:

void LCD12864DisplayPictrue(unsigned char y,unsigned char x,

                              unsigned char px,unsigned char py, unsigned char *pp)


//y-起始行(数值0-63),x-起始列(16位宽,数值0-7),



//px-图片宽度,py-图片高度,pp-指针指向图片数组


//因为上下屏的地址不连续,要在任意位置显示完整的图像,处理起来比较繁琐

{

   unsigned char i,j,k;

   Clear12864Screen();//清屏

   if(y<32)//如果起始行在上半屏

   {

          k=32-y;//算出上半屏的行数

          for(i=0;i<k;i++,y++)//上半屏行数

          {

                     Write12864Command(0x80|y);//写行地址(垂直地址)

                     Write12864Command(0x80|x);//写列地址(水平地址)

                     for(j=0;j<px/8;j++)

                              Write12864Data(pp[i*px/8+j]);//写图片数据

          }

          y=0;//下半屏起始行,接上半屏继续写数据

          for(;i<py;i++,y++)//下半屏剩下的行数

          {

                     Write12864Command(0x80|y);//写行地址(垂直地址)

                     Write12864Command(0x80|(8+x));//写列地址(水平地址)

                     for(j=0;j<px/8;j++)

                              Write12864Data(pp[i*px/8+j]);//写图片数据

          }

   }

   else //如果起始行在下半屏

   {

          for(i=0;i<py;i++,y++)//行数

          {

                     Write12864Command(0x80|(y-32));//写行地址(垂直地址)

                     Write12864Command(0x80|(8+x));//写列地址(水平地址)

                     for(j=0;j<px/8;j++)

                               Write12864Data(pp[i*px/8+j]);//写图片数据

          }

   }

}   
返回列表