手把手教你驱动电子墨水屏——刷新初始化(全刷)
今天来更新下,上周的内容讲了硬件以及硬件接口程序,今天来聊一聊刷新的初始化
电子墨水屏的刷新初始化代码可以分三种 全刷 快刷 局刷 开整 !!!
1、首选说说全刷,顾名思义就是全屏刷新,那么显示的状态就是 闪屏3次刷新一屏内容(大家可以自行测试),上代码
官方代码:
void EPD_HW_Init(void)
{
EPD_W21_RST_0; // Module reset
delay_xms(10);//At least 10ms delay
EPD_W21_RST_1;
delay_xms(10); //At least 10ms delay
Epaper_READBUSY();
Epaper_Write_Command(0x12); //SWRESET
Epaper_READBUSY();
Epaper_Write_Command(0x01); //Driver output control
Epaper_Write_Data(0xF9);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x11); //data entry mode
Epaper_Write_Data(0x01);
Epaper_Write_Command(0x44); //set Ram-X address start/end position
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x0F); //0x0F-->(15+1)*8=128
Epaper_Write_Command(0x45); //set Ram-Y address start/end position
Epaper_Write_Data(0xF9); //0xF9-->(249+1)=250
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x3C); //BorderWavefrom
Epaper_Write_Data(0x05);
Epaper_Write_Command(0x21); // Display update control
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x80);
Epaper_Write_Command(0x18); //Read built-in temperature sensor
Epaper_Write_Data(0x80);
Epaper_Write_Command(0x4E); // set RAM x address count to 0;
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x4F); // set RAM y address count to 0X199;
Epaper_Write_Data(0xF9);
Epaper_Write_Data(0x00);
Epaper_READBUSY();
}
哈哈哈,罗里吧嗦的都是什么鬼东西,这些命令数据啊,自行的去查查IC手册里写的什么意思,ShingMan那研究了下简化了代码如下
void EPD_HW_Init(void)
{
EPD_W21_RST_0; // Module reset
delay_xms(10);//At least 10ms delay
EPD_W21_RST_1;
delay_xms(10); //At least 10ms delay
Epaper_Write_Command(0x12); //SWRESET
Epaper_READBUSY();
Epaper_Write_Command(0x21); // 显示更新控制
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x20);
Epaper_READBUSY();
}
解释下代码,首先要复位一下,紧接着就是获取屏幕状态(0x12),如果不忙的情况下那,就写入显示更新控制1命令(0x21),关于数据显示的方式那我这里都是正常显示方式,所以下边的两个写寄存器数据都是0x00,接下来就写入激活显示设置就可以了,也可以理解成使能,各位看官老爷们可以试着操作下,看看小弟说的是否正确!!!
OK 这期就先到这,欢迎大家在下方留言,请关注ShiningMan !!! 下期更新快刷&局刷
浙公网安备 33010602011771号