メインコンテンツへスキップ

キャラクタ液晶モジュールLCD1602について

📌 はじめに

LCD1602は、16文字×2行表示ができるキャラクタ液晶モジュールです。もともとはHD44780互換パラレルインターフェースで動作しますが、I2Cインターフェース変換モジュール(PCF8574など)を使えば、配線本数を2本に削減し、ArduinoやRaspberry Piなどから簡単に制御できます。

🏛 背景と誕生理由

HD44780互換液晶は長年、家電や産業機器の情報表示に利用されてきました。しかし、パラレル接続(4bit/8bitモード)は配線が多く、マイコンのI/Oピンを大量に消費するのが難点でした。
そこで登場したのがI2C接続用の拡張モジュール。これにより、SDAとSCLの2本の信号線+電源GNDだけで液晶を制御でき、配線の手間とI/O消費を大幅削減できるようになりました。

⚙️ LCD1602の構造

  • 表示エリア:16列 × 2行

  • 文字生成:CGROM(英数字・記号)+CGRAM(ユーザー定義文字最大8個)

  • コントローラIC:HD44780または互換品

  • バックライト:白色LED(ON/OFF制御可)

  • I2C変換モジュール:PCF8574などのI/Oエキスパンダ

I2Cモジュールを外すと、従来のパラレル方式でも使えます。

🔌 I2C接続のメリット

  • 配線本数削減:SDA・SCL・VCC・GNDの4本だけ

  • I/Oピン節約:マイコン側のGPIO使用を最小限に

  • 拡張性:I2Cバスに他のセンサーやモジュールを追加可能

  • 接続の簡単さ:ジャンパワイヤ数が少なく、配線ミスが減る

Arduino UNOの場合、従来8本以上必要だった配線が4本に。さらに他のI2Cデバイス(RTCや温度センサー)とも共存可能。

🔄 基本的な使い方

1. 接続

  • VCC → 5V(または3.3V対応品の場合3.3V)

  • GND → GND

  • SDA → マイコンのSDAピン(例:Arduino A4)

  • SCL → マイコンのSCLピン(例:Arduino A5)

2. アドレス確認

  • PCF8574モジュールのデフォルトは 0x27 または 0x3F

  • i2cdetect コマンド(Raspberry Pi)やスキャナースケッチ(Arduino)で確認可能

3. ソフトウェア制御例(Arduino)

  • ライブラリLiquidCrystal_I2C

  • 初期化

    LiquidCrystal_I2C lcd(0x27, 16, 2);
    lcd.init();
    lcd.backlight();
    lcd.print("Hello, I2C!");
    

lcd.createChar() を使えば、温度記号やバッテリーアイコンなどのカスタム文字も表示可能。

🧩 応用例

  • 温湿度センサー(DHT22など)+LCDでリアルタイム表示

  • RTC(DS3231)と組み合わせて時計表示

  • メニュー選択UIの表示

🆚 I2C接続とパラレル接続の比較

項目 I2C接続 パラレル接続
配線本数 4本 6〜10本
I/Oピン消費
通信速度 やや遅い 高速
拡張性 高い 低い

I2C接続は通信速度がパラレルより遅いため、アニメーションのような高速更新には不向き。

💡 使う嬉しさ

  • 配線のシンプル化で工作の失敗率が激減

  • I/O節約で他のデバイスも同時利用可能

  • 豊富なライブラリで初心者でも簡単に使える

  • 長年使われてきた信頼性のある表示モジュール