正点原子oled显示屏教程,驱动程序有些缺陷:
1.正点采用的取模方式:从上到下,再从左到右,纵向8点上高位。虽然正点原子提供了取模软件,但是软件的图像取模,没有自带滤波以及色阶选取设置,还必须bmp文件,这需要提前处理图像,不建议使用。并且常用的oled取模方式:从左到右,再从上到下,横向8点左高位。想要现成工具生成的取模数据,需要更改驱动程序。
2.正点原子没有提供图像和汉字显示函数,需要自己写,建议驱动程序取模方式选主流的。
取模工具:奈何col的工具集 (clz.me)(图像取模从左到右,再从上到下,横向8点左高位,或者右高位)
点阵生成软件|字模提取(支持中文) - LED、OLED、LCD、单片机在线取模、中文点阵取模软件、在线显示屏取模 - Arduino|STM32|STM8 - 文字或图片点阵生成软件 (zhetao.com)(取模从左到右,再从上到下,横向8点左高位)
附:从左到右,再从上到下,横向8点左高位的bmp图像显示函数写法。
//居中显示bmp图像,取模从左到右,再从上到下,横向8点左高位 //x,y:图像x*y=宽*高 //*p:图像取模数据 //mode:取反
void OLED_BMP1(u8 x,u8 y,const u8 *p,u8 mode)
{
u16 csize=((u16)(x/8+((x%8)?1:0)))*((u16)y);
u8 temp,t1,x0;
u16 t;
u8 size=x;
//if(x>128||y>64)return;//超出显示范围
x=64-x/2,y=32-y/2;//居中
x0=x;
for(t=0;t<csize;t++)
{
temp=p[t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp<<=1;
x++;
if((x-x0)==size)
{
x=x0;
y++;
break;
}
}
}
}
//表情包取模数据86*64图像 static const unsigned char bitmap_bytes[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x01, 0xff, 0xff, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x07, 0xff, 0x87, 0xe0, 0x00, 0xfc, 0x3f, 0xf8, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x1f, 0x00, 0x00, 0x20, 0x0f, 0x80, 0x07, 0xff, 0x00, 0x00, 0x1f, 0x00, 0x03, 0xf0, 0x07, 0xc0, 0x03, 0xff, 0x00, 0x00, 0x0e, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x0e, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x0c, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc0, 0x07, 0xc0, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x0f, 0xe0, 0x01, 0xe0, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x7f, 0x80, 0x01, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x13, 0xe0, 0xc0, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
显示效果:
图片处理技巧:
选取图片,然后使用windows自带工具裁剪出合适的区域,然后调整图片为x*y(宽*高)大小的后(这一步,是按整张图片比例缩放的,提前裁剪大致相应比例不然图片会畸形,压扁,拉长等),使用取模工具,取出的数据就是相应x*y的数据,然后就不担心图片无法全部显示问题,或者太小。
标签:取模,0xc0,64bit,0x00,stm32,oled,0x80,0xff,0x0c From: https://www.cnblogs.com/superhcc/p/16897650.html