极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39016|回复: 12

SSD1306 128x64 OLED SPI 屏幕使用 U8glib库

[复制链接]
发表于 2015-3-26 11:17:37 | 显示全部楼层 |阅读模式
本帖最后由 echoff 于 2015-3-26 11:14 编辑

    早前买了一块屏,SSD1306 128x64 OLED SPI接口的。屏上一共有6个引脚,分别是GND,VCC,SCL,SDA, RST,D/C 。卖家提供了Arduino的代码,是使用的Adafruit_SSD1306 这个库。单独在ArduinoUNO上面跑着没有问题。但是在另一块板子上就 有问题了,这块板子上在硬件SPI接口(Arduino上的13、12、11、10)上接了一个RMF69C。
然后在这个板子上用Adafruit_SSD1306 这个库,死活屏幕显示有问题,显示着就花屏了。后来看论坛帖子说Adafruit_SSD1306为了引脚通用,用软件去模拟SPI,这会照成硬件SPI工作不正常。后来换了U8glib库。
使用U8glib的HelloWorld例子,使用

U8GLIB_SSD1306_128X64 u8g(5, 9);                // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
上面两个参数的意思是:第一个参数是片选信号引脚,由于我的RFM69C使用的10号引脚,这里我使用PIN5;第二个参数是D/C
信号的引脚,我这里选的PIN9.

将屏幕的SCL接Arduino的SCK(Pin13),SDA接Arduino的MOSI(Pin11),RST接到高电平(SSD1306的文档上说当RST为低电平的时候,能重置屏幕,这里随便接到Arduino的一个输出为高电平的引脚即可,例如我接的PIN4),D/C接到9pin(这个可以在上面的方法中指定),这块屏的片选信号原本没有引出来,但是可以自己接出来,我自己接出来之后连到Arduino的PIN5(上面方法参数指定的)。

连接好了之后,记的在Setup中把PIN4设置为输出高电平。
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);

然后,屏和RFM69C都能正常工作了。希望能对其它初学者有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-3-26 11:25:25 | 显示全部楼层
谢得不错,比较详细{:soso_e179:}{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-3-27 14:53:07 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

发表于 2015-3-27 14:53:47 | 显示全部楼层
另一块板子是什么型号?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-30 08:52:26 | 显示全部楼层
suoma 发表于 2015-3-27 14:53
另一块板子是什么型号?

是一块板载RFM69C的板子 你把他当成UNO就行了
回复 支持 反对

使用道具 举报

发表于 2015-5-3 17:01:00 | 显示全部楼层
这两天找u8glib库文件,楼主可不可以分享一下
回复 支持 反对

使用道具 举报

发表于 2015-5-3 18:53:41 | 显示全部楼层
无法获得U8glib库,
我有一块 QT1106主控的1.3吋 OLED屏,没有驱动库文件。好急人
回复 支持 反对

使用道具 举报

发表于 2015-5-8 11:24:08 | 显示全部楼层
求问楼主我买的和你一样的屏,卖家给的arduino的程序编译会有这样的错误,oled_test.ino:19:64: error: variable 'logo16_glcd_bmp' must be const in order to be put into read-only section by means of '__attribute__((progmem))',不知道你是否遇到过呢?
回复 支持 反对

使用道具 举报

发表于 2015-5-10 01:00:29 | 显示全部楼层
老来疯 发表于 2015-5-3 18:53
无法获得U8glib库,
我有一块 QT1106主控的1.3吋 OLED屏,没有驱动库文件。好急人

我也是,好像U8G有支持,
回复 支持 反对

使用道具 举报

发表于 2015-5-10 11:06:30 | 显示全部楼层
楼主,你好。我和你买的是同一块板子,可是卖家给的arduino的程序编译会有这样的错误,oled_test.ino:19:64: error: variable 'logo16_glcd_bmp' must be const in order to be put into read-only section by means of '__attribute__((progmem))',你知道怎么解决么?或者说你能把你的例程给我看看看么?万分感谢。
回复 支持 反对

使用道具 举报

发表于 2015-5-10 11:16:21 | 显示全部楼层
outman 发表于 2015-5-10 11:06
楼主,你好。我和你买的是同一块板子,可是卖家给的arduino的程序编译会有这样的错误,oled_test.ino:19:64 ...

你好,这个问题我解决了,就是在那些数组定义前加个const就可以了~
回复 支持 反对

使用道具 举报

发表于 2015-5-13 18:59:52 | 显示全部楼层
melpomene 发表于 2015-5-10 11:16
你好,这个问题我解决了,就是在那些数组定义前加个const就可以了~

你好,不知道怎么加,能说的详细一点么,谢谢。
是在static前加const?
static unsigned  char __attribute__ ((progmem)) logo16_glcd_bmp[]={
0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0xf8, 0xbe, 0x9f, 0xff, 0xf8, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
0x20, 0x3c, 0x3f, 0x3f, 0x1f, 0x19, 0x1f, 0x7b, 0xfb, 0xfe, 0xfe, 0x07, 0x07, 0x07, 0x03, 0x00, };
回复 支持 反对

使用道具 举报

发表于 2016-1-6 22:26:04 | 显示全部楼层
写的很详细。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 12:17 , Processed in 0.044381 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表