一款基于ssd1306驱动的12864屏简介

最近在淘宝上找到了一款便宜的12864 OLED屏,阅读了相关的数据手册后整理了一些关于这种屏的资料,方便大家写驱动
oled模块正面

硬件结构

这款屏幕模块尺寸约为0.96英寸,主要由裸屏和底板PCB组成,裸屏由SSD1306驱动,这也是一种较为广泛使用的led驱动芯片。

基本信息 参数
驱动电压 3.3~5V
分辨率 128x64
驱动接口 I2C
I2C地址 0x3c(默认)\0x3d可选

关于这个模块要注意的是:

  • ssd1306本身支持多种总线驱动方式包括SPI以及并口等,通过芯片的相应IO口拉低拉高来选择哪一种接口,本例中模块通过电阻将相应IO口配置固化使用了I2C接口方式,但可能你买到的同样的驱动芯片的模块会采用其他接口
  • 使用I2C接口时,SSD1306允许有最多两个7位的I2C地址,同样通过相应的IO口拉低拉高来切换,一般默认是0x3c,在屏幕模块的背面,可以看到一个I2C地址切换提示,需要改变模块I2C地址时,只需要把提示位置的电阻取下焊接到另外一端即可。要注意的是版上的I2C地址是加上了第零位读写位后的数值,即0x78 = 0x3c<<1 0x7A = 0x3d<<1
    I2C地址切换

基本测试

了解基本驱动指令后便可以开始C驱动程序了,不过这里推荐使用arduino的一个屏幕驱动库u8g2来进行测试,会非常方便,下面程序用于显示“hello world”。

//"hello world" test
#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();                   // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB14_tr);   // choose a suitable font
  u8g2.drawStr(0,20,"Hello World!");    // write something to the internal memory
  u8g2.sendBuffer();                    // transfer internal memory to the display
  delay(1000);  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

显示效果如图
hello world 显示

除了字符外,也可以用于显示动态图形:
图形显示

u8g2是一个非常强大的8位屏幕显示库,支持非常多的驱动芯片种类,可以选择多种字体、同时字体可灵活调整长宽大小以及角度,也可以实现比较复杂的图形动态显示,关于它的安装、使用说明请看我的另外一篇博客(待完成:~)

猜你喜欢

转载自blog.csdn.net/qq_27516841/article/details/79071207
今日推荐