iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
自我挑戰組

無硬體也能玩物聯網!使用 Wokwi 模擬器與 MicroPython 打造 30 天 ESP32 實務系列 第 18 篇

文字型 LCD——使用 LCD1602 (I2C) 模組顯示兩行狀態文字

  • 分享至 

  • xImage
  •  

今日目標
學習使用帶有I2C轉接模組的LCD1602螢幕,透過2根訊號線控制顯示器,並在兩行畫面上印出乾淨對齊的狀態文字。

程式碼
import time
from machine import Pin,I2C

classI2cLcd1602:
def init(self,i2c,addr=0x27):
self.i2c=i2c
self.addr=addr
self.backlight=0x08
self._write(0x03);self._write(0x03);self._write(0x03);self._write(0x02)
self.cmd(0x28)
self.cmd(0x0C)
self.cmd(0x06)
self.clear()

def _write_nibble(self,nibble,mode=0):
    data=(nibble&0xF0)|mode|self.backlight|0x04
    self.i2c.writeto(self.addr,bytes([data]))
    self.i2c.writeto(self.addr,bytes([data&~0x04]))
    
def _write_(self,byte,mode=0):
    self._write_nibble(byte&0xF0,mode)
    self._write_nibble((byte << 4)&0xF0,mode)
    
def cmd(self,command):
    self._write(command,mode=0)
    
def clear(self):
    self.cmd(0x01)
    time.sleep_ms(2)
    
def move_to(self,col,row):
    addr=col+(0x40 if row else 0x00)
    self.cmd(0x80|addr)
    
 def putstr(self,string):
     for char in string:
         self._write(ord(char),mode=0x01)
         

i2c=I2C(0,scl=Pin(22),sda=Pin(21),freq=400000)
lcd=I2cLcd1602(i2c,addr=0x27)
print("===LCD1602 I2C顯示系統啟動===")
lcd.clear()
lcd.move_to(0,0)
lcd.putstr("Wokwi IoT Series")
lcd.move_to(0,1)
lcd.putstr("Day 18:LCD1602")
time.sleep(2)

counter=0
while True:
counter+=1
lcd.move_to(0,0)
lcd.putstr("System:RUNNING")
lcd.move_to(0,1)
lcd.putstr(f"Uptime:{counter:4d}sec")
time.sleep(1)

心得
今天學習物聯網與單晶片領域中最長青的LCD1602顯示器,雖然它的畫質與圖形能力不如OLED螢幕豐富,但其對比度高、低成本與極佳的戶外辨識度,讓它在許多商業產品中依然屹立不搖。掌握了I2C通訊後,控制它就變得非常輕鬆。


上一篇
在 OLED 螢幕畫出進度條與幾何圖形
系列文
無硬體也能玩物聯網!使用 Wokwi 模擬器與 MicroPython 打造 30 天 ESP32 實務 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言