7 セグメント LED 表示器のダイナミック点灯も、いろいろやっているうちにそれなりに使えるようになっているわけですが、いちいち回路作ったりスケッチ作ったり、まぁ面倒なわけで。
それにダイナミック点灯のためにプログラムを止めることができないのは、いろいろきつい。
だからね、きっと世の中にはダイナミック点灯をやってくれる IC があるはずだよなぁと思っていたら、ありました。ありました。
「7 セグメント用 LED ドライバー IC TM1630」秋月電子通商
こいつはいい、これはきっと使えるに違いない。
ってんでデータシートを開いてみたら、中国語 (;´Д`)
使ってみた人いないかなとググってみると、いくつかありましたけど、うーん、まぁなんとなくわかるけど、制御方法がなんだか難しそう。
でもさ、シフトレジスタのようにシリアルデータを放り込んでやれば、なにか結果が出るはず。いろいろ参考にさせていただきながら、自力でやってみようじゃ、ありませんかっ。
データシートを読んでみよう
何はともあれ、データシートを読んでみましょう。
中国語だろうが何だろうが、俺には Google 翻訳という強い味方がついています。
管脚定义
ピン定義です。
TM1630 は、DIO 、CLK 、STB の 3 つの信号を入力することで、SEG – GRID 間につながれた LED を点灯制御することができます。いわゆるマトリクスになっているわけですね。
マトリクスは、7 SEG x 5 GRID または 8 SEG x 4 GRID 。つまり小数点を使わないなら 5 桁、小数点も使うなら 4 桁までの制御ができる。
ということは、ドットマトリクス LED も制御できるわけか。あ、8×16 マトリクスドライバなんてものもあるじゃん。そうなのか、やっぱりいろいろあるんだ (^_^;)
管脚功能定义
各ピンの機能です。
DIO はデータの入出力。クロックの立ち上がりでシリアルデータを LSB で読み込みます。
キー読み取りの場合は読み取りデータを出力します。N チャネルオープンドレインなのでプルアップ抵抗 10KΩ が必要とのこと。
STB はチップセレクトで、これを LOW にすると制御データを読み込みます。たぶん、SPI のスレーブセレクトと同じ感じですね。
CLK はクロック入力です。
K2 はキースキャンの共通入力です。操作用ボタンとして利用できそうです。
SEG2~SEG8 はセグメント出力で、P チャネルオープンドレインとのこと。つまり電流が流れ出すということなので、LED のアノード側につなぎます。最大電流は 50mA です。
また、キースキャン入力としても使います。
GRID1~GRID4 がデジット側の制御を行ないます。N チャネルオープンドレインで、電流が流れ込みますから、LED のカソード (コモン) 側につなぎます。最大電流は 200mA となっています。
REG14 / GRID5 は、表示モードが 7×5 か 8×4 かで機能が変わります。何故に 14 ?
显示寄存器地址和显示模式
表示レジスタです。
該当するアドレスのビットを立てると、それに応じた SEG から GRID へ電流が流れ、LED が点灯するって仕組みです。
あぁ、SEG14 は 14 番目のビットってことか。ひとつの GRID に対して 2byte のデータを与えるわけですね。
が、この部分、このあとの 6 ページの記述と相違があります。
上の図 (2) と下の記述とでは、ビットに対応する SEG の番号が食い違っています。図 (2) の SEG1 という物理ピンは存在しません。
6 ページの記述では、B0 ビットが SEG2 で、B7 ビットは SEG14 となっています。
「0」を表示させるには、GRID1 が LOW のときに、アドレス 00H を 3FH にしろと書かれています。つまり 0b00111111 ということで、下の表と合致します。
キースキャンについても同様に記述に相違があるようなのですが、まぁこのへんは動かしてみればわかるでしょう。いま悩むことではないです。
显示模式设置
表示モードの設定です。4 桁 x 8 セグメントか 5 桁 x 7 セグメントかを選択します。
B6 、B7 ビットがコマンドの種別で、下位ビットが内容になっています。
4 桁 x 8 セグメントの場合は、0b00000000 です。
数据设置
データ設定です。
B0 、B1 ビットはデータの書き込みモードか読み取りモードかの選択です。
B2 ビットは表示レジスタアドレスの指定を、自動インクリメントするか固定にするかの選択。
B3 ビットは通常モードとテストモードの切り替え。テストモードってなんでしょ?
データ書き込み、固定アドレス、通常モードならば、0b01000100 となります。
地址命令设设置
表示レジスタのアドレス指定です。
このアドレスに続けてデータを送ることで、REG の状態がセットされます。0AH 以上のアドレスは無視され、電源投入時は 00H が設定されます。
例えば、アドレス 02H を指定するときは 0b11000010 です。
コマンドを送るときは、まず STB を LOW にしてコマンドを送信、その後 STB を HIGH に戻しますが、アドレス設定では、STB を LOW にしてアドレスコマンドを送り、続けてデータを送信してから STB を HIGH にします。
自動アドレスインクリメントモードの場合は、先頭アドレスに続けてすべてのアドレスのデータを順次送信してから、STB を HIGH にします。
显示控制
データを送ったら表示制御で表示をラッチします。
B3 で表示をオンオフします。
B2~B0 は表示パルスの幅。PWM 制御で LED の明るさを調整するってことでしょうか。
最も明るく表示する場合は 0b10001111 です。
应用时串行数据的传输
シリアルデータ送信のシーケンスです。
(1) 自動アドレスインクリメントモード
自動アドレスインクリメントモードでは、アドレス設定は先頭アドレスになります。STB を LOW にして先頭アドレスを送信後、最大 14byte のデータを連続して送信し、その後 STB を HIGH にします。
Command1 : 表示モード設定
Command2 : データ設定
Command3 : 表示先頭アドレス設定
Data1~n : 表示先頭アドレスから最大 14byte のデータ
Command5 : 表示制御設定
(2) 固定アドレスモード
固定アドレスモードの場合、STB を LOW にしてからデータを送信するアドレスを設定し、続けてそのデータ 1byte を送信後、STB を HIGH にします。
Command1 : 表示モード設定
Command2 : データ設定
Command3 : 表示アドレス 1 設定
Data1 : 表示アドレス 1 に対するデータ
Command4 : 表示アドレス 2 設定
Data2 : 表示アドレス 2 に対するデータ
Command5 : 表示制御設定
应用电路
応用回路図です。
基本的にこれをこのまま利用することにします。ってゆーか、これ以外に、ないです (^_^;)
ただし、気になる点はいくつかありますので、改修はします。
7 セグメント LED は 4 桁で、小数点も含めて 8 セグメントとしますので、SEG14 / GRID5 は、セグメント h に接続です。
キースキャンは LED 表示がうまくいったら、ですね。
Arduino からシリアルデータを送りますが、SPI はセンサーで使えるように空けておきましょう。
以下のピンを使うことにします。
- DIO – D5
- CLK – D6
- STB – D7
パラメータ
ポイントだけ。
最大定格は、電源電圧 +7V 。SEG 電流 -50mA 、GRID 電流 200mA です。
電源電圧 5V のとき、HIGH 入力は 3.5V 以上、LOW 入力は 1.5V 以下。
電気特性の表がありますが、ちょっと意味がわからない。
Vo は出力電圧なんだろうけど、Vo = Vdd – 2V とか Vo = Vdd – 3V とかは何?
わからないことは、とりあえず無視、です。
次は動作を試してみます
データシートを一通り読んでみましたので、次はデータシートの記述の食い違う点とか、気になる点とか、動作を試して確認しようと思います。
たぶんそうこうしているうちに、回路もスケッチもできちゃうんでしょうけど。