如何使用 U8g2 库

显示屏
注:u8g2不支持“无控制器”的显示屏。
U8g2 设置函数列表:C++ Setup/Arduino Constructor List
典型的总线有:
• 3SPI,3线SPI:时钟,数据和片选
• 4SPI,4线SPI:多了一个命令数据线(一般叫;D/C,RS,或者A0)
• I2C,IIC或TWI:时钟(SCL)和数据(SDA)
• 8080• 6800:占用引脚太多,不考虑
数据线
总的来说,U8g2 可以使用任意 Arduino 引脚,但选择特定的IO口,使用外设输出会提高速度。
注意:RS意思为“寄存器选择”,但是在SPI模式,RS 是片选的作用。
U8g2 初始化
U8g2 需要知道硬件引脚的对应关系,引脚号作为参数提供给 U8g2 的构造函数,其中各个参数对应各个引脚。
根据这个列表,构造函数有模板如下(对象名 u8g2):
U8G2_ST7920_128X64_1_SW_SPI u8g2(rotation, clock, data, cs [, reset])
在 “rotation”(旋转)参数后面,构造函数接收一个时钟引脚号,数据脚号,片选信号,最后的复位信号线是可选的。
例子中包括了类似的构造函数,你可以取消注释其中的一个,如果有必要,更新引脚号:
U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, 13, 11, 10, 8);
U8G2_ST75256_JLX256160_F_4W_HW_SPI u8g2(U8G2_R0, / cs=/ PA4, / dc=/ PA3, /* reset=/ 8);***
一个完整的例子如下所示:
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
U8G2_ST7920_128X64_1_SW_SPI u8g2(U8G2_R0, 13, 11, 10, 8);

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

void loop() {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,24,“Hello World!”);
} while ( u8g2.nextPage() );
}

U8g2 支持3中不同的绘图模式:完整缓存(full buffer),页面缓存(page buffer)和u8x8 模式**
全屏缓存模式(full buffer)
优缺点
• 快速
• 可使用所有的图形程序
• 需要大量的内存(RAM)
初始化
从 这里 选择一个 U8g2 的构造器,全屏缓存模式的构造器包含了“F”,比如:
U8G2_ST7920_128X64_ F _SW_SPI(rotation, clock, data, cs [, reset])
使用

  1. 清除缓存内容:u8g2.clearBuffer()。
  2. 使用绘图指令绘制图形
  3. 发送缓存数据给显示器以显示:u8g2.sendBuffer()。
    示例
    void setup() { u8g2.begin();}

void loop() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,20,“Hello World!”);
u8g2.sendBuffer();
}

页面缓存模式(图片轮询)
优缺点
• 所有的图形程序可用
• 要求少量的内存(RAM)
• 速度慢
初始化
从 这里 选择一个 U8g2 的构造器,全屏缓存模式的构造器包含了“1”,或者“2,”比如:
U8G2_ST7920_128X64_ 1 _SW_SPI(rotation, clock, data, cs [, reset])
使用

  1. 调用 u8g2.firstPage()
  2. 运行一个 do-while 循环
  3. 在循环体内绘制一些图形
  4. 循环到U8g2.nextPage()返回真结束
    注:在循环体内总是绘制同一张图片。相见:这里。
    示例
    void setup() { u8g2.begin();}

void loop() {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,24,“Hello World!”);
} while ( u8g2.nextPage() );
}

U8x8 字符模式
优缺点
• 快速
• 不需要内存(RAM)
• 不能绘图
• 不是所有控制器都支持
• 只输出文本(字符)
• 只支持8x8像素字体
初始化
从之类选择一个U8x8 构造器,比如:
U8X8_ST7565_EA_DOGM128_4W_SW_SPI u8x8(clock, data, cs, dc [, reset]
使用
所有的绘制指令直接写入显示器
示例
void setup() { u8x8.begin();}

void loop() {
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.drawString(0,1,“Hello World!”);
}

u8g2 代码仓库:https://github.com/olikraus/u8g2
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值