パーツ解説

PICで7セグドライバTM1630を使ってみた

投稿日:2020-08-21 更新日:

今回は秋月電子で販売されている 7 セグメント LED ドライバ TM1630 を使用してみました。

TM1630 1つで7セグ5桁または8セグ4桁をダイナミック点灯で制御することができます。※カソードコモンじゃないとダメなので注意

普通に PIC で7セグを制御することも可能ですが、ダイナミック点灯させるのは少々面倒な上にピンも多く必要となるのに対して、 TM1630 を使用すると表示データを送信すればよく、ピンも3つで済むのでとても手軽です。

ちなみに TM1630 にはキースキャン機能もあるみたいですが、そちらは使いません。というか何故2つの機能をまとめたのだろうか。

 

 

データシートが中国語なので読みづらいですが、 Google 翻訳の手を借りて読み進めていきました。

まずは通信方式を確認してみます。

CommunicationProtocol

CommunicationProtocol

SPI のようなシリアル通信ですね。データは送受信可能のようですが、今回は送信だけ使っていきます。

1バイトを送信する関数を作りました。

複数バイト送信する場合を想定して1 us の遅延( Twait )を入れていて、 STB は関数の外で個別に制御することにします。

 

続いて、データ形式を確認してみます。

DataRegister DataExample

ここで、よく分からない点がいくつかあるんですよね。

まず上の表の SEG1 ってなんだよ。ピンアサイン見てもどこにもないんだよ。→

あと上位ビットを右側に書くのは見づらいからやめてほしい。

そして下の表では SEG14 が B7 に来て SEG8 ~ SEG2 が B6 ~ B0 になってて上の表と違うじゃんか。 14 の意味する所も気になるがそれは置いといたとしてどっちが正しいのか。

 

結論から言うと、上の表を信用すればいいようです。

下の図の文中に、”0”を表示させる場合「 00H のアドレスユニットにデータ 3FH を書き込むだけでよいことを理解するのは難しくありません。」って書いてあるけど、難しいです。 0x3F じゃなくて1つずらして 0x7E を書き込まなくちゃいけませんでした。

…思わず愚痴だらけになってしまいましたがとりあえず動作するのでいいでしょう。

 

続いて初期化の流れを確認してみます。

なお、データの送信方式は固定アドレスモードとアドレス自動インクリメントモードの2つあるようですが、後者の場合の図です。

CommunicationProtocol

Command1 :表示モード設定
Command2 :データ設定コマンド
Command3 :表示アドレス設定
Command4 :表示制御コマンド

それぞれのコマンドの詳細はデータシートに書いてありますが、翻訳しなくてもなんとなく雰囲気で分かる所も多いので省略します。

後のサンプルプログラムと比較すれば容易に理解できるかと思います。

 

というわけで、動作確認してみました。

今回使用した PIC は PIC16F18857 です。7セグ LED はこちらの4桁のものを使用しました。

接続について、 K2 ピンはキースキャン用のピンなので未接続です。

また、データシートの接続図には LED の電流制限抵抗は描かれていませんでしたが、過去に何度か抵抗忘れで LED を破壊していて不安なので 100 Ω の抵抗を入れておきました。

追記:

輝度の設定を一番低くした状態ですが、電流制限抵抗なしでも壊れずに点灯しました。

通信用の3線にはプルアップ抵抗がついていますが、送信だけの場合なくても大丈夫でした。

 

100ms 毎にカウントアップするサンプルプログラムです。

7セグを簡単に制御できてなかなかいい感じです。

-パーツ解説

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【PIC】aitendo の 122×32 グラフィックLCDを使ってみた

今回は aitendo で 122×32 のグ&# …

PICでジェスチャーセンサーを使ってみる[APDS-9960]

今回は以前から気になって&#12 …

リアルタイムクロック DS1307 の使い方

今回は秋月電子で販売され&#12 …

ロータリーエンコーダの使い方

今回は PIC で ロータリーエ …

APDS-9960の近接センサーを使ってみる

前回 APDS-9960 のジェスチャー&#1 …