2-5. 日本語の表示
2-5. 日本語の表示
今回は、私たちにとって馴染み深い「日本語の表示」です! 早速進めていきましょう。
課題
日本語で「こんにちは」と1回だけ表示させる。
コマンドセット
日本語や漢字は、文字コマンド入力だけでは表示されません。
事前に3つのコマンドで、言語やサイズを指定する必要があります。
- フォントサイズ選択
文字サイズを2種類(5x7ドット/8x16ドット)の中から選びます。
5x7サイズでは日本語や漢字は表現できない為、ここで8x16サイズを選択します。
- 2バイト文字モード指定/解除
漢字(日本語)モードとも言います。1バイト文字(英文字や記号)に対して漢字は種類が多く、
表現に2バイトの容量が必要な事から2バイト文字と呼んでいます。ここでモード指定を行います。
- 2バイト文字タイプ選択(言語選択)
4種類(日本語/韓国語/中国簡体字/中国繁体字)の中から、日本語を選択します。
コマンド一覧
3つのコマンドを指定後、文字コマンドを入力します。
コマンドセット名 | コマンド | 機能 |
---|---|---|
①フォントサイズ選択 | 1Fh、28h、67h、01h、02h | 「8x16ドットキャラクタ」選択 (赤字部分が01hなら5x7ドット) |
②2バイト文字モード 指定/解除 |
1Fh、28h、67h、02h、01h | モード「指定」 (赤字部分が00hなら解除) |
③2バイト文字タイプ選択 | 1Fh、28h、67h、0Fh、00h | 「日本語」選択(赤字部分が01hで韓国語、 02hで中国簡体字、03hで中国繁体字) |
④文字入力 | ※フォント表 参照 | 指定した文字の表示 |
![キャラクタコード表:[1][82Bx]の位置に[こ]](/../../../../upload7fc92/jbimages/font2.gif)
キャラクタコード一覧 (16x16サイズ:8140~9FFCh)
今回は日本語のフォント表を参照します。
早速「こんにちは」のコードを探してみましょう。
まず1文字目「こ」のコードは‥‥
横が82B、縦が1なので「82B1」となります。
コードで表すと「82h」と「B1h」です。
日本語や漢字を表現するには、2つのコードが必要です。
以降も同じやり方で見ると、こうなります。
こ → 82h、B1h
ん → 82h、F1h
に → 82h、C9h
ち → 82h、BFh
は → 82h、CDh
さあ、スケッチです!!!
スケッチ
void loop()
{
//①フォントサイズ選択コマンド
Serial.write(0x1F);
Serial.write(0x28);
Serial.write(0x67);
Serial.write(0x01);
Serial.write(0x02); //8x16ドットキャラクタ選択を定義
//②2バイト文字モードコマンド
Serial.write(0x1F);
Serial.write(0x28);
Serial.write(0x67);
Serial.write(0x02);
Serial.write(0x01); //指定
//③2バイト文字タイプ選択コマンド
Serial.write(0x1F);
Serial.write(0x28);
Serial.write(0x67);
Serial.write(0x0F);
Serial.write(0x00); //日本語を選択
//④文字コード入力
Serial.write(0x82); //「こ」
Serial.write(0xB1); //〃
Serial.write(0x82); //「ん」
Serial.write(0xF1); //〃
Serial.write(0x82); //「に」
Serial.write(0xC9); //〃
Serial.write(0x82); //「ち」
Serial.write(0xBF); //〃
Serial.write(0x82); //「は」
Serial.write(0xCD); //〃
//以降の命令を受け付けなくする
while(1){}
}
表示画面
「こんにちは」表示されました。
日本語入力は事前に指定するコマンドが多いですが
使いこなせるよう頑張ってくださいね!
次回は「国際文字セット」です。
もちろん漢字も表示できます。
日本工業規格「JIS X 0208」に準拠してるので、
地名や旧字体などを含む漢字(JIS第2水準漢字)にも対応してます。
因みに画像「ノリタケ伊勢電子株式会社」のコードは、以下の通りです。
ノリタケ → 836Dh 838Ah 835Eh 8350h
伊勢電子 → 88C9h 90A8h 9364h 8E71h
株式会社 → 8A94h 8EAEh 89EFh 8ED0h