CPLDで遊ぼう!(19)
78F9222のコーナー(10)
更新日:2006年10月2日

ドットマトリクス温度表示装置を作ろう
引き続きCPLDとNECマイコンのコラボ製作です。今回のCPLDはロジックICの代わりを行っておりICで組むと大変な回路になりますが、CPLDで省スペースに組み込めたと考えております。マイコンにはC言語を用いて開発していますのでやりたいことが簡単に実現出来ています。従来のPIC+ロジックICではギブアップしていたかもしれません。では製作スタートしましょう。
ドットマトリクス温度表示装置を作ろうの基本仕様
1)16ドットマトリックスLEDを用いて温度を表示する。
2)温度表示範囲は0℃から50℃までとする。
3)温度の更新は1秒ごとに行います。
4)16時間内の温度変化をドット表示出来ます。
5)16時間内の最高気温、最低気温を表示します。
各種モードをまとめます。いつものテンキーを接続するので数字を押すことによってダイレクトに表示を切換えます。
温度計の基本的な部分は78F9222のコーナー(4)を参照下さい。
ドットマトリクス温度表示装置を作ろうの全体構成図
CPLDはドットマトリックスLEDを制御するためのモジュールと1秒出力がメインになります。少ないポートでマイコンとやり取りするために表示データはシリアル通信で行います。マイコンは温度計部分、CPLDの基本制御を受け持ちます。
(ドットマトリックス温度表示装置の構成図)
ドットマトリクス温度表示装置を作ろうのCPLD内部構成図
最初にCPLDの内部構成を示します。今回は比較的簡単になっております。
表示データ駆動はシフトレジスタとラッチ、表示制御切換えはセレクタを構成しています。1秒出力はマイコンの割り込み端子に接続しています。
(CPLD内部構成図)
ドットマトリクス温度表示装置を作ろうのドット表示データの作成
ドット表示のためのデータを作ります。エクセルで作ると簡単です。縦方向の左側から16ビットのデータを構成しています。
(ドット表示データ)
50℃を超えると「UP」、氷点下になると「DN」と表示するようにプログラムはしていますが、確認は出来ておりません。申し訳ございません。
ドットマトリクス温度表示装置を作ろうのドットLED駆動
私が製作に使用したドットマトリックスのLEDは2色タイプです。アノードコモンとなっていますので次のように駆動しています。
(2色LEDの駆動)
今回のLED駆動は全てCPLDのみから行っています。従って縦のラインに点灯する数が多い「1」の表示などは完全に電流が足りておりません。ケースに高密度組み込みをしていますのでトランジスタを入れる余裕もありませんが、かなり暗いところで見ないと輝度のばらつきが良く分かります。皆さんも色々工夫して見やすいようにしていただければ良いかと思います。
ドットマトリクス温度表示装置を作ろうの16bitシフトレジスタモジュール
今回も新しいモジュールのみ記します。
(16bitシフトレジスタモジュールの入出力)
(16bitシフトレジスタのVHDLソース)
ドットマトリクス温度表示装置を作ろうの16bitラッチモジュール
(16bitラッチモジュールの入出力)
(16bitラッチモジュールのVHDLソース)
ドットマトリクス温度表示装置を作ろうの16bitセレクタモジュール
(16bitセレクタモジュールの入出力)
(16bitセレクタモジュールのVHDLソース)
ドットマトリクス温度表示装置を作ろうのピン接続のまとめ
ピン接続についてまとめます。
(ドットマトリックス温度表示装置のピン接続)
ドットマトリクス温度表示装置を作ろうのマイコン側回路図
マイコン側の回路図です。LEDのデータはシリアルでCPLDに出力します。
(ドットマトリックス温度表示装置のマイコン側回路図)
(ドットマトリックスのLED接続)
数字入力用のテンキーは前回と同じものを使用します。このテンキーパッドは1台作っておくとコネクタで抜き差し出来るので大変便利です。
(テンキー入力回路)
CPLDとマイコンの間には電位差がありますので前回と同様にバッファ用にICを付けて接続します。
(レベル変換回路)
CPLDからの1秒出力はCPLD⇒マイコンのためレベル変換は必要ではありません。
ドットマトリクス温度表示装置を作ろうのポート割付と設定
(ポート割付と設定)
今回はメインと割り込みのソースをいじります。
ドットマトリクス温度表示装置を作ろうの16H温度変化グラフ
マイコン側のソフトをいじり易いこともあり16時間の温度変化を表示することにしました。電源を切れば消えますがずっと表示している限りには大変便利な機能です。16ドットを1℃づつに分けて表示します。日本は四季があり温度の変化が大きいので3パターンで表示出来るようにしました。
(16H温度変化グラフのパターン)
10℃ごとの基準線を緑色表示に温度のプロットを赤色表示にしています。基準線とプロットが重なった部分は橙色表示なります。今回この機能を入れたのでマイコンの容量目一杯にプログラムしております。C言語で良かったですね。
ドットマトリクス温度表示装置を作ろうの大完成の姿
今回は加工しやすい樹脂ケースに組み込みました。従っていきなり完成した姿です。
(CPLD基板、マイコン基板、レベル変換基板などで高密度です)
(テンキー接続して使いこなします)
(温度測定表示中)
(最高気温、最低気温を表示しています)
(16時間の変化をプロット表示しています)
(壁に付けてオシャレですね)
ドットマトリクス温度表示装置を作ろうの全VHDLソースコード
私と同じ製作をされる方、または勉強される方のために全ソースコードなどプログラム一式を公開いたします。フォルダごと圧縮しましたのでそのままもってって下さい。
全ソースコードはこちらです。
ドットマトリクス温度表示装置を作ろうのマイコンソースファイル
ソースファイル一式はこちらからダウンロードして下さい。フォルダごと圧縮しています。全ファイルが入っています。ライタで書き込みする実行ファイルも含まれています。
皆さんいかがでしたでしょうか。CPLDとマイコンのコラボレーションでますます世界が広がったように感じています。これからも楽しい製作をどんどん発表したいと思っております。
これからもますます楽しくなる「CPLDで遊ぼう!」をよろしくお願いいたします。
これからも「NEC78K0/K0Sマイコン開発室」はどんどん楽しくなります。