以前の記事「LCDディスプレーを使う」にてとりあえずサンプル文字「Hello, World!  Arduino!」を表示させる方法を説明しましたが、今回はこのLCDで表示可能な文字を調べてみます。

使用するLCDディスプレーは前回と同じもので、

  • ドットマトリクスサイズ:5x8ドット(文字は5×7ドット表示)
  • 表示文字数:2行x16文字
  • 表示可能文字:半角英数字・半角記号
  • バックライト:白色(オンオフ可能)

表示可能文字一覧

LCD内部には各文字コードに対応したビットパターンが格納されてます、文字コードはASCIIコードなので256個(8bit)のパターンが対応可能です。

表示可能文字は個々のLCDの仕様で異なり、最大値が256個に対して実際に何個のパターンがLCD内部のICに格納されているかで決まります。

本LCDの搭載ICは[SPLC780D]という名称のチップでして以下の表のパターンが登録されます。

PDFファイルはこちら → SPLC780D_font

上記リスト中、

  • 赤枠エリア ⇒ 外字登録エリア(デフォルトはブランク)
  • ブランクエリア ⇒ ビットパターン未定義(ブランク)

全文字表示プログラム

256個のパターンを表示させるプログラムを作成してみました。表示エリアが16文字x2行の32文字だけなので順次スクロールしてます。

文字コードを0X00~0XFFまでスキャンしているだけの単純なプログラムです。

スケッチファイル名:LCD_I2C_PCF8574_All_Characters

#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x3f);  // set the LCD address to 0x3f

void setup() {
  Wire.begin();
  Wire.beginTransmission(0x3f);
  lcd.begin(16, 2); // initialize the lcd
}

void loop() {
  lcd.setBacklight(255);
  lcd.clear();
  for (int j = 0; j < 7; j++) {
    lcd.setCursor(0, 0);
    int dispData1 = 0x20 + (0x20 * j);
    for (int i = 0; i < 16; i++) {
      lcd.write(dispData1);
      dispData1 = dispData1 + 1;
      delay(500);
    }
    lcd.setCursor(0, 1);
    int dispData2 =0x30 + (0x20 * j);
    for (int i = 0; i < 16; i++) {
      lcd.write(dispData2);
      dispData2 = dispData2 + 1;
      delay(500);
    }
    delay(2000);
  }
}

簡単な内容ですが今回の記事はここまでです。