この文章は超ミニBASIC for H8/3664 の、キャラクタ液晶モジュールサポートのために拡張された部分についての説明です。
超ミニBASIC for H8/3664 はキャラクタ液晶モジュールをサポートしています。液晶モジュールはH8/3664の内蔵I/Oポートのほとんどどこにでも接続できます。また、現在出まわっているいろいろな桁数、行数の液晶モジュールに対応しています。接続したポートと液晶モジュールのタイプを指定すると、以後はハードウエアの細かい違いを意識することなく、LPRINT文などで簡単に文字や数値を表示することが可能です。
対応するキャラクタ液晶モジュールは日立のHD44780相当のLCDコントローラを搭載しているキャラクタ液晶モジュール(秋葉原などで普通に出まわっているものは大抵これに該当します。LM0××相当、と書いてあったらまず間違いありません。が、中には違うもののあるかもしれないので注意してください)で、以下の桁数、行数のタイプに対応しています。
2行タイプ |
16桁、20桁、24桁、32桁、40桁 |
4行タイプ |
16桁、20桁 |
以下の、CPU内蔵ポートを液晶モジュール接続用として指定可能です。コントロールポートは液晶モジュールの制御線(E、RS、R/W)を接続するポート、データポートはデータ線(DB4〜DB7)を接続するポートです。
コントロールポート |
データポート |
&PDR1 &PDR5 &PDR7 &PDR8 |
&PDR5 &PDR8 |
INITLCD文は、ポートやビットの指定があきらかにおかしいときはエラーを出しますが、他のH8内蔵周辺モジュールとの競合などは検出しません。したがってINITLCD文がエラーを出さない(指定可能)にもかかわらず実際には使用できないケースもありえます。ユーザーのほうで自分が使用したい内蔵周辺モジュールと競合していないかどうかを確認してください。
INITLCD文が検出する「あきらかにおかしい」指定 ・データディレクションマスクの下位4ビットが$Fでない ・コントロールポートとデータポートが同じで、コントロールディレクションマスクとデータディレクションマスクが違う ・E、RS、R/Wが接続されているビットの、コントロールディレクションマスクが0になっている |
ピン番号 |
略称 |
区分 |
説明 |
1 |
Vss(Vdd) |
電源 |
電源−側。GND(0V)に接続する。※こちらが+側の製品もあるので注意! |
2 |
Vdd(Vss) |
電源+側。5Vに接続する。※こちらが−側の製品もあるので注意! | |
3 |
Vo |
コントラスト調整電圧。0〜5Vの電圧を与える。 | |
4 |
RS |
制御線 |
レジスタセレクト、0でコマンド、1でデータ |
5 |
R/W |
リード/ライト、0で書きこみ(CPU→液晶)、1で読み出し(CPU←液晶) | |
6 |
E |
イネーブル、1で有効 | |
7 |
DB0 |
データ線 (不使用) |
データ線下位(液晶から見て)4ビット H8/3664版では使用しません。GND(0V)に接続すること |
8 |
DB1 | ||
9 |
DB2 | ||
10 |
DB3 | ||
11 |
DB4 |
データ線 |
データ線上位(液晶から見て)4ビット データ用ポートの下位4ビットに接続すること |
12 |
DB5 | ||
13 |
DB6 | ||
14 |
DB7 |
使用する液晶モジュールの、1番ピン、2番ピンのどちらが+なのかよく確認してから接続してください。3番ピンには片方を+5V、片方をGND(0V)に接続した10KΩ〜20KΩの半固定抵抗の中点を接続します。
書式:
上の書式は見づらいですが、コントロールポートディレクションマスクとデータポートディレクションマスクは省略可能であり、省略しない場合は[](角カッコ)でくくって書く、ということを意味しています。
液晶モジュールを接続するポートを指定し、液晶モジュールを初期化します。この文を実行しないと液晶モジュール関連の文、関数は一切使用できません。パラメータは以下のような意味を持っています。
<コントロールポートアドレス>
[<コントロールポートデータディレクションマスク>]
<データポートアドレス>
[<データポートデータディレクションマスク>]
<Eビット>
<RSビット>
<R/Wビット>
設定例: ポート5に、以下のように液晶モジュールを接続した場合(R/Wは使用しない)
P5-6 (未使用) P5-5 E P5-4 RS P5-3 DB7 P5-2 DB6 P5-1 DB5 P5-0 DB4
上記の接続で、さらにビット7、6をなんらかの入力として使用したい場合は
ポート5のビット6に液晶モジュールのR/Wを接続し、R/Wを使用する場合
|
書式:
画面をクリヤします。また、画面のサイズ、自動スクロールの有無を設定します。<画面のサイズ>、<自動スクロールの有無>を省略すると画面クリヤのみ行います。
<画面のサイズ>には、使用する液晶モジュールの桁数、行数に合わせて以下の値を指定します。
桁数×行数 |
<画面のサイズ>の値 |
16桁×2行(デフォルト) |
1 |
20桁×2行 |
2 |
24桁×2行 |
3 |
32桁×2行 |
4 |
40桁×2行 |
5 |
16桁×4行 |
6 |
20桁×4行 |
7 |
例: 16桁×2行の液晶で、 100 LPRINT "0123456789ABCDEF", 110 LPRINT "GHIJKLMNOPQRSTUV", を実行した後、さらに 120 LPRINT "####", を実行しようとした場合、<自動スクロールの有無>が0なら
となり、<自動スクロールの有無>が1なら
となります。 |
書式:
カーソルを指定の位置に移動します。また、カーソル形状の変更も行います。
<パラメータ並び>には<形状指定>、または<位置指定>を ,(コンマ)で区切って書きます。
<形状指定>には数式を1つ書きます。数式の値によりカーソルの形状は以下のように変化します。
カーソル形状 |
<形状指定>の値 |
カーソルを表示しない(デフォルト) |
0 |
四角形点滅 |
1 |
下線 |
2 |
下線+四角形点滅 |
3 |
例: カーソル形状を下線+四角形点滅に変更
LCURSOR 2,@8,1 |
書式1:
書式2:
液晶画面に数値、文字列などを表示します。使い方はシリアルターミナルに表示を行なうPRINT文とほぼ同じです。PRINT文キャストなどもPRINT文と同じものが使えます。
書式:
液晶モジュールに直接コマンドまたはデータを送ります。<RS>が0なら<式>の値はコマンドとして、1なら<式>の値はデータとして送られます。
この文は、普通にプログラムを組むぶんにはまず使うことはないと思います。この文で不適切なコマンドを送ると、以後LPRINT文などによる表示が正しく行なわれなくなることがありますので注意して使用してください。
書式:
液晶ディスプレイ上の、<X位置>、<Y位置>で指定される位置に現在表示されている文字コードを返します。
書式:
現在のカーソル位置を返します。式の値が0ならX位置、1ならY位置を返します。返ってくる値は、X位置は0〜画面の幅−1、Y位置は0〜画面の高さです。
普通はY位置として0〜画面の高さ−1が返ってくるのですが、画面の高さと等しい値が返ってきた場合は、「次になにか文字が表示されるとスクロールまたはカーソルのラップアラウンドが行なわれる」という状態を表しています。
LCD BAD CONFIG |
INITLCD文のパラメータが不適切 |
LCD NOT INITIALIZED |
INITLCD文による液晶モジュールの初期化が成功していないのにLCD関連の文・関数を使おうとした |