Basic Tutorial for Arduino, 進階篇, 顯示器模組

【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例

Arduino LCD1602 I2C 接線圖

在 Arduino 專案中,若需要顯示數據(如溫濕度、計數器或狀態訊息),LCD 1602 顯示螢幕是最常見且實用的選擇。然而,傳統的 1602 LCD 至少需要佔用 Arduino 的 7 個 IO 腳位,不僅接線繁雜,更佔據了寶貴的板載資源,在Arduino入門第十八篇已經有跟各位介紹過如何使用7個IO端口的1602 LCD。

為了解決這個問題,Mirotek 1602 I2C 顯示模組整合了 PCF8574 I2C 轉接板,只需 4 條線(VCC, GND, SDA, SCL) 即可輕鬆完成連結!本文將手把手帶你掌握接線方式、I2C 位址掃描、函式庫安裝與實用程式範例。

傳統 LCD 1602 vs. I2C 介面模組比較

比較項目傳統 1602 LCD 模組Mirotek LCD 1602 I2C 模組
所需 IO 腳位數量7 ~ 12 個 腳位僅需 2 個 通訊腳位 (SDA, SCL)
接線複雜度線路繁雜,易鬆脫或接錯四線完成 (VCC, GND, SDA, SCL)
擴展性佔用多數數位腳位,影響感測器連接可透過 I2C 匯流排並聯多個元件
對比度調節需額外外接 10K 可變電阻背面內建電位器,旋轉即可調節

實驗所需硬體材料

在開始之前,請準備以下硬體元件:

  • 開發板:Arduino Uno R3 (或 Nano / Mega 2560)
  • 顯示模組:Mirotek LCD 1602 I2C 顯示模組(藍底白字)
  • 線材與配件:杜邦線 4 條、USB 傳輸線
  • 電源與麵包板:實驗用麵包板(視需要選用)

💡 新手推薦:一次購足學習所需零組件!👉 米羅科技 Arduino 程式學習套件組

👍爆款推薦:程式學習套件組

購買網址:shop.mirotek.com.tw

Arduino 與 LCD 1602 I2C 腳位接線教學

LCD 1602 I2C 模組背面帶有 4 個接線針腳,與 Arduino Uno 的連接對照如下:

LCD 1602 I2C 腳位Arduino Uno 腳位腳位功能說明
GNDGND接地
VCC5V系統電源(建議使用 5V 電壓供電)
SDAA4 (或 dedicated SDA 針腳)I2C 資料線 (Serial Data)
SCLA5 (或 dedicated SCL 針腳)I2C 時脈線 (Serial Clock)

Step-by-Step 程式庫安裝指南 (LiquidCrystal_I2C)

驅動 I2C 介面的 LCD 需要安裝 LiquidCrystal_I2C 函式庫,請照以下步驟安裝:

  1. 開啟 Arduino IDE

  2. 點選上方選單 「草稿碼」 (Sketch) ➔ 「匯入程式庫」 (Include Library) ➔ 「管理程式庫…」 (Manage Libraries…)

  3. 在搜尋欄輸入:LiquidCrystal I2C

  4. 找到由 Frank de BrabanderMarco Schwartz 維護的 LiquidCrystal_I2C 程式庫,點擊 「安裝」

▼或是可以用米羅提供的載點LiquidCrystal I2C函式庫 :  下載點 (若下載 ZIP 檔,可透過「草稿碼 ➔ 匯入程式庫 ➔ 加入 .ZIP 程式庫」進行安裝。)

 

▼選擇剛剛所下載的「 LiquidCrystal_I2C-master.zip 」加入程式庫。

關鍵第一步:使用 I2C Scanner 尋找 LCD 預設位址

不同廠商生產的 I2C 轉接晶片(如 PCF8574T 或 PCF8574AT),其預設 I2C 位址可能不同(最常見為 0x270x3F)。如果位址填錯,LCD 將無法顯示文字。

請先上傳下方 I2C 掃描程式,並打開序列埠監控視窗(Baud rate: 9600)確認你的 LCD 位址:

/*
 * Arduino I2C Scanner 位址掃描工具
 */
#include 

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);
  Serial.println("\nI2C Scanner 開始掃描...");
}

void loop() {
  byte error, address;
  int nDevices = 0;

  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("找到 I2C 裝置!位址為:0x");
      if (address < 16) Serial.print("0");
      Serial.print(address, HEX);
      Serial.println(" !");
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.println("未找到任何 I2C 裝置,請檢查接線!");
  
  delay(5000); // 每 5 秒掃描一次
}

Arduino LCD 1602 I2C 基礎顯示範例

確認好位址後(假設為 0x27),即可上傳以下範例程式,讓螢幕印出文字:

/*
 * Mirotek LCD 1602 I2C 基礎顯示範例程式
 */
#include <LiquidCrystal_I2C.h> 

// 設定 LCD 位址為 0x27,顯示區域為 16 字元 x 2 行
LiquidCrystal_I2C lcd(0x27, 16, 2); 

void setup() {
  lcd.init();          // 初始化 LCD 螢幕
  lcd.backlight();     // 開啟 LCD 背景高亮燈

  // 第一行顯示文字 (第 0 欄,第 0 列)
  lcd.setCursor(0, 0);
  lcd.print("Hello, World!");

  // 第二行顯示文字 (第 0 欄,第 1 列)
  lcd.setCursor(0, 1);
  lcd.print("MiroTek Studio");
}

void loop() {
  // 主程式持續執行區 (此範例暫不需重複動作)
}

核心語法解析:

  • lcd.init():初始化 LCD 模組。

  • lcd.backlight():開啟背光(若呼叫 lcd.noBacklight() 則關閉背光省電)。

  • lcd.setCursor(col, row):設定光標位置(col 範圍 0-15,row 範圍 0-1)。

  • lcd.print("文字"):顯示指定字串。

常見問題與除錯指南(FAQ)

Q1:上傳程式後,LCD 螢幕只顯示白色方塊/黑塊,沒有出現字形?

  • 原因:螢幕對比度未調整至正確位置。

  • 解決方法:LCD 模組背面有一個藍色的可變電阻(電位器),請使用十字起子小幅旋轉調節對比度,直到文字清晰顯示為止。

Q2:背光有亮,但完全沒有顯示任何內容或方塊?

  • 原因:I2C 位址設定錯誤,或 SDA/SCL 針腳接錯。

  • 解決方法

    1. 請重新執行前文的 I2C Scanner,確認程式內 LiquidCrystal_I2C lcd(位址, 16, 2) 的位址是否填寫正確(如改為 0x3F)。

    2. 檢查 SDA 與 SCL 是否接反(SDA 接 A4,SCL 接 A5)。

Q3:如何讓文字產生閃爍或自動捲動效果?

  • 閃爍效果:使用 lcd.blink()lcd.noBlink()

  • 自動捲動:呼叫 lcd.scrollDisplayLeft()lcd.scrollDisplayRight() 即可實現字幕跑馬燈效果。

延伸閱讀與進階推薦

學會 LCD 1602 I2C 模組後,您可以將其結合各類感測器,打造更豐富的專案(如數位溫濕度計、倒數計時器或物聯網儀表板):

相關文章