U8g2库的使用
一.硬件介绍:
由于笔者这里只有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库显示中文了网上有太多案例了传送门
U8g2库的使用的更多相关文章
- U8g2库I2C总线再次突破性调试成功
这次采用U8X8的方式,不再采用u8g2,因为后者一直报内存问题.所以采用了不占内存的u8x8模式 同时u8g2库文件的示例代码也是很牛逼的, 里面还有message box 非常的可爱运行效果也非常 ...
- u8g2库的相关资料
2017-12-1309:13:32更新51论坛上的帖子,大神自己写的库文件,待调试! http://www.51hei.com/bbs/forum.php?mod=viewthread&ti ...
- esp8266网络自动对时 串口字符连接 并显示 12864i2c u8g2库
给别人定做的 做的 集成了 烟雾传感器dht11u8g2网络 自动对时 #include <dht11.h>//程序中调用了dht11的库#include <Arduino.h> ...
- 玩转u8g2 OLED库,一篇就够
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 玩转u8g2 OLED库,一篇就够(分篇)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 深入学习 OLED Adafruit_SSD1306库(8266+arduino)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 SSD1306屏幕驱动库,最出名应该就是u8g2,读者可以参考 玩转u ...
- 用Arduino显示颜色序列(u8g2,OLED)
目录 用Arduino显示颜色序列(u8g2,OLED) 用Arduino显示颜色序列(u8g2,OLED) 提前祝大家新年快乐! 主控:Arduino Mega 2560 硬件:126×64 OLE ...
- U8g2图形库与STM32移植(I2C,软件与硬件)
U8g2图形库 简介 U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并可以很方便地移植到 Arduino .树莓 ...
- I2C 连接 12864 OLED 屏幕
http://ardui.co/archives/738 我是潘,曾经是个工程师.这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程.上一课介绍了I2C 协议连接1602 L ...
随机推荐
- ARP数据包分析
转载请注明来源:https://www.cnblogs.com/hookjc/ 本机IP:192.168.0.1 (c0 a8 00 01)本机MAC:00-50-56-c0-00-01目标IP:19 ...
- 【转】性能测试报告模板 V1.0
1. 测试项目概述与测试目的 1.1 项目概述 本部分主要是针对即将进行压力测试的对象(接口.模块.进程或系统)进行概要的说明,让人明白该测试对象的主要功能与作用及相关背景. 1.2 测试目标 简 ...
- Sublime Text3安装及汉化
Sublime Text 是一款流行的代码编辑器软件,也是HTML和散文先进的文本编辑器,可运行在Linux,Windows和Mac OS X.也是许多程序员喜欢使用的一款文本编辑器软件. 下载地址: ...
- JVM性能调优与实战基础理论篇-下
JVM内存管理 JVM内存分配与回收策略 对象优先在Eden分配,如果Eden内存空间不足,就会发生Minor GC.虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数,告诉虚拟机在 ...
- VLAN介绍及实验
目录 一.VLAN 1.1.VLAN的概念及优势 1.2.VLAN的种类 1.3.静态VLAN的配置 1.4.Trunk的作用 1.5.配置实验 1.搭建拓扑图 2.交换机SW1配置情况 3.交换机S ...
- Solution -「Gym 102956F」Find the XOR
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \(m\) 条边的连通无向图 \(G\),边有边权.其中 \(u,v\) 的距离 \(d(u,v)\) ...
- Solution -「十二省联考2019」春节十二响
题目 题意简述 link. 给一棵 \(n\) 个结点的有根树,点带权.把点分为若干组,并要求同组内不存在任何祖先-后代关系.最小化每组内的最大点权之和. 数据规模 \(n\le2\tim ...
- 暑假撸系统6- Thymeleaf ajax交互!
本来用Thymeleaf也没想着深度使用ajax,就是用也是非常传统的ajax方式提交然后js控制修改下变量.闲来无事的时候看Thymeleaf的教程发现一哥们的实现方式,以及实现思路,堪称惊奇,先说 ...
- verification 时间不推进,挂起
时间不推进,挂起 0时刻 windows-> new -> source Browser 可能是仿真精度不够,比如进度是1ns,但是时钟有0.1ns为周期的,这种情况下,仿真器会吧这个周期 ...
- 后台运行程序-服务器、python
0前言 最近遇到一个需求,我有一个很小的python程序,需要一直在服务器器上跑,但是我不想一直开着浏览器或者Xshell 7,所以记录一下怎么解决的. 用到的指令是nohup 具体代码就两行 sou ...