2107|5

6841

帖子

11

TA的资源

版主

楼主
 

墨水屏E028A01-EPC-A1局部刷新函数 [复制链接]

 
本帖最后由 lugl4313820 于 2023-4-4 22:25 编辑

今天学习使用2.9寸墨白墨水屏驱动,下面的局站刷新的函数:

/*功能:局站刷新墨水屏指定区域

*输入参数:x_start  x起始坐标

                  y_start  y起始坐标

                 PART_COLUMN  字符横向像素点

                 PART_LINE          字符纵向像素点

*/
void EPD_Dis_Part_myself(unsigned int x_start,unsigned int y_start,const unsigned char * datas,  unsigned int PART_COLUMN,unsigned int PART_LINE  )

{

    unsigned int i;  
    unsigned int x_end,y_start1,y_start2,y_end1,y_end2;
    x_start=x_start/8;              //转换为byte 一次纵向写8个像素  x轴起始坐标
	x_end=x_start+PART_LINE/8-1;   // x轴结束坐标
    y_start1=0;                    // y轴开始坐标
	y_start2=y_start-1;            // y轴结束坐标
	if(y_start>=256)              //2.9寸屏 横向为256个像素点,如果大于256测从头开始
	{
		y_start1=y_start2/256;    //高位
		y_start2=y_start2%256;    //低位
	}

    //处理y轴结束坐标
    y_end1=0;
	y_end2=y_start+PART_COLUMN-1;
	if(y_end2>=256)
	{
		y_end1=y_end2/256;
		y_end2=y_end2%256;		
	}
    //设置 绘图区域
    Epaper_Write_Command(0x44);    // 0x44 为设置x轴起始坐标  set RAM x address start/end, in page 35
	Epaper_Write_Data(x_start);    // 先写起始x坐标   RAM x address start at 00h;
	Epaper_Write_Data(x_end);      // 后写结束x坐标   RAM x address end at 0fh(15+1)*8->128 
	Epaper_Write_Command(0x45);    // 0x45 为设置y轴起始坐标 set RAM y address start/end, in page 35
	Epaper_Write_Data(y_start2);   // 先写起始y坐标高8位 RAM y address start at 0127h;
	Epaper_Write_Data(y_start1);   // 再写起始y坐标低8位 RAM y address start at 0127h;
	Epaper_Write_Data(y_end2);     // 先写结束y坐标高8位 RAM y address end at 00h;
	Epaper_Write_Data(y_end1);     // 再写起始y坐标低8位	
    
    //设置 数据写入区域
    Epaper_Write_Command(0x4E);   //0x4E  set RAM x address count to 0;
	Epaper_Write_Data(x_start);   //设置写入区域x起始地址
	Epaper_Write_Command(0x4F);   // set RAM y address count to 0X127;    
	Epaper_Write_Data(y_start2);  //设置写入区域y起始地址高8位
	Epaper_Write_Data(y_start1);  //设置写入区域y起始地址低8位

    // 开始写入数据
    Epaper_Write_Command(0x24);   // Write Black and White image to RAM
    for(i=0;i<PART_COLUMN*PART_LINE/8;i++)
    {                         
     Epaper_Write_Data(*datas);
			datasA++;
    } 
   
    EPD_Part_Update();  //局部更新数据
}

 

最新回复

异曲同工     详情 回复 发表于 2023-4-6 08:39
点赞(1) 关注
 
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

这一段代码写的很好,比较详细和具备参考性。是个比较好的参考资料。

点评

感谢肯定。  详情 回复 发表于 2023-4-5 10:01
 
 
 

回复

6841

帖子

11

TA的资源

版主

板凳
 
yegenihao 发表于 2023-4-5 09:33 这一段代码写的很好,比较详细和具备参考性。是个比较好的参考资料。

感谢肯定。

 
 
 

回复

6060

帖子

7

TA的资源

版主

4
 

局部刷新需要用到缓存吗?       

点评

这个是没有用缓存的,好象是他有两个页面,交替显示。 // 开始写入数据 Epaper_Write_Command(0x24); // Write Black and White image to RAM for(i=0;i<PART_COLUMN*PART_LINE/8;i++) { Epaper_Wri  详情 回复 发表于 2023-4-5 14:43
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

6841

帖子

11

TA的资源

版主

5
 
秦天qintian0303 发表于 2023-4-5 10:25 局部刷新需要用到缓存吗?       

这个是没有用缓存的,好象是他有两个页面,交替显示。

  • // 开始写入数据
  • Epaper_Write_Command(0x24); // Write Black and White image to RAM
  • for(i=0;i<PART_COLUMN*PART_LINE/8;i++)
  • {
  • Epaper_Write_Data(*datas);
  • datasA++;
  • }
  • 直接写入屏的

点评

异曲同工    详情 回复 发表于 2023-4-6 08:39
 
 
 

回复

6060

帖子

7

TA的资源

版主

6
 
lugl4313820 发表于 2023-4-5 14:43 这个是没有用缓存的,好象是他有两个页面,交替显示。 // 开始写入数据 Epaper_Write_Command(0x ...

异曲同工  

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表