より便利で使いやすいSTN LCDコントロール インターフェース
Winstar は、幅広いLCDキャラクタディスプレイモジュールを提供しています。 ディスプレイの表示によって、WH0802、WH1202、WH1601、WH1602、WH1604、WH2002、WH2004、WH2402、WH4002などの標準製品が揃えています。最小数の制御ピンを使用して表示を実現できれば、MCUの選択が簡単になります。市販の一般的なキャラクタディスプレイモジュール(Character LCD Module)で、I2Cインターフェイスを使用する場合は、モジュールにI2Cインターフェイスを転換する基盤を追加します。LCMの厚さを増加するだけでしなくて、生産のプロセスも増えて、歩留まり低下などのリスクがつながります。(図1)。
図1: モジュールにI2Cインターフェイスを転換する基盤を追加します。 | 図2: WinstarのWH1602キャラクタ ディスプレイモジュールは、基盤を追加しなくても、I2C、SPIインターフェースを使用できます。 |
回路基板を追加せず、Arduino Unoボード と組み合わせて、さまざまな通信インターフェイスを使用して、モジュールを制御することを説明します。
- Winstar WH1602 LCM: 1 行に 16 文字、合計 2 行を表示できます。
- Winstar WH2002 LCM: 1 行に 20文字、合計 2 行を表示できます。
- Winstar WH2004 LCM: 1 行に 20文字、合計 4行を表示できます。
三機種にはRW1063(LCD コントローラー)を内蔵して、I2C、SPIシリアルインターフェースと6800パラレルインターフェイスが使用できます。
付記:インターフェースについての説明はWinstarのサイトに載せている「インターフェースのご紹介」の文章をご参考ください。
LCM のピン配置
表1 : LCM のピン配置番号 | ピンの定義 | 説明 |
---|---|---|
No.1 | Vss | グランド |
No.2 | Vdd | ロジック電源(5V) |
No.3 | V0 | コントラスト調整 |
No.4 | RS | コマンド/データ選択 |
No.5 | RW | インターフェイス 6800 8/4 ビットのみの読み込み/書き込み選択信号 |
No.6 | E | インターフェイス 6800 8/4 ビットのみの信号を有効にします。 |
No.7 | DB0/SA0 | 6800 8 ビットインターフェイスはデータバスライン0です。 I2CインターフェースはSA0アドレス設定ラインです。 |
No.8 | DB1/SA1 | 6800 8 ビットインターフェイスはデータバスライン1です。 I2CインターフェースはSA1アドレス設定ラインです。 |
No.9 | DB2 | 6800 8 ビットインターフェイスだけ使用されるデータバスライン2です。 |
No.10 | DB3 | 6800 8 ビットインターフェイスだけ使用されるデータバスライン3です。 |
No.11 | DB4 | 6800 8 ビットインターフェイスだけ使用されるデータバスライン5です。 |
No.12 | DB5/CSB/CSB | 6800 8 ビットインターフェイスはデータバスライン5です。 I2C & SPI インターフェイスはCSB設定ラインです。 |
No.13 | DB6/SDA/SCLK | 6800 8 ビットインターフェイスはデータバスライン6です。 I2Cインターフェイスは SDA データラインです。 SP インターフェイスはSCLKタイミングです。 |
No.14 | DB7/SCL/SID | 6800 8 ビットインターフェイスはデータバスライン7です。 I2CインターフェイスはSCLタイミングです。 SP インターフェイスはSIDタイミングです。 |
No.15 | A+ | バックライト電源(プラス) |
No.16 | K- | バックライト電源(マイナス) |
上表のV0については、20kΩの可変抵抗器を使用してコントラストを調整しています。テスト中にテキストが読めない場合や文字に影がある場合は、この可変抵抗器を回してコントラストを調整できます。
V0 可変抵抗の接続方法は図3をご参照ください:
図3:VR可変抵抗器の接続方法 |
LCMと開発ボードArduino Unoの配線方法
続いては、I2C、SPI、および 6800 8bit/4bit の4つの通信インターフェイスがArduino Uno に接続される方法です(図4)。I2CおよびSPIインターフェイスが少数のGPIOピンでキャラクターディスプレイモジュールを制御できます。
I2Cインターフェースの接続方法については、Arduino UnoのI2C端子がプルアップ抵抗を備えているため、SDA端子とSCL端子に接続するプルアップ抵抗はありません。一方、プログラムで内部プルアップ抵抗を無効にする場合は、外部からプルアップ抵抗を接続する必要があります。
(a)I2Cインターフェースの接続方法 |
(b) SPIインターフェースの接続方法 |
|
|
(c)6800-4bitインターフェースの接続方法 |
(d)6800-8bitインターフェースの接続方法 |
|
|
図 4:LCM 4つの通信インターフェイスがArduino Uno に接続される方法です |
LCMのコマンド
すべての通信インターフェイスがLCMのすべてのコマンドセットを使用できるわけではありません。SPIインターフェイスを使用する場合、RW制御ラインとMISOピンがなくて、読み取りコマンドはサポートされません。書き込みの場合は、RS 制御ラインを介して、コマンドデータを書き込むか、データを表示するかを決定されます。
また、I2C インターフェースには RW 制御ラインがないため、読み取りコマンドはサポートされません。書き込みの場合は、RS 制御ラインがなくて、コマンドデータと表示データを書き込む前に、コマンド制御コード(A0=0)またはデータ制御コード (A0=1) を送信してから次の送信バイトはコマンドデータか表示データかを決定します。
SPI および I2C インターフェイスのタイミング
図5と図6はSPIインターフェースインターフェイスを介してタイミング図です。LCM に使用される SPI が、一般的な MCU が提供されるSPI インターフェイスではありません。送信されているバイトがコマンドなのかデータなのかを判断するために、追加のRS信号ラインが必要です。データライン(SID)のビット(BIT7~BIT0)データはクロックライン(SCLK)がロー レベルの時に変化します。ビット(BIT7~BIT0)データはクロックライン(SCLK)がハイレベルの時にビット(BIT7~BIT0)のデータを取り込みます。
図 5:SPI はコマンドを書き込み時のタイミング。 |
図 6:SPI はデータを書き込み時のタイミング。 |
図 7 と 8 は、I2C インターフェイスを介して LCM を制御するタイミング図です。 チップ・セレクト・バー (CSB) を除いて、コマンドデータまたは表示データを書き込むために、毎回3 バイトを送信します。このうち、2バイト目のA0ビットによって、3バイト目がコマンドデータか表示データかが決まります。
図 7:I2Cはコマンドを書き込み時のタイミング。 |
図 8:I2Cはデータを書き込み時のタイミング。 |
コード
LCD モジュールに合わせてプログラムの設定を変更して、コンパイルして直接使用できます。
ステップ 1: LCM の1行の最大文字数を設定します。
たとえば、1 行に最大16文字を設定します。(下記をご参照ください)
ステップ 2: LCM で最大行数を設定します。
たとえば、LCM が 2 行になるように設定します。(下記をご参照ください)
ステップ 3: LCM通信インターフェースを設定します。
たとえば、I2C インターフェイスを使用します。(下記をご参照ください)
ステップ 4: プログラムをコンパイルしてArduino Uno開発ボードにアップロードします。
3 つのパターンの表示画面です。(図9)
コントラストの濃淡は、V0端子の可変抵抗で調整します。(図10)
(a) コントラストが低い、薄い文字しか見えない | (b) 適度なコントラスト | (c) コントラストが高い、文字に影があります。 |
---|---|---|
図9:3種類のLCMの表示画面 |
図10:V0ピンは調整可能です。
デモコードが必要な場合は、お問い合わせください。