首页 > 其他分享 >oled显示屏(128*64bit)使用——stm32学习总结

oled显示屏(128*64bit)使用——stm32学习总结

时间:2022-11-16 21:55:31浏览次数:57  
标签:取模 0xc0 64bit 0x00 stm32 oled 0x80 0xff 0x0c

正点原子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

相关文章