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庫顯示中文了網上有太多案例了傳送門


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM