輝点移動型のディスプレイ(moving dot display)にはバーグラフ型のディスプレイと比較していくつかのメリットがある。例えば、すべてのLEDを同じ電流量で駆動することで、表示点の輝度を等しくできることなどである。
ここでは、輝点移動型のディスプレイを7つのLEDで構成し、安価な8ビットマイクロコントローラで制御するケースを考える。その場合に問題となるのは、どのような制御インターフェースを使用するのかということだ。最もシンプルな制御方法は、余分な部品を使わずに直接LEDをマイクロコントローラに接続する方法であろう。しかし、この方法ではマイクロコントローラの出力端子を7本専有することになり、安価な製品ではそのような空き端子がない場合も多い。
以前、本コーナーにおいて、マイクロコントローラのI/Oポートを1個だけ使用するインターフェースが紹介されていた*1)。それは輝点移動型ディスプレイではなく、バーグラフディスプレイに関するものであった。そのほかにも、使用するI/O端子の数を減らすためのインターフェースとしては、シリアル‐パラレル変換レジスタやシリアル入力型のジョンソンカウンタを使用する方法がある。しかし、小型のマイクロコントローラの場合、SPI(serial peripheral interface)に対応していないものも少なくないので、ファームウエアレベルでの大幅な変更が必要になる*2)。本稿では、こうした問題に対処可能な制御方法を紹介する。
図1の回路が本稿で紹介する制御方法を実現するものである。この回路では、マイクロコントローラの3本の端子をデータ、クロック、ラッチの信号線として用いる。ファームウエアとハードウエアは少しだけ追加するだけでよい。この方法は、輝点移動型ディスプレイでは、1度にLEDを1つだけ発光させればよいということに着目したものだ。この回路のポイントは、1対8のアナログデマルチプレクサ(この例では、米National Semiconductor社の「CD4051」)を利用している点である。この方法では、LEDの駆動電流と電圧がマイクロコントローラの仕様によって制限されることがない。
リスト1に示すのは、この回路のデモ用ファームウエアである(http://www.edn.com/contents/images/4209listing.zipからダウンロード可能)。このデモでは7個のLEDが順番に繰り返し点灯する。具体的には、カウンタによるカウント値を7で割った余り(モジュロ7)に相当する番号のLEDが点灯する。
図1では、マイクロコントローラIC1として低価格用途向けの8端子製品である「MC68HC908QT1」を使用している。マイクロコントローラの出力端子として、隣接する任意の3つの端子(例えばPA0、PA1、PA2)を使用し、CD4051の入力端子A、B、Cに接続できれば都合が良いのだが、そのようなことが常に可能なわけではない。例えば、IC1のPA2、PA3端子は入力専用である。しかし、この問題もリスト1に示すようなプログラムにすれば回避できる。また、本稿の例では標準命令セットのみを使用しているため、どのような小型マイクロコントローラにも適用可能である。
※1…『マイコンのI/Oポート1個でバーグラフを制御』(R Jayapal、EDN Japan 2006年10月号)
※2…Raynus, Abel, “Squeeze extra outputs from a pin-limited microcontroller," EDN, Aug 4, 2005, p.96
Copyright © ITmedia, Inc. All Rights Reserved.