一.硬件介绍:
因为作者这里只有0.96寸的OLED屏幕,然后谈谈最常用的0.96寸OLED屏幕吧。
OLED介绍:
OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于具有自发光、无背光源、对比度高、厚度薄、视角广、反应速度快、柔性面板、使用温度范围广、结构简单、工艺简单等优良特点,被认为是下一代平面显示器的新兴应用技术。LCD 都需要背光,而且 OLED 不,因为它是自发光的。同样的显示 OLED 效果更好。以目前的技术为基础,OLED 尺寸难以大规模化,但分辨率确实很高。我们在这里用0.96寸OLED显示屏具有以下特点:
- 0.96寸OLED 有三种颜色:黄蓝、白蓝;其中,黄蓝是屏幕上的; 1/4 部分为黄光,下 3/4 蓝色;固定区域显示固定颜色,颜色和显示区域不能修改;白光为纯白色,即黑底白字;蓝色为纯蓝色,即黑底蓝字。
- 分辨率为 128*64
- 接口方式多种多样;OLED 裸屏总接口包括6800和8080 两种并行接口方式,3 线或 4 线的串行 SPI 接口方式、 IIC 接口方式(只需要 2 可以控制根线OLED),这五个接口通过屏幕BS0~BS2来配置的。
- 开发了两种接口 Demo 板,接口分别为七针 SPI/IIC 兼容模块,四针IIC 模块。两个模块使用方便;希望您能根据实际需要选择不同的模块。
图为笔者用OLED显示屏幕的温度、湿度和光强度LCD1602屏幕
0.96寸OLED屏幕介绍:
- 工作电压:3V~5.5V
- I2C介面 (位址:0x30)
- 驱动IC:SSD1306
- OLED屏幕分为单色和双色两种
- GND 电源地
- VCC 电源正(3~5.5V)
- SCL OLED 的 D0 脚,在 IIC 时钟管脚在通信中
- SDA OLED 的 D1 脚,在 IIC 通信是数据管 和电脑显示器一样,OLED坐标原点在屏幕左上角(0).0)水平轴坐标向右增加,垂直向下增加。
二.程序介绍:
1.U8g2库的下载:
2.U8g2库函数:
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE); U8G2//程序库_SSD1306/控制晶片_128X64_NONAME//分析和型号_F//临存区大小可改为1、2,F _HW_I2C//控制介面 u8g2(U8G2_R0// 代表不旋转,U8X8_PIN_NONE//意味着没有重置引脚); begin()///初始化 clear()///清除暂存记忆体 sendBuffer()//向显示器发送暂存记忆体内容,配合上一个指令 enableUTF8Print()///启用enableUTF8Print(如:中文)字串 setFont()///设置字体 drawStr(x,y,"字串")//在坐标(x,y)显示英文字体 注:该函数不支持显示自制汉字 drawUTF8(x,y,"字串")使用前必须设置显示字体 setCursor(x,y)///设置游标坐标(x,y) print("字串")///在游标位置显示字体(可以用这种方法显示中文字体)
小补充:
- 关于字体传送门
- 显示文本或图片时,不会立即显示在屏幕上,因为这些操作首先将图片组合到记忆中,从主记忆中划分为显示器临时存储图像数据的区域,统称为frame buffer (图像临存区)或临存区(buffer)。
- 可重用连接介面SW_I2C,代表用"software"(软件)模拟IIC除非有特殊需要,否则请使用介面PC自定义如下:介面:
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,19,20,U8X8_PIN_NONE);//19 SCL引脚 20 SDA引脚
3.U8g2库使用模板:
#include <Arduino.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE); void setup() { u8g2.begin();//初始化 u8g2.setFont(u8g2_font_ncenB08_tr);///设置字体 } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, "Temperature");///在指定位置显示字符串 } while ( u8g2.nextPage() );
4.小应用:使用屏幕显示"hangzhou"
#include <Arduino.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0 ,U8X8_PIN_NONE);//实例化 void setup() { u8g2.begin();//初始化 u8g2.setFont(u8g2_font_ncenB08_tr);///设置字体 } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, "hangzhou");///在指定位置显示字符串 } while ( u8g2.nextPage() ); }
5.效果显示:
注意作者这里没有重置引脚,所以UNO板直接SCL,SCL相连,SDA和SDA相连 此外,作者不介绍如何在这里使用它U8g2库显示网上传送门案例太多。