由图可见:OLED一共有4个引脚,从左到右以此是GND、VCC、SCL、SDA,分别代表接地引脚、接电源引脚、SCL引脚用于获取I2C的时钟信号、SDA引脚用于传输数据。
OLED其实就是一个MxN的像素点阵,需要显示什么就得把具体坐标位置对应的像素点点亮。
#include //U8g系列的函数库功能强大且齐全
#include //I2C的引脚由该库定义
#include //该库定义了一系列绘画的方法,属于基础类库
#include //以GFX为基础,专门用于SSD1306芯片的驱动库,主要用于画图
由于OLED本地没有支持中文汉字的文字库函数,所以若想在显示器上显示中文字体,则需要用到汉字取模软件。用字模工具取模显示,取模方式:C51格式,横向取模,取16X16汉字字模 ,逐行式 ,顺向高位在前。
首先进行取模方式的设置:
再进行汉字取模,以“国“字为例。
点阵生产区就是该汉字的点阵表示,只需将OLED上的对应像素点点亮即可在OLED显示器上显示该汉字。
全部代码如下:(注意在运行该代码前要在库管理处引入对应的库函数,且选对开发板型号和接对线,博主这里用的是ESP32)
/*
OLED显示汉字
*/
//#include
#include
#include
#include
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
//用字模工具取模显示,取模方式:C51格式,横向取模
//取16X16汉字字模 逐行式 顺向高位在前
static const unsigned char PROGMEM str1[] =
{
/*-- 文字: 国 --*/
/*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x4F,0xE4,
0x41,0x04,0x41,0x44,0x41,0x24,0x5F,0xF4,0x40,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,
};
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);//开像素点发光
display.clearDisplay();//清屏
display.setTextSize(1); //设置字体大小
display.setCursor(0, 0);//设置显示位置
//第一个参数控制距离左边界的位数,第二个参数控制距离上边界的位数,第三个参数是所要显示的字符,
//第四个参数和第五个参数规定了占用范围,
//对于汉字来说16X16的点阵才能完整显示一个汉字,一个汉字2个字节16个位,第五个参数是字体的大小
display.drawBitmap(0, 0, str1, 16, 16, 1); //画出字符对应点阵数据
display.display();//开显示
}
void loop() {
}