u8g2库中文以及图片的显示入门

使用的是0.96寸的四脚OLED,芯片为ESP-WROOM-32。

汉字滚动:
(屏幕为128x64)

int y = 1, x = 0;   //改变y的值可以调节位移速度
void loop()
{
    if (x <= 256)
    {
      u8g2.clearBuffer();                         
      u8g2.setFont(u8g2_font_unifont_t_chinese1); //设置字体
      u8g2.setCursor(x, 15);                      //tx=x,ty=y(x轴[128],y轴[64])
      u8g2.print("中文");
      u8g2.setCursor(x - 128, 15);              
      u8g2.print("中文");
      delay(20);         //延时程序,可以降低位移速度
      x = x + y;
      u8g2.sendBuffer(); 
    }
    else
    {
      x = 0;
    }
}

字库建立的方法请参考:Arduino驱动LED128X64 - U8g2 自定义中文字库_在求学的路上越走越远-CSDN博客_u8g2自定义字库

或者通过PCtoLCD2002软件进行取模,这样可以规定字体的大小。如果使用建立字库或者直接使用原始字库,其字体大小时固定的。

图片显示:

static const unsigned char al_logo[] U8X8_PROGMEM = {
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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x80, 0x07,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3C, 0x80, 0x07, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x3C, 0x80, 0x07, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x3C, 0x80, 0x07, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x80, 0xCF, 0x07, 0x3C, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0x83, 0x07, 0x3C, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x81, 0x07, 0x3C, 0x80, 0x07, 0xFC, 0x03, 0x1C, 0x00, 0x3E, 0x1C,
  0xC0, 0x03, 0x3C, 0x80, 0x07, 0xFF, 0x07, 0x7F, 0x80, 0xFF, 0x3F, 0xE0,
  0x01, 0x3C, 0x80, 0x07, 0xFF, 0x8F, 0xFF, 0xC1, 0xFF, 0x3F, 0xF0, 0x00,
  0x3C, 0x80, 0x87, 0xFF, 0xDF, 0xFF, 0xC1, 0xC3, 0x07, 0x7C, 0x00, 0x3C,
  0x80, 0x87, 0x0F, 0xFE, 0xFF, 0xE3, 0x81, 0x03, 0x1E, 0x00, 0x3C, 0x80,
  0xC7, 0x07, 0xFC, 0xE3, 0xE3, 0x81, 0x07, 0x0F, 0x00, 0x3C, 0x80, 0xC7,
  0x07, 0xF8, 0xC1, 0xE7, 0x81, 0x87, 0xFF, 0x07, 0x3C, 0x80, 0xC7, 0x03,
  0xF0, 0x80, 0xE7, 0xC3, 0x87, 0xFF, 0x07, 0x3C, 0x80, 0xC7, 0x03, 0x70,
  0x80, 0xC7, 0xE7, 0x83, 0xFF, 0x07, 0x3C, 0x80, 0xC7, 0x03, 0x78, 0x80,
  0xC7, 0xFF, 0x03, 0x00, 0x00, 0x3C, 0x80, 0xC7, 0x03, 0xF8, 0xC0, 0x87,
  0xFF, 0x01, 0x00, 0x00, 0x3C, 0x80, 0xC7, 0x07, 0xFC, 0xC1, 0xC7, 0x7F,
  0x00, 0x00, 0x00, 0x3C, 0xC0, 0x87, 0x0F, 0xFE, 0xFF, 0xE3, 0x01, 0x00,
  0x00, 0x00, 0x78, 0xC0, 0x83, 0xFF, 0xDF, 0xFF, 0xE3, 0x03, 0x00, 0x00,
  0x00, 0xF8, 0xF1, 0x03, 0xFF, 0x8F, 0xFF, 0xE1, 0xFF, 0x07, 0x00, 0x00,
  0xF0, 0xFF, 0x01, 0xFE, 0x0F, 0xFF, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0xE0,
  0xFF, 0x00, 0xFC, 0x03, 0x7C, 0xC0, 0xFF, 0x1F, 0x00, 0x00, 0x80, 0x3F,
  0x00, 0xF8, 0x01, 0x00, 0xE0, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x20, 0xF0, 0xC7, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
  0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xC0,
  0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF,
  0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x40, 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, 0x00, 0x00,};  //图片取模后的点阵
void setup()
{
  u8g2.begin();
}
void loop()
{
  u8g2.firstPage();
  do
  {
    u8g2.setFont(u8g2_font_ncenB14_tr);    //设置字体
    u8g2.drawXBMP(0, 0, 85, 44, al_logo);  // (0,0)为显示的起始位置;(85,44)为图片的大小,需要根据实际图片的大小来更改
  } while (u8g2.nextPage());
}

图片取模的方法请参考:
(1)(18条消息) U8g2显示BMP图片 PCtoLCD2002取模_在求学的路上越走越远-CSDN博客_pctolcd2002怎么显示图片

(2)(18条消息) 0.96寸OLED显示 图片_Hh刘的博客-CSDN博客_oled显示图片

其他:
一、用户选择界面

  u8g2.firstPage();
  do
  {
    u8g2.setFont(u8g2_font_6x10_tf); 
    u8g2.setFontRefHeightAll();    //这将为按钮内的文本添加一些额外的空间 
    u8g2.userInterfaceMessage("Title1", "Title2", "Title3", " Ok \n Cancel ");  //用户选择界面
  } while (u8g2.nextPage());

二、特殊图形
特殊图像有很多,这是其中的一部分。

  u8g2.firstPage();
  do
  {    u8g2.setFont(u8g2_font_unifont_t_symbols);      //特殊图形,见图标
    u8g2.drawGlyph(5, 20, 0x2603);  //dec 9731/hex 2603 Snowman (对应下图的位置) 
  } while (u8g2.nextPage());

部分图形编号如下图:
在这里插入图片描述
第一次发,如果有什么不对的地方,请各位大佬指出来,我一定改正或者有什么更好的方法也请大佬们能够指点指点。
这里祝大家每天开心,工作愉快,学习天天向上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值