はじめに

組み込み装置を開発した後で意外に面倒なのがドキュメントの制作です。 画面を持つ装置の場合、動作毎に画面のキャプチャを行ないドキュメントに挿入すれば良いのですが、意外に手間のかかる作業です。 作業を端折って適当に写真で撮影して挿入したり、Wordのような文書ツールで少しフォントを変えて表示画面の代替に仕立てたりする事も少なくありません。 これでは実機とドキュメントで画面が異なるので違和感のあるドキュメントになってしまいます。

lcdtoolは、文字列を与えて実行する事でテキストLCDの出力を模擬したBMP画像ファイルが得られるコマンドツールです。 ドキュメントと実機でそっくりな出力が得られるので、ユーザがドキュメントを見ながら装置を操作する場合でも、違和感を与える事がありません。

どんな出力が得られるの?

ここでLCD Toolを使ってどんな出力が得られるのかを見てみます。

青色バックライト16x2文字表示のLCDを模擬した出力の例。
LCD Tool Output Example No.1

緑色バックライト16x2文字表示のLCDを模擬した出力の例。
LCD Tool Output Example No.2

緑色バックライト20x4文字表示のLCDを模擬した出力の例。
LCD Tool Output Example No.3

仮に好みの出力が標準で用意されていなかった場合でも、後述するLCDプロファイル情報を作成する事で手持ちのLCDにそっくりな出力を作る事が可能です。

全体の流れ

lcdtoolの全体の流れは以下の通りです。LCDプロファイルとLCDフォントは予めサンプルが用意されています。

LCD Tool workflow

実行方法

LCD Toolの実行方法は以下の通りです。

lcdtool  [LCDプロファイル名]  [LCDフォント名]  [出力BMPファイル名]  [文字列]  ...

与えたLCDプロファイル名に応じて1行目、2行目、3行目と与える文字列を増やして下さい。

文字列に空白が含まれる場合

Windows

ダブルクォーテーションで文字列を括る事でコマンドライン側で文字列を分割させないようにできます。

Linux

シングルクォーテーションで文字列を括る事でシェル側で文字列を分割させないようにできます。 後述する文字ではないコードの入力でもシングルクォーテーションで括る必要があります。

文字ではないコードの入力

文字ではないコードの入力はバックスラッシュ記号(\)を付け加えて指定します。 以下は0x00, 0x01, 0x02, 0x03の4文字のコードを入力する例です。

\x00\x01\x02\x03

文字としてバックスラッシュ記号(\)を入力したい場合、以下のようにバックスラッシュ記号(\)を二つ続けて入力して下さい。

\\

Linuxのシェル上で実行する場合、バックスラッシュ記号をシェルに解釈させないためにシングルクォーテーションで括る必要があります。

カスタマイズ

LCDプロファイル

LCDプロファイルはテキストLCDの以下の属性を定義しているテキストファイルです。 テキストLCDモジュールによって色や文字数、形状が少しずつ異なります。 パラメータを設定する事でお手持ちのテキストLCDモジュールに近い表示を得る事ができます。

LCDプロファイルのパラメータ

LCDプロファイルには以下のパラメータがあります。

項目 変数名 値の例 値の範囲
テキスト横方向文字数 CHCNT_X 16 1以上
テキスト縦方向文字数 CHCNT_Y 2 1以上
テキスト横方向文字オフセットピクセル数 CHOFS_X 16 0以上
テキスト縦方向文字オフセットピクセル数 CHOFS_Y 16 0以上
テキスト横方向文字間隔ピクセル数 CHGAP_X 2 0以上
テキスト縦方向文字間隔ピクセル数 CHGAP_Y 2 0以上
ピクセル横方向サイズ PIXSIZ_X 4 1以上
ピクセル縦方向サイズ PIXSIZ_Y 4 1以上
ピクセル横方向間隔 PIXGAP_X 1 0以上
ピクセル縦方向間隔 PIXGAP_Y 1 0以上
前景色 (R, G, B) FGCOL.R
FGCOL.G
FGCOL.B
220 0~255
背景色 (R, G, B) BGCOL.R
BGCOL.G
BGCOL.B
120 0~255
コントラスト CONTRAST 96 0~100

LCDプロファイルと実際のデバイス

それぞれのパラメータが実際のデバイスとどのように関連付けられているのかを示します。 ここでは、SUNLIKE DISPLAY社のSC1602Bのドキュメントを参考にします。

CHCNT_X, CHCNT_Y

CHCNT_XとCHCNT_Yは、対象テキストLCDモジュールで表示可能な横方向文字数と縦方向文字数を示します。 以下のテキストLCDモジュールの場合、横方向に16文字、縦方向に2文字でCHCNT_X=16, CHCNT_Y=2です。

LCD Character Count

CHOFS_X, CHOFS_Y

CHOFS_XとCHOFS_Yは、出力画像ファイルの画像端から表示文字端までの間隔を示します。 表示デバイスのバックライトが点灯する部分の領域を出力画像ファイルの全領域と見做すと対応が取れます。

LCD Character Offset

CHGAP_X, CHGAP_Y

CHGAP_XとCHGAP_Yは、文字と文字の間の間隔を示します。多くのテキストLCDのドキュメントには、ピクセルの位置関係を示した図面が掲載されています。

LCD Character Gap

PIXSIZ_X, PIXSIZ_Y, PIXGAP_X, PIXGAP_Y

PIXSIZ_XとPIXSIZ_Yは、文字を構成するピクセルの横方向サイズと縦方向サイズを示します。 PIXGAP_XとPIXGAP_Yは、ピクセルとピクセルの間隔を示します。

LCD Pixel Size

FGCOL.R, FGCOL.G, FGCOL.B

FGCOL.RとFGCOL.GとFGCOL.Bは、描画状態になっているピクセルの色を示します。

BGCOL.R, BGCOL.G, BGCOL.B

BGCOL.RとBGCOL.GとBGCOL.Bは、テキストLCDモジュールの背景色を示します。

CONTRAST

CONTRASTは、主に描画可能ピクセルが非描画状態の時の色を決めるパラメータです。

LCDプロファイルの実装例

ここでLCDプロファイルの実装例を示します。 記述は非常に簡単です。 標準的なLCDに対するサンプルもありますから改造して使うこともできます。

    #
    # SC1602BBWB-XA-GB-G
    #
    CHCNT_X  =  16  # Character Count (X)
    CHCNT_Y  =   2  # Character Count (Y)
    CHOFS_X  =  16  # Character Offset (X)
    CHOFS_Y  =  16  # Character Offset (Y)
    CHGAP_X  =   2  # Character Gap (X)
    CHGAP_Y  =   2  # Character Gap (Y)
    PIXSIZ_X =   4  # Pixel Size (X)
    PIXSIZ_Y =   4  # Pixel Size (Y)
    PIXGAP_X =   1  # Pixel Gap (X)
    PIXGAP_Y =   1  # Pixel Gap (Y)
    FGCOL.R  = 220  # Foreground Color (Red)
    FGCOL.G  = 220  # Foreground Color (Green)
    FGCOL.B  = 220  # Foreground Color (Blue)
    BGCOL.R  = 120  # Background Color (Red)
    BGCOL.G  = 120  # Background Color (Green)
    BGCOL.B  = 230  # Background Color (Blue)
    CONTRAST =  96  # Contrast

上記の設定の場合、以下のような表示になります。

LCDフォント

テキストLCDモジュールは、機種によって搭載されているフォントが異なる事があります。 LCDフォントは、主に外字を登録できるように設計されていますが、全256キャラクタ全てをデフォルトから置き換える事も可能です。

以下にフォントデータの一部を例として示します。

    ###########
    CODE = 0x30
    ###########
    .ooo.
    o...o
    o..oo
    o.o.o
    oo..o
    o...o
    .ooo.
    .....

    ###########
    CODE = 0x31
    ###########
    ..o..
    .oo..
    ..o..
    ..o..
    ..o..
    ..o..
    .ooo.
    .....

ダウンロード

プログラムは以下からダウンロードできます。 ライセンスはMITです。 個人でも業務でもご自由にご利用頂けます。

日付 バージョン リンク
2012/09/04 0.0.3 lcdtool-v0.0.3.tar.gz

更新履歴

日付 更新内容
2012/09/04 初版


戻る