獣医さんの電子工作とパソコン研究室
 
 46.SLX-8100ドットマトリクスディスプレイで遊ぶ
 

  

 ■ SLX-8100 LEDドットマトリクスディスプレイモジュール
 いつも面白い商品を販売している「現品限り」吉野電装さんに、LEDドットマトリクスモジュールが格安で販売されていましたので購入してみました。
いつものごとく、別のアイディアでこれを使った機器を作ろうと思って購入したのですが、動作テストを兼ねて、時計を製作しましたのでレポートします。
 このSLX-8100ドットマトリクスLEDモジュールはSANYOの製品で、基板外形寸法が116×49mm、ドットマトリクス部分が96.5×47.5mm、24×48ドット、赤LEDの仕様となっています。
  
基板上にはLC22039Cというコントローラー(CPU)が1個とTPC8207 MOS FETなどのLEDドライバが搭載されています。コネクタ部分は20ピン1列(1.5mmピッチだと思う)となっていて、吉野電装さんの販売ページからの情報だと接続は下記のようになっているらしいです。
使用方法は、シリアルで表示データを転送しパラレルでアドレスを指定、読み込ませるだけでコントロール・表示できます。
このモジュールは24×24ドットのモジュールが2個並んだ構成になっており、表示されている部分のデータRAMには表示中のRAMと書き込み用のRAM ( 表と裏 )があります。(この場合もグラフィクRAMというべきなのであろうか) 表と裏の切替はPG0端子で行なわれます。
書き込みのシーケンスについては、Web上でデータシートを探したのですが見つからなかったので、SANYO SLX-5015という3色LEDドットマトリクスモジュールのデータシートを見つけたので、そちらを参考にしました。
書き込みシーケンスは
1列24ビットのシリアルデータをCLKの立ち上がりで読み込ませ(左右同時に読み込み)、読み込むアドレスを出力→CSをHigh→WRの立ち上がりでアドレスを読み込ませるという手順となります。
データよりアドレスのほうが後に読み込ませるようになっています。その後、PG0端子を反転させると書き込んだデータが表示されます。
 
■ コントロール部(PIC-BASIC)
 コントロール部には秋月電子より販売されているPIC-BASIC ICスタンプ版を利用しました。
R8CやH8でも良かったのですが、手元に40pinのPIC-BASICモジュールが余っていたのと、周辺部品がまったくいらなく、実験程度にと思いプログラミングを始めてしまいました。(Cのほうが楽です)
 
まずは、いつものようにブレッドボードで実験です。
PIC-BASICでは正確な時間が測定できませんので、秋月のリアルタイムクロックRTC-8564NBモジュールを使用し、正確な時間を得ました。
 
LEDモジュールのコネクタは手元にありませんでしたので、一般的なピッチのピンソケットを取り付けて使用しました。↓
 
   
   全体の回路図です → 
 
   
   ↑フォントの設計・ピンアサインなどの資料(エクセルファイル・xls形式)
上のエクセルファイルを使用する場合は、2進-16進変換関数を使うため、ツール-アドイン-分析ツールにチェックが必要です。また、セキュリティレベルでマクロを使用できるようにする必要があります。
 
 ■ 時計プログラム (PIC-BASICでのプログラミング)
■フォントの設計
 このモジュール自体にはフォントを持っていませんから、フォントを展開して送らなければなりません。
フォントは小さいものと大きいものの2種類を設計し、PIC-BASICの内臓EEPROM (256バイト) に保存しましたが、全て保存することはできなかったので、一部はプログラム中でサブルーチンで読み込む形としました。
フォントの設計はエクセルを使用して、選択した範囲のセルの塗りつぶした部分と塗りつぶしていない部分をVBAを使ってビット列に変換してデータ列を作成しました。
フォント自体は、変数への代入や取扱いを考慮して、横8ビットに収まるようにしてあります。
(上のエクセルファイルを参照してください) 
 
■リアルタイムクロックモジュール
 時間はリアルタイムクロックモジュール RTC-8564NB を使用しました。こちらはI2C通信でデータのやり取りをします。PIC-BASIC自体のI2C通信のコマンドではうまく使用できないようで、専用のルーチンをプログラム中に書き込んであります。
初期化の手法等はデータシートにあるような手順で行い。INT端子につながれたLEDを定周期タイマ割り込み機能を設定して、1秒後との周期で点滅させ動作の確認としました。
 RTC-8564の機能で曜日に対応した数値がどうしてもうまく読み出せなかったので、年月日より曜日を計算で求めるルーチンを利用して、曜日を表示させています。
 
■LEDマトリクスへの書き込み
 表示されていないRAM(裏)に書き込んでおき、表示しているRAM(表)と切り替えることで書き込んだものが瞬時に表示されます。
先に書いた方法で1行24ビットのデータを先に転送し、書き込むためのアドレスを出力しておいてCS→WRの立ち上がりでRAMに書き込み、表RAMと裏RAMの表示を切り替えれば表示されます。 
回路図にあるLEDはLEDモジュールにデータを書き込んでいる時に点滅します。書き込みの確認用です。
 
■完成プログラム
 
 SLX-8100を使用したPIC-BASIC時計プログラム(LEDmatrix_CLOCK_20.pb)
 
 PIC-BASICのファイル(.pb)ですが、テキストファイルですので、どなたでも見ることができます。
 
■動作の様子

24時間表示の場合 → 

← 12時間表示の場合

時刻設定時の様子 → 

 
 ■ 使ってみて
 どうにかPIC-BASICで実用になりそうなものができました。
最近C言語ばかり使っていたので、BASIC言語が大変使いにくく感じました。特に変数の関係は全部グローバルな変数ですので、常用するような変数には注意が必要です。
回路図中のLEDは必要ないのですが、上のプログラムではRAMに書き込みを行なっている時に点滅します。また、1秒ごとの点滅はRTC-8564NBモジュール上のLEDを光らせいてますので、ケースなどに組み込む場合は、INT端子にLEDをつけるようにすれば良いと思います。

 スピード的には、やはり書き込みに時間がかかりますので、時計(分単位)程度には良いと思いますが、秒単位の表示やスクロールさせるものには無理だと思います。
書き込みルーチンがわかっていればC言語でR8CやH8マイコンなどでの制御も簡単にできます。
スクロールさせる場合のプログラミング手法など、トランジスタ技術2004年5月号あたりが参考になると思います。
 
 まだ、ケースに実装していませんが、数日使ってみた感じとしてはかなり視認性がよく、電源は必要ですが、壁掛けなどには最適ではないでしょうか。
吉野電装さんにどれだけ在庫があるのかはわかりませんが、割安で購入できますので皆様も応用してみてください。
    
   
Last up date 2008/6/3

 

This page count Total:15611 / Today:3 / Yesterday:1  

 本業のページ