SUPPORT

3-2. カーソルセット

3-2. カーソルセット

 2つ目のアクション動作を学ぶ前に、ここで「カーソルセット」を覚えます。
 これは「カーソルの位置を好きな場所へ移動させておくコマンド」です。
 アクション動作ではないですが‥‥次のステップで使うので、ぜひ覚えておきましょう!

 

カーソルが移動できる範囲

 好きな場所と言っても、どこからどこまで移動できるのか?
 これは製品によって異なります。

 今回使用している製品は「GU128X32D-D903S」でしたね。

  GU-Dドット数128x32

 製品名で示す通り、ディスプレイ(表示エリア)のドット数が
 x(横)方向=128ドット、y(縦)方向=32ドットの製品です。

 なので、128x32ドットの範囲が「移動できる範囲」だと
 思いがちですが‥‥違います。正解は 512x32 ドットです。

 何故そうなるのでしょう。これは「非表示エリア」というエリアを含んだ範囲なんです。

 

 

非表示エリアとは?

 一言で言うと「ユーザーからは見えないエリア(領域)」の事で、表示メモリの領域の1つです。
 以下にまとめました。

用語 詳細説明
表示メモリ
(RAM)
コンピュータが処理する表示データを一時的に保存する領域です。表示用メモリとも言います。
これは全てのVFDモジュールに内臓されています。

領域の広さは製品によって様々ですが、何れの製品もメモリの領域が表示画面の領域より広い為、
メモリ内の一部データのみが表示画面に表示される事になります。全ては表示されません。

このように、表示メモリは表示できる領域とそうでない領域‥‥
つまり「表示エリア」と「非表示エリア」の2つに分かれています。
非表示エリア 先述の通り、表示メモリだけど私達の目には見えない領域です。使い道は色々あります。
(例:表示途中のデータをユーザーに見せないよう隠しておく作業領域にする‥‥など)
因みに領域の場所は、表示画面の右側です。こんなイメージですね。

表示エリア128ドットの右隣に非表示エリア384ドット

次のステップ「スクロールアクション表示」で使うコマンドです。


 表示されない領域があるという事が分かりました。次に、コマンドセットを見ていきましょう。

 

コマンドセット

動作名 コマンド 機能
カーソルセット 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ですが、きちんと記載しましょう。

 

表示画面

  (右下に)Hello!
クリックで拡大表示

無事、カーソル移動できましたね!
今回はいつも以上に色んな情報が出てきて疲れました‥‥。
これらの内容を、次のステップで活かしていきましょう。

さて次回は「スクロール表示」です!

 


ちょっとしたメモ

 

  Hello!の右隣でカーソルが点滅
クリックでアニメ開始

カーソルを表示するコマンドセットというのもあります。
コードは「1Fh 43h 01h」の3つ。お試しください。



当ウェブサイトでは、お客さまによりよいサービスをご提供するため、Cookieを使用しています。
Cookieを無効にする方法を含め、当社のCookieの使用については「個人情報保護方針」をお読みください。

OK