Arduino UNO u8glib显示中文-亲测可用

思路:

1、字体取模,后建立小型静态字库

2、u8glib函数画图显示汉字,print显示内容

说明:

取模软件及参数设置:

Arduino UNO u8glib显示中文-亲测可用_第1张图片

Arduino UNO u8glib显示中文-亲测可用_第2张图片

小四对应16*16字体

Arduino UNO u8glib显示中文-亲测可用_第3张图片

按图配参数

二、代码部分

字库定义:

#include 

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);  // I2C / TWI

static const uint8_t PROGMEM wen[] = {
  /*--  文字:  温  --*/
  /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  0x00, 0x00, 0x23, 0xF8, 0x12, 0x08, 0x12, 0x08, 0x83, 0xF8, 0x42, 0x08, 0x42, 0x08, 0x13, 0xF8,
  0x10, 0x00, 0x27, 0xFC, 0xE4, 0xA4, 0x24, 0xA4, 0x24, 0xA4, 0x24, 0xA4, 0x2F, 0xFE, 0x00, 0x00,
};

static const uint8_t PROGMEM shi[] = {
  /*--  文字:  湿  --*/
  /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  0x00, 0x00, 0x27, 0xF8, 0x14, 0x08, 0x14, 0x08, 0x87, 0xF8, 0x44, 0x08, 0x44, 0x08, 0x17, 0xF8,
  0x11, 0x20, 0x21, 0x20, 0xE9, 0x24, 0x25, 0x28, 0x23, 0x30, 0x21, 0x20, 0x2F, 0xFE, 0x00, 0x00,
};

static const uint8_t PROGMEM du[] = {
  /*--  文字:  度  --*/
  /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  0x01, 0x00, 0x00, 0x80, 0x3F, 0xFE, 0x22, 0x20, 0x22, 0x20, 0x3F, 0xFC, 0x22, 0x20, 0x22, 0x20,
  0x23, 0xE0, 0x20, 0x00, 0x2F, 0xF0, 0x24, 0x10, 0x42, 0x20, 0x41, 0xC0, 0x86, 0x30, 0x38, 0x0E,
};

static const uint8_t PROGMEM ssd[] = {
  /*--  文字:  ℃  --*/
  /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  0x60, 0x00, 0x91, 0xF4, 0x96, 0x0C, 0x6C, 0x04, 0x08, 0x04, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x0C, 0x04, 0x06, 0x08, 0x01, 0xF0, 0x00, 0x00,
};

// ================初始化======================
void setup() {
  u8g.setFont(u8g_font_9x15);

}

// ================主函数======================
void loop() {
  delay(500);
   fn_displayOLED();

}


void fn_displayOLED(void) {
  u8g.firstPage();
  do {
    u8g.setColorIndex(1);
    u8g.setFont(u8g_font_unifont);
    u8g.setPrintPos(0, 5);
    u8g.drawBitmapP( 0, 20, 2, 16, wen);
    u8g.drawBitmapP( 16, 20, 2, 16, du);
    u8g.setPrintPos(32, 34);
    u8g.print(":" + String(16.5));
    u8g.drawBitmapP( 82, 20, 2, 16, ssd);

    u8g.drawBitmapP( 0, 40, 2, 16, shi);
    u8g.drawBitmapP( 16, 40, 2, 16, du);
    u8g.setPrintPos(32, 54);
    u8g.print(":" + String(32.5)+"%");
    

  } while (u8g.nextPage());
}

 参考文章:

U8glib学习使用(详细版)_Systemmax20的博客-CSDN博客使用模块Arduino UNO0.96 OLED (SIP)此显示模块根据电阻链接的方式 来控制连接的模式(SPI IIC )端口占用情况SPI Com: SCK = 13, MOSI = 11, CS = 10, DC = 9, RST =RESET//调用u8glib库#include "U8glib.h"//创建一个对象U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CShttps://blog.csdn.net/Systemmax20/article/details/122251516用U8glib显示汉字,简单可行,各种液晶屏通用,有无字库皆...,-Arduino中文社区 - Powered by Discuz!开发项目需要用到显示汉字,用的是OLED128X64,先看了极客网的U8glib如何显示中文。先找Unicode码,然后生成字体文件,还要编译,太麻烦。还是祭出点阵大法,管你什么字体 ... icon-default.png?t=M0H8https://www.arduino.cn/thread-31016-1-1.htmlu8glib自学笔记2_胖哥的博客-CSDN博客_u8glibu8glib自学笔记第2篇https://blog.csdn.net/seacowtech/article/details/53783666

你可能感兴趣的:(单片机,c语言,arduino)