この『DesignIdeas』のコーナーでは、これまでにも、端子数の少ないマイクロコントローラの活用方法がいくつか提案されている*1)*2)*3)*4)。本稿では、それらとは少し異なるアプローチで多数のLEDを駆動する方法を紹介する。その方法では、マイクロコントローラに1個のICを外付けするだけで、最大12個のLEDを駆動できる(図1)。外付けIC(ドライバ)として使用するのは、12ステージのバイナリカウンタだ。実現できる機能は、バーグラフ(LED列の中で、発光するLEDの数が変化する)やドットバーグラフ(LED列のうち1つだけが発光し、どのLEDが発光するかが変化する)である。なお、ドットバーグラフの場合には、図2に示すように、電流制限抵抗を1つだけにすることも可能だ。
さらに7セグメントのLEDディスプレイにも応用でき、その場合には図3のような構成とする。この回路は、従来から用いられている多重化駆動方式を利用した4桁共通カソード表示回路を改変したものとなっている。試作したディスプレイには、LEDとして順方向電流が10mAのときに光度が2000μcd(カンデラ)〜5600μcdとなる高輝度LED「SC52-11EWA」(台湾Kingbright社製)を使用した。ドライバとしては、12ステージのバイナリカウンタ「74HCT4040」(オランダNXP Semiconductors社製)を用いたが、電源電圧を下げたい場合には「74HC4040」を使用することができる。
アセンブリ言語で記述したサンプルプログラムのアーカイブを用意している。サンプルプログラムは、米Microchip Technology社製のマイクロコントローラを使用することを前提としたものとなっている。ベースとなるプログラムは、アーカイブ内の「DI 4589 listing1.asm」で、グラフに表示する値Nに対応した74HCT4040の出力(パルスカウント値)Qを計算し、それを基にカウンタ動作を制御するというものである。QとNは、ドットバーグラフ表示ではQ=2N−1、バーグラフ表示ではQ=2N−1の関係となる。
アーカイブ中の「DI 4589 listing2.asm」は、Microchip社のマイクロコントローラの中でも最少の端子数の製品群「PIC10Fシリーズ」の「PIC10F202」を使用する場合のサンプルである。この製品の内部クロック周波数は4MHzだが、それでもLED発光強度の揺らぎ(フリッカ)は気付かないほど小さくなる。さらにフリッカを低減するには、もう少しクロック周波数が高い製品を使えばよい。例えば、内部クロック周波数が20MHzの「PIC12F629」などが使用できる。「DI 4589 listing3.asm」は、図3のような7セグメント4桁ディスプレイの駆動に対応したものである。
脚注
※1…Anonymous, "Microcontroller provides low-cost analog-to-digital conversion, drives seven-segment displays," EDN, May 10, 2007, p.80
※2…Raynus, Abel, "Squeeze extra outputs from a pin-limited microcontroller," EDN, Aug 4, 2005, p.96
※3…『マイコンのI/Oポート1個でバーグラフを制御』(R Jayapal、EDN Japan 2006年10月号、p.116)
※4…『3つのマイコンポートで12個のLEDを駆動』(Nedjeljko Lekic、EDN Japan 2007年3月号、p.97)
Copyright © ITmedia, Inc. All Rights Reserved.