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

news/2025/1/12 13:20:22/

最近在淘宝上找到了一款便宜的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 memoryu8g2.setFont(u8g2_font_ncenB14_tr);   // choose a suitable fontu8g2.drawStr(0,20,"Hello World!");    // write something to the internal memoryu8g2.sendBuffer();                    // transfer internal memory to the displaydelay(1000);  
}

显示效果如图
hello world 显示

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

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


http://www.ppmy.cn/news/204517.html

相关文章

SSD_OneStage

关于对SSD的个人理解 背景 在此之前&#xff0c;二阶段的目标检测网络Faster-RCNN已经出来&#xff0c;但本文的作者发现Faster之所以慢主要还是因为它将检测这个问题分成了两个步骤&#xff0c;也就是说本文的作者想要设计出一种一阶段的网络就可以预测出目标的边界框。 思…

ssd2828 Linux driver

以前做的一个项目,用的是imx 6q平台,显示屏用的2 lan的mipi口,也是我煞费苦心调出来的,最近屏幕换代,只支持4 lan,但6q只支持2 lan,所以只好加了个RGB->MIPI的IC SSD2828,网上找了半天资料也没找到写好的linux driver, 有的只是单片机的代码,鉴于自己也是个10多年的…

SSD202 Flash 分区

1 分区说明 本文示例使用SPI NAND flash器件 CIS&#xff1a; SPI-NAND 独有的分区&#xff0c;保存在 flash 的 0 地址的位置&#xff0c;它包含两部分内容&#xff1a; 一部分是 spinand info&#xff0c;保存 spinand 器件的一些基本信息 一部分是 partinifo&#xff0c;保…

SA-SSD复现

SA-SSD复现 环境 Ubuntu 16.04 Python 3.6 pytorch 1.1.0 CUDA 10.0 Cudnn 7.6.4 依赖 python3.6pytorch (tested on 1.1.0)opencvshapelymayavispconv (v1.0) 安装 基础安装&#xff1a; conda create --name SASSD python3.6conda activate SASSDconda install pytorch…

rabbitmq死信队列详解

目录 1 概念 2 成为死信队列的条件 2.1 队列指定长度 2.2 消息ttl时间 2.3 消费者拒收消息 1 概念 死信队列&#xff1a;死信队列其实和普通的队列一样&#xff0c;只不过里面存放的消息都是普通队列过期没有消费的。所以&#xff0c;接收没有及时被消费消息的队列为死信…

高级算法工程师的工作职责(合集)

高级算法工程师的工作职责1 职责&#xff1a; 1、调研跟踪智能穿戴产品相关算法&#xff0c;为公司产品决策提供参考; 2、设计开发智能穿戴产品的计步、睡眠、心率、血氧饱和度、血压、心率变异性等相关参数的提取算法; 3、撰写算法开发文档&#xff0c;包括算法流程、测试方案…

【分苹果】

蒜头君要把一堆苹果分给 nn 个小朋友&#xff0c;要使每个人都能拿到苹果&#xff0c;而且每个人拿到的苹果数都不同的话&#xff0c;这堆苹果至少应该有多少个&#xff1f; 输入格式 一个不大于 10001000 的正整数 nn&#xff0c;代表小朋友人数。 输出格式 一个整数&…

MDSplus

MDSplus 数据读取 数据的读取 TreeNode *node1 myTree->getNode("NUM2"); Data *data1 node1->getData(); int num; int *nums data1->getIntArray(&num);其中将节点node1的数据转换为int类型数组&#xff0c;数组的长度记录在数据num中。通过 co…