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