软件使用步骤参考
数据数量问题
对于一个单层图片来说,可以分辨率可以使用像素的数量来描述。图片的长宽由多少像素组成就是所说的图片的长宽。这种说法也不太准确,一般人为分辨率越大,约清晰。这种认知是在同样长度中有更多像素,也就是看起来更加清晰,没有颗粒感。
那么知道屏幕的长宽的像素,又是怎么知道需要多大的数组能控制整个屏幕像素的显示呢。这要根据屏幕驱动的方式来说,这里是以一个以8266驱动板的程序中的2.13inch_e-Paper_(B)_V3_Specification为例
这个驱动中有下面一句话,很简单的条件选择,表示图片的宽度像素值是否被8整除,不能整除就在除以8得到的值还加1.
下图是寄存器手册中,水平和垂直像素个数,发现表示像素水平的前5个bit位,剩下的3位在二进制中刚好表示8.所以整个图片的表示方式是以横向以字节为单位的方式一行一行的扫描,每个字节表示8个像素值,例如152296的图片需要的单层图像的数据量是:152296/8=5624个以字节为单位的数据数组。
Width = (EPD_2IN13BC_WIDTH % 8 == 0)? (EPD_2IN13BC_WIDTH / 8 ): (EPD_2IN13BC_WIDTH / 8 + 1);
方向问题
下面看取图片数据软件的设置:竖直扫描、从右到左、颜色反转。
颜色问题
在上面提取图片数据时设置了颜色的反转,这大概是图片对像素值的设置问题,下图中个人将提取的数据转换为像素的形式,这是设置颜色反转后,黑色是0白色是1。很多时候显示不正常没达到预期一般都是对图像进行处理,很少去修改程序。下面对提取后的数据显示代码
void pint_binary(unsigned char num) //8bit数据二进制方式显示
{
char k;
for (k=7;k>=0;k--)
{
if ((num&(1<<k))==(1<<k)) //判断每一位是不是1
printf("%c",'1');
else
printf("%c",'0');
}
}
int main(void)
{
unsigned int i,j;
for (i=0;i<296;i++)
{
for(j=0;j<19;j++) //一行扫描152个像素使用了19个字节
{
pint_binary(gImage_2in13c_b[i*19+j]) ;//图片像素数组
}
printf("\n");
}
printf("\n");
return 0;
}