H8 マイコンによるマトリックス LED の制御
１年Ｃ組 青木 雅典
指導教員 米田 隆恒

１．要約
最近、街中でよく電光掲示板を見るようになった。私も、一度はこのようなものを作ってみたいと思っていた。そこで今回、マイコン制御の学習を兼ねて、H8 マイコンを使用してマトリックス LED の制御を行った。
キーワード H8 マイコン、マトリックス LED、ダイナミック点灯方式、JIS コード

２．研究背景と目的
最近、公共施設やお店の広告など、ほとしかし、普通の電光掲示板の仕組みをそんどの場所で電光掲示板が使用されるようのまま H8 に組み込もうとすると H8 自身になった。電光掲示板とは、LED(発光ダイに文字パターンを記憶させなければならなオード)を格子状に配置したり、液晶を用いい。すると、どうしても LED 上で表現できたりすることにより、文字や絵などを表現る文字の種類に限りができてしまい、実用するものである。私は今回、H8-3664F マ性がなくなってしまう。

イコン(以下 H8 マイコンという)を用いて、そこで私は、Visual C# 2008 を用いた自8×8 のマトリックス LED(以下 LED とい作アプリケーションを作成した。そして、う)を制御し、電光掲示板のようなものを作指定した文字をビットマップデータに変換ろうと考えた。

した後、そのデータを RS-232C シリアル通信(以下シリアル通信という)を用いて H8 に送信し、LED 上で文字として表現するという方法を採った。
ここでは、そこに至るまでの研究経過を報告する。

３．研究内容(１)研究事項
目標は、自作アプリケーションを使用し
図１ H8 3664F(ルネサス エレクトロニクス，動作周波数 16MHz)て、パソコンで入力した文字を LED にスクロール表示させることである。

＜研究１＞H8 マイコン単独で、プログラ・ トランジスタ－2SC1815

ムに組み込んだビットマップデータを LEDにスクロール表示させる。

(東芝，NPN 型)
・ 炭素皮膜抵抗 1/4W－3 種・ 両面スルーホールユニバーサル基板＜研究２＞パソコンと H8 マイコン間でシリアル通信を行い、キー入力した 1 文字をリアルタイムで LED に表示させる。
＜研究３＞自作アプリケーションを使用して、入力した文字列を LED にスクロール表示させる。

・ その他(配線コード、はんだなど)
今回の研究は、主にこの回路(以下 LED制御ボードという)を使用して行っていく。
＜研究１＞
ここでは、LED 制御ボードで電光掲示板と同じような動作をさせる。ただし、文字のビットマップパターンは H8 マイコン本(２)研究方法とその結果体に記憶させておく。

はじめに、今回の研究で使用する回路を設計・製作する。

まず、プログラムを作成する前に、マトリックス LED を制御する方法を考えた。今回は、「ダイナミック点灯方式」を採用した。
ダイナミック点灯方式とは、人間の目の残像効果を利用したもので、表示させる部分を高速で切り替え、まるでそれぞれの部分が同時に光っているかのように見せる方法である。
この方式を取り入れた理由は、２つある。
一つは、LED のすべてのピンを直接 H8 マ
イコンの IO ポートに接続していくと、IOポートのピン数が足りなくなってしまうことである。もう一つは、図３のように点灯させたいときに、LED を H8 に直接つない

図２ 製作したマトリックス LED
制御ボード
この回路には、主に次のような部品を使用している。
・ AKI-H8 3664F マイコンボード(秋月電子通商)・ DotMatrixLED－LT5027E(SHARP，赤・緑 2 色点灯)

でいると、うまく表示できなくなってしまうということである。

灯の回路を製作した。GND 側は、トランジスタ(2SC1815)のスイッチング作用を利用してコントロールする (図４) 。一方、＋電源側は、それぞれのピン(図３の 1～8)を H8
マイコンの IO ポートに接続し、LED の ON，OFF を出力する。
すると、実際には LED 上で表示する文字を 8×8 のビットマップデータで書き出した
図３ 表示させるパターン…点灯させたい部分

ものを縦方向に割り、それを数値化することで表現できることになる (図５) 。

…点灯に表示されてしまう部分
ここで、図３について、説明とその解決策を述べておく。図３において、数字側を＋電源、アルファベット側を－電源に接続するものとする。
いま、図の濃い部分(A・2 と B・1)を点灯させたいとする。このために、＋電源は 1 と 2 のみ ON にし、－電源は、A と B

図４ トランジスタのスイッチング回路部分にのみ電流が流れ込むようにする。すると、点灯させたい部分に加え、A・1 と B・2 (の部分)も光るようになってしまうため、正しく文字を表現することができなくなってしまう。
そこで、ダイナミック点灯方式を利用する。つまり、まず A にのみ電流が流れ込むようにすると A 列のパターンが点灯し、次に B にのみ電流が流れ込むようにすると B列のパターンが点灯する。
こうすることで、LED の点灯場所を一列ずつ処理していくことになり、最初のように光らせたくないところが点灯する現象を抑えることができる。
これで LED 制御の問題が解決した。次は、実際に電光掲示板のようなプログラムを組

図５ 文字パターンを H8 マイコンに記憶させるまでの流れんでいく過程である。
LED 制御ボードの方は、ダイナミック点

実際のプログラムは次のように設計した。

まず、表示させたい文字をつなげた状態の

図７は、H8 マイコンとパソコン間で行わビットマップデータを作成し、数値化したれるシリアル通信の全体像である。プログ

ものをキャラクタ型の配列変数に入れておラムは、キー入力データをパソコンから H8く。次に、For 文を回してビットマップデマイコンに送信すると、H8 はその文字の表ータを一行ずつずらしながら読んでいき、示データを読み込み、LED に表示する、とそれを LED に表示させる。すると、まるでいうものである。

文字列がスクロールしているかのようにみえるという仕組みである (図６) 。
これで、H8 マイコンのみでマトリックスLED の制御を行い、電光掲示板のようなものを製作することができた。
図７ H8 マイコンとパソコン間でのシリアル通信の全体像
Tera Term では日本語の通信ができない
ことやプログラム上での処理のしやすさなどを考えて、今回はアルファベットと数字
図６ ビットマップコードをずらして読むときのイメージを表示できるようにする。仕組みは簡単であり、パソコンから送られてきた ASCII コードでキーを判定し、条件処理で LED に文＜研究２＞字を表示するというものだ。また、ビット

ここでは、パソコンで入力した文字をリマップパターンは、あらかじめ研究１と同アルタイムで表示させていく。また、今回じ方法で作成しておき、条件処理を行うとも文字のビットマップパターンは H8 マイきに選択して使用する。

コン本体に記憶させておく。

これで、入力文字のリアルタイム表示がここからは、シリアル通信を用いて研究成功した。対応しているキーならば、どこを行っていくため、まずは H8 マイコンをを押してもリアルタイムに表示できる。しパソコンとシリアル通信させてみた。

かし、＜研究１＞，＜研究２＞ともに文字私が使用している AKI-H8 3664F マイコのビットマップパターンをすべて手作業でンボードには、既にシリアル通信ドライバ作成しているため、文字の変更が困難であIC が実装されているため、マイコン側では、り、あまり実用性が感じられない。

通信速度(ボーレート設定)や割り込み許可

そこで、＜研究３＞ではアルファベットなどを設定するだけでよい。また、パソコや数字の他に、ひらがなやカタカナ、漢字ン側では今回、数字や文字の送受信を行うなども表示でき、8×8 の BDF 形式データだけなので、ターミナルエミュレーターソならば、どんなフォントも使用できるといフト(Tera Term)を使用して通信を行った。

うようなシステムを開発する。ここで、BDF

形式とは、ビットマップフォントの形式の上記の内容をもう少し詳しく説明する。

一種であり、X Window System 用フォントアプリケーションは Visual C#でプログラでもある。

ミングしている。

＜研究３＞
ここでは、自作アプリケーションを使用して、入力した文字を LED 上にスクロール表示させる。

図９ 開発中の自作アプリケーション
文字列を JIS コード(ISO-2022-JP)にエンコードする理由は、BDF 形式のフォントデータが JIS コードで表記されてい図８ 実際に動作させているところることが大きな理由であるが、それ以外にも、エスケープシーケンスから文字種開発中の自作アプリケーション(図８)は、以下のようなことを行う。
①表示させる文字列をパソコンから入力(取得)する。の判別を行うことができるなどのメリットがある。
パソコンでキー入力された文字をビットマップデータへ変換するために、今回②文字列を JIS コードにエンコードし、は自分で構築したビットマップ DB を使あらかじめ用意したビットマップデー用した。データベースのフォーマットはタベース(以下ビットマップ DB という)

図 10 のような形式にしている。

から JIS コードを検索し、ビットマップデータを取得する。

私は、8×8 の BDF 形式データから、JIS コードとビットマップデータを抽出③取得したビットマップデータをバイトし、データベースとして書き出すプログ

配列に格納しておき、シリアル通信でラムも作成した。つまり、これを使用すH8 マイコンに送信する。

ると、フォントさえあれば様々な文字が④H8 マイコン側で、受信したデータを使用できるということになり、非常に便研究１と同じ方法で、スクロール表示利になる。将来的には、このプログラムする。

もメインアプリケーションの機能の一つに取り入れようと考えている。

なお、今回は恵梨沙フォント(恵梨沙フてから文字をスクロールしているためであォント PJ，BDF フォント)を使用した。

る。解決策として、スクロールをしながら少しずつ受信するという方法が挙げられる。

６．今後の課題
現在の自作アプリケーションは、まだ開発段階であるため、操作性やエラー処理、項目設定などの機能に欠ける。そのため、
図 10 自分で構築したデータベースのフォーマット

今後はエラー対処やデザイン、設定項目の増加など機能拡大を図った上で、今まで作成してきたプログラムを一つのアプリケー

H8 側の LED 制御プログラムは、基本的に研究２と同様なので、ここでは説明しないことにする。

ションとしてまとめていきたい。
また、現在は LED の赤色の部分しか制御できないので、今後は緑色の部分も制御できるように機能を拡張しようと考えている。

５．考察
今回製作した LED 制御ボードは、主に次のような問題点があった。

７．参考文献[1]「ぼくらのマイコン・ロボット工作」①赤色点灯時、下２段のみ少し暗くなる。

横井浩史、松下光次郎、CQ 出版(2006)②ときどき、ある一列が光らなくなるこ[2]「Visual C# 2008 逆引き大全 555 の極とがある。
③H8 メモリ上の関係で、ある一定の文字数よりも多くは表示できない。
これらの問題点の原因と解決方法を私は以下のように考えている。
①については、H8 マイコンの構造上、接続している IO ポートのピンは、周りと比べ意」池谷京子、増田智明、国本温子、秀和システム(2009)[3]Microsoft 社、Visual C# デベロッパー
センター
http://msdn.microsoft.com/ja-jp/vcsha
rp/default.aspx[4] Renesas Electronics 社、H8/3664 グルて出力電流が低くなっている。解決策としープ データシートては、バッファーIC を利用する、又は使用

http://japan.renesas.com/

する抵抗の抵抗値を落とすということが挙げられる(すでに対処している)。

８．謝辞②については、LED ボード裏面の配線に、今回の研究にあたり技術指導をしてくだ線を重ねてしまったところがあるため、そさった本校サイエンス研究会物理班顧問のこから発生している接触不良かと考えられ米田先生、及びアドバイスをくださったサる。

イエンス研究会物理班の先輩方に、この場③については、H8 に完全にデータを送っをお借りして深く御礼申し上げます。