《ESP32 入門》NodeMCU-32S 連接 1602 LCD 顯示螢幕(I2C)
你是否剛入手 ESP32,想讓它在螢幕上顯示文字?1602 LCD 是最經典的入門顯示元件,便宜、好買、接線簡單。這篇教學會帶你從零開始,一步一步完成 ESP32 + 1602 LCD 的第一個專案。
你是否剛入手 ESP32,想讓它在螢幕上顯示文字?1602 LCD 是最經典的入門顯示元件,便宜、好買、接線簡單。這篇教學會帶你從零開始,一步一步完成 ESP32 + 1602 LCD 的第一個專案。
事前準備
建議初學者先用常見的Nodemcu-32s來練習,當然如果手邊有其它ESP32開發板也是沒問題的,只是腳位就要自行留意囉!

💡 小提醒: 購買 1602 LCD 時,建議直接買「已焊接 I2C 模組」的版本。如果買到沒有焊接的,你會需要自己焊上 I2C 轉接板,而且接線會從 4 條變成 16 條,對初學者來說比較麻煩。

傑森在做這個範例時,用到了擴展板,可以更方便的接線,若是沒有的人,把Nodemcu-32s插在麵包板上使用也是沒問題的哦!

軟體環境
安裝開發板:如果之前已使用過ESP32開發板,就不用重複進行了。若是第一次,請參考我們另一篇專文教學哦!

第一步:認識 I2C 與 1602 LCD
什麼是 1602 LCD?
1602 的意思是:16 個字元 × 2 行。它可以顯示英文字母、數字和一些特殊符號。雖然不能顯示中文,但對於顯示感測器數值、系統狀態等用途已經非常夠用了。
什麼是 I2C?
I2C(讀作 I-two-C)是一種通訊協定,最大的好處是 只需要 2 條訊號線(SDA 和 SCL)就能讓多個裝置互相溝通。
如果沒有 I2C 模組,1602 LCD 需要接 6 條以上的線才能運作。有了 I2C 轉接模組,只需要接 4 條線(含電源),省時省力。
I2C 位址是什麼?
每個 I2C 裝置都有一個「地址」,就像每間房子都有門牌號碼一樣。ESP32 透過這個地址來辨別要跟哪個裝置溝通。
1602 LCD 的 I2C 模組常見的位址是 0x27 或 0x3F,取決於模組上用的晶片型號。等一下我們會教你怎麼確認你的位址是哪一個。
第二步:接線
這是整個專案最重要的一步,接錯線輕則不會動,重則可能燒毀元件。請仔細核對!
接線對照表
| 1602 I2C 模組 | NodeMCU-32S | 說明 |
|---|---|---|
| GND | GND | 接地(共地) |
| VCC | VIN (5V) | 電源,LCD 需要 5V |
| SDA | GPIO 21 | I2C 資料線 |
| SCL | GPIO 22 | I2C 時脈線 |
⚠️ 注意: VCC 要接到 VIN(5V),不是 3.3V。1602 LCD 在 3.3V 下可能會顯示不清楚或完全不亮。NodeMCU-32S 的 VIN 腳位在 USB 供電時會輸出 5V。

第三步:安裝函式庫
在寫程式之前,我們需要安裝一個函式庫來控制 LCD。
- 打開 Arduino IDE
- 點選左邊的「圖書館管理員」圖示(書本圖案),或到「工具 → 管理函式庫」
- 在搜尋欄輸入
LiquidCrystal I2C - 找到作者是 Frank de Brabander 的那個,按「安裝」
安裝好後就可以在程式中使用 #include <LiquidCrystal_I2C.h> 了。

第四步:Hello World!在 LCD 上顯示文字
接下來就可以來寫第一個 LCD 程式了。
完整程式碼
#include <Wire.h> // I2C 通訊函式庫(Arduino 內建)
#include <LiquidCrystal_I2C.h> // LCD I2C 控制函式庫
// 建立 LCD 物件
// 參數:I2C位址, 每行字元數, 行數
// 如果你掃描出來的位址是 0x3F,就把 0x27 改成 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // 初始化 LCD
lcd.backlight(); // 開啟背光燈
// 在第一行顯示文字
// setCursor(欄, 列) → 從第 0 欄、第 0 列開始(左上角)
lcd.setCursor(0, 0);
lcd.print("Hello, ESP32!");
// 在第二行顯示文字
// setCursor(0, 1) → 第 0 欄、第 1 列(第二行開頭)
lcd.setCursor(0, 1);
lcd.print("jmaker.com.tw");
}
void loop() {
// 目前不需要重複執行的動作,留空即可
}
上傳後,你的 LCD 應該會顯示:
+------------------+
| Hello, ESP32! |
| jmaker.com.tw |
+------------------+
🎉 恭喜!你成功讓 ESP32 在 LCD 上顯示文字了!

💡 螢幕有亮但看不到字? 翻到 LCD 背面,找到 I2C 模組上的藍色小旋鈕(可變電阻),用螺絲起子慢慢轉動來調整對比度,直到文字清晰為止。

常見問題 FAQ
Q:螢幕完全沒亮?
確認 VCC 接到 VIN(5V),GND 確實有接。另外檢查 USB 線是否支援資料傳輸。
Q:背光有亮但沒有文字?
用小螺絲起子轉動 I2C 模組背面的藍色可變電阻,慢慢調整對比度。
Q:顯示亂碼或沒有內容?
1602 LCD 的 I2C 模組常見的位址是 0x27 或 0x3F,換一個試試。另外確認函式庫版本是否正確安裝。
LCD 常用函式速查表
| 函式 | 功能 | 範例 |
|---|---|---|
lcd.init() |
初始化 LCD | lcd.init(); |
lcd.backlight() |
開啟背光 | lcd.backlight(); |
lcd.noBacklight() |
關閉背光 | lcd.noBacklight(); |
lcd.setCursor(欄, 列) |
設定游標位置 | lcd.setCursor(0, 1); |
lcd.print() |
顯示文字或數字 | lcd.print("Hi"); |
lcd.clear() |
清除螢幕所有文字 | lcd.clear(); |
lcd.home() |
游標回到左上角 | lcd.home(); |
lcd.scrollDisplayLeft() |
畫面向左捲動 | lcd.scrollDisplayLeft(); |
lcd.scrollDisplayRight() |
畫面向右捲動 | lcd.scrollDisplayRight(); |
lcd.blink() |
游標閃爍 | lcd.blink(); |
lcd.noBlink() |
取消游標閃爍 | lcd.noBlink(); |
總結
1602 LCD 雖然簡單,但它是很多實用專案的基礎。當你學會了 LCD 顯示之後,可以把任何感測器的數據都顯示在螢幕上,像是溫濕度、距離、光線強度、氣壓等等。
如果覺得這篇教學有幫助,歡迎分享給其他正在學 ESP32 的朋友!





