3-2. カーソルセット
3-2. カーソルセット
2つ目のアクション動作を学ぶ前に、ここで「カーソルセット」を覚えます。
これは「カーソルの位置を好きな場所へ移動させておくコマンド」です。
アクション動作ではないですが‥‥次のステップで使うので、ぜひ覚えておきましょう!
カーソルが移動できる範囲
好きな場所と言っても、どこからどこまで移動できるのか?
これは製品によって異なります。
今回使用している製品は「GU128X32D-D903S」でしたね。

製品名で示す通り、ディスプレイ(表示エリア)のドット数が
x(横)方向=128ドット、y(縦)方向=32ドットの製品です。
なので、128x32ドットの範囲が「移動できる範囲」だと
思いがちですが‥‥違います。正解は 512x32 ドットです。
何故そうなるのでしょう。これは「非表示エリア」というエリアを含んだ範囲なんです。
非表示エリアとは?
一言で言うと「ユーザーからは見えないエリア(領域)」の事で、表示メモリの領域の1つです。
以下にまとめました。
用語 | 詳細説明 |
---|---|
表示メモリ (RAM) |
コンピュータが処理する表示データを一時的に保存する領域です。表示用メモリとも言います。 これは全てのVFDモジュールに内臓されています。 領域の広さは製品によって様々ですが、何れの製品もメモリの領域が表示画面の領域より広い為、 メモリ内の一部データのみが表示画面に表示される事になります。全ては表示されません。 このように、表示メモリは表示できる領域とそうでない領域‥‥ つまり「表示エリア」と「非表示エリア」の2つに分かれています。 |
非表示エリア | 先述の通り、表示メモリだけど私達の目には見えない領域です。使い道は色々あります。 (例:表示途中のデータをユーザーに見せないよう隠しておく作業領域にする‥‥など) 因みに領域の場所は、表示画面の右側です。こんなイメージですね。 ![]() 次のステップ「スクロールアクション表示」で使うコマンドです。 |
表示されない領域があるという事が分かりました。次に、コマンドセットを見ていきましょう。
コマンドセット
動作名 | コマンド | 機能 |
---|---|---|
カーソルセット | 1Fh 24h xL xH yL yH | カーソルの位置を、表示メモリの x、y の位置に移動します。 |
以下、各記号(赤字部分)の説明です。
コード | 機能 | 詳細説明 |
---|---|---|
xL (下位バイト) xH (上位バイト) |
カーソル位置 x (1ドット単位) |
x(横)方向の移動位置を指定します。 コードは「下位バイト/上位バイト」の2つ(2バイト)です。 指定できる範囲は以下の通りです。 0000h ≦ (xL + xH × 100h) ≦ Max_Xdot |
yL (下位バイト) yH (上位バイト) |
カーソル位置 y (8ドット単位) |
y(縦)方向の移動位置を指定します。考え方は上記と同じです。 指定範囲は以下となります。 0000h ≦ (yL + yH × 100h) ≦ Max_Ybyte (用語の意味は後ほど説明) また、xの値が1ドット単位であるのに対し、yの値は8ドット単位です。 この理由も‥‥後ほど説明します。 |
因みに、XやYの値が指定の範囲を超えると、コマンドが無効となりカーソルが移動しません。
ご注意ください。
表示メモリ構成
先ほど「Max_dot」や「Max_Ybyte」など、色んな用語が出てきました。
これは表示メモリサイズや構成の事です。詳細は以下をご覧ください。
用語 | 説明 | 表示メモリ数 |
---|---|---|
Xdots | 全体(表示メモリ)の、X(横)方向のドット数 | 512 (200h) |
Ydots | 全体(表示メモリ)の、Y(縦)方向のドット数 | 32 (20h) |
Ybytes | 全体(表示メモリ)の、Y(縦)方向のバイト数 「Ydots ÷ 8」※1バイト=8ビット(ドット)の為。 先ほどのコマンドセット項目で「カーソル位置 y(8ドット単位)」という 記載があった通り、Y方向の値は「8ドットで1つの固まり」です。 その為、8の倍数である4つの値(8、16、24、32)から選び、指定しましょう。 |
4 (4h) |
Max_Xdot | 全体(表示メモリ)の、X(横)方向のドット単位での最大値 [Xdots - 1] これはドット数ではなく、ドット値の事です。値は0から始まります。 1ドット目がドット値0で、2ドット目がドット値1‥‥なので 512ドット目がドット値511となります。Y方向の値についても同じです。 |
511 (1FFh) |
Max_Ydot | 全体(表示メモリ)の、Y(縦)方向のドット単位での最大値 [Ydots - 1] | 31 (1Fh) |
Max_Ybyte | 全体(表示メモリ)の、Y(縦)方向のバイト単位での最大値 [Ybytes - 1] | 3 (3h) |
用語/式 | 説明 | ドット数 |
---|---|---|
DispXdots | 表示エリアの、X(横)方向のドット数 | 128 |
DispYdots | 表示エリアの、Y(縦)方向のドット数 | 32 |
[DispXdots × DispYdots] | 表示エリアドット数 | 128x32 |
[Xdots - DispXdots × Ydots] | 非表示エリアドット数 | 384x32 |
[Xdots × Ydots] | 全エリアドット数 | 512x32 |
リスト右端の「表示メモリ数」や「ドット数」は、製品によって異なります。
上記は今回使用している「GU128X32D-D903S」の値です。
他のGU-D製品の値も併せて知りたい場合は、 GU-Dソフトウェア仕様書 をご覧ください。
(仕様書の4ページに、上記の様な構成表を記載しています)
いよいよ課題&スケッチしていきましょう!
課題
カーソル移動し、表示エリアの右下位置に「Hello!」という文字を1回だけ表示させる。
スケッチ
カーソル位置は、x=0056h、y=0003h になります。
void loop()
{
//ここから カーソル移動
Serial.write(0x1F);
Serial.write(0x24);
Serial.write(0x56); //x(横)位置 86ドットの位置
Serial.write(0x00); //同上
Serial.write(0x03); //y(縦)位置 4列目の位置
Serial.write(0x00); //同上
//ここまで カーソル移動
Serial.print("Hello!"); //文字表示
}
上位バイトは x y 何れも00ですが、きちんと記載しましょう。
表示画面
無事、カーソル移動できましたね!
今回はいつも以上に色んな情報が出てきて疲れました‥‥。
これらの内容を、次のステップで活かしていきましょう。
さて次回は「スクロール表示」です!
カーソルを表示するコマンドセットというのもあります。
コードは「1Fh 43h 01h」の3つ。お試しください。