私たちはあなたのプライバシーを大切にします
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー
Winstarでは、さまざまな組込み機器やアプリケーションに対応するキャラクタLCDモジュールの標準品を幅広く取り揃えています。WH0802、WH1202、WH1601、WH1602、WH1604、WH2002、WH2004、WH2402、WH4002など、多様な表示形式の製品をラインアップしています。
必要最小限の制御端子でLCD表示を制御できるため、システム設計におけるMCUの選定を容易にし、ハードウェア設計の簡略化にも貢献します。
一般的なキャラクタLCDモジュールでは、I2Cインターフェースを使用するために、図1のようにI2C変換基板を追加するケースがあります。しかし、この構成ではLCMの厚みが増加するだけでなく、製造工程の増加や歩留まり低下のリスクにつながる可能性があります。
図1:市場で一般的に使用されている、I2C対応のために変換基板を追加したキャラクタLCDモジュール。
図2:Winstar WH1602キャラクタLCDモジュール。追加の変換基板を使用せず、I2CおよびSPIインターフェースによる制御が可能です。
変換基板を追加することなく、Arduino Uno開発ボードと接続することで、以下のWinstarキャラクタLCDモジュールを各種通信インターフェースで直接制御できます。
これら3種類のLCMシリーズにはRW1063 LCDコントローラを搭載しており、シリアルインターフェース(I2C、SPI)およびパラレルインターフェース(6800)に対応しています。
Note:ディスプレイインターフェースについての詳細は、 「ディスプレイ インターフェイスの紹介」 をご参照ください。
| ピン番号 | 端子名 | 説明 |
|---|---|---|
| No.1 | Vss | グランド |
| No.2 | Vdd | ロジック電源入力 |
| No.3 | V0 | コントラスト調整 |
| No.4 | RS | コマンド/データ選択信号 |
| No.5 | RW | 6800 8/4bitインターフェース専用の読み出し/書き込み選択信号 |
| No.6 | E | 6800 8/4bitインターフェース専用のイネーブル信号 |
| No.7 | DB0/SA0 | 6800 8bitインターフェース時:データバスライン0 I2Cインターフェース時:SA0アドレス設定ライン |
| No.8 | DB1/SA1 | 6800 8bitインターフェース時:データバスライン1 I2Cインターフェース時:SA1アドレス設定ライン |
| No.9 | DB2 | 6800 8bitインターフェース専用のデータバスライン2 |
| No.10 | DB3 | 6800 8bitインターフェース専用のデータバスライン3 |
| No.11 | DB4 | 6800 8/4bitインターフェース専用のデータバスライン4 |
| No.12 | DB5/CSB/CSB | 6800 8/4bitインターフェース時:データバスライン5 I2CおよびSPIインターフェース時:CSBチップ選択信号 |
| No.13 | DB6/SDA/SCLK | 6800 8/4bitインターフェース時:データバスライン6 I2Cインターフェース時:SDAデータライン SPIインターフェース時:SCLKクロック信号 |
| No.14 | DB7/SCL/SID | 6800 8/4bitインターフェース時:データバスライン7 I2Cインターフェース時:SCLクロック信号 SPIインターフェース時:SIDデータライン |
| No.15 | A+ | バックライト電源入力(+) |
| No.16 | K- | バックライト電源入力(-) |
上表のV0端子では、20kΩの可変抵抗器を使用してキャラクター表示のコントラストを調整します。 テスト時に文字が表示されない場合や、背景が表示され続ける場合は、この可変抵抗器を調整して適切なコントラストに設定してください。
V0可変抵抗器の接続方法を図3に示します。

図4に、LCMの4種類の通信インターフェース(I2C、SPI、6800 8bit/4bit)とArduino Unoの接続方法を示します。 I2CおよびSPIインターフェースでは、少ないGPIOピン数でキャラクタLCDモジュールを制御できます。
I2Cインターフェースの場合、Arduino UnoのI2C端子には内部プルアップ抵抗が搭載されているため、SDAおよびSCL端子に外付けのプルアップ抵抗を追加する必要はありません。 ただし、プログラムで内部プルアップ抵抗を無効にする場合は、外部にプルアップ抵抗を接続する必要があります。
(a) I2Cインターフェース接続

(b) SPIインターフェース接続

(c) 6800-4bitインターフェース接続

(d) 6800-8bitインターフェース接続

図4:LCMの4種類の通信インターフェースとArduino Unoの接続方法。
すべての通信インターフェースでLCMの全コマンドセットを使用できるわけではありません。SPIインターフェースでは、RW制御線およびMISO端子がないため、読み出しコマンドには対応していません。書き込み時には、RS制御線によってコマンドデータまたは表示データのどちらを書き込むかを判別します。
I2CインターフェースもRW制御線を持たないため、読み出しコマンドには対応していません。コマンドデータまたは表示データを書き込む前に、コマンド制御コード(A0=0)またはデータ制御コード(A0=1)を送信し、次に送信するバイトがコマンドデータまたは表示データのどちらであるかを指定します。
図5および図6は、SPIインターフェースによるLCM制御時のタイミングチャートです。LCMで使用されるSPIは、一般的なMCUに搭載されている標準SPIインターフェースとは異なり、送信されるバイトがコマンドデータまたは表示データであるかを判別するため、追加のRS信号線が必要です。データライン(SID)のビットデータ(BIT7~BIT0)は、クロックライン(SCLK)がLowレベルの時に変化し、Highレベルの時に読み取られます。
図5:SPIコマンド書き込み時のタイミングチャート
図6:SPIデータ書き込み時のタイミングチャート
図7および図8は、I2CインターフェースによるLCM制御時のタイミングチャートです。チップセレクト信号(CSB)を除き、I2Cインターフェースでは1回の書き込み操作で3バイトを送信し、コマンドデータまたは表示データを書き込みます。この時、2バイト目のA0ビットによって、3バイト目がコマンドデータまたは表示データであるかを決定します。
図7:I2Cコマンド書き込み時のタイミングチャート
図8:I2Cデータ書き込み時のタイミングチャート
使用するLCMに合わせてプログラム設定を変更することで、コンパイル後、そのまま使用できます。
Step 1:LCMの1行あたりの最大表示文字数を設定します。
以下の例では、1行あたり最大16文字に設定しています。

Step 2:LCMの最大表示行数を設定します。
以下の例では、2行表示に設定しています。

Step 3:LCMで使用するインターフェースを設定します。
以下の例では、I2Cインターフェースを設定しています。

Step4:Arduino Uno開発ボードにプログラムをコンパイルして書き込みます。
図9は、3種類のLCMの表示状態を比較した模式図です。
表示コントラストが薄すぎる、または濃すぎる場合は、V0端子に接続された可変抵抗を調整することで、適切なコントラストに設定できます。図10に示すように、表示状態を確認しながら調整してください。
| (a) コントラストが薄い 文字が薄く表示される状態。 |
(b) 適切なコントラスト | (c) コントラストが濃い 文字に濃い影が見える状態。 |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 図9:3種類のLCM表示状態の模式図 | ||

図10:V0端子によるコントラスト調整
デモ用プログラム一式をご希望の場合は、お問い合わせください。
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー