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

【Arduino進階教學】LCD 1602 I2C 液晶顯示螢幕模組:4線接線圖、I2C位址掃描與程式碼教學

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 腳位 腳位功能說明
GND GND 接地
VCC 5V 系統電源(建議使用 5V 電壓供電)
SDA A4 (或 dedicated SDA 針腳) I2C 資料線 (Serial Data)
SCL A5 (或 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 Brabander 或 Marco Schwartz 維護的 LiquidCrystal_I2C 程式庫,點擊 「安裝」。

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

 

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

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

不同廠商生產的 I2C 轉接晶片(如 PCF8574T 或 PCF8574AT),其預設 I2C 位址可能不同(最常見為 0x27 或 0x3F)。如果位址填錯,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() 即可實現字幕跑馬燈效果。

延伸閱讀與進階推薦

相關文章