パーツ解説

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

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

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

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

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

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

 

 

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

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

CommunicationProtocol

CommunicationProtocol

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

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

複数バイト送信する場合を想定して1usの遅延(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

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

関連記事

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

前々回のジェスチャーセンサー、前回の近接センサーに引き続き、APDS-9960 の最後の機能である照度・RGBセンサーを使ってみました。 最初に言っておきますが、今回は動作確認程度のかなり適当な内容に …

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

今回は秋月電子で販売されているこちらのリアルタイムクロック(以下 RTC)の DS1307 について紹介します。 目次1 RTC とは2 DS1307 の特徴3 レジスタ4 プログラム RTC とは …

PICで128×64グラフィックLCDを使ってみる

今回は AliExpress で買った 128×64 のグラフィックLCD を使ってみました。使用した PIC は PIC16F18857 です。 400円ぐらいで安かったのはいいですが、デ …

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

今回は PIC で ロータリーエンコーダ を使ってみたので、使い方や制御するためのポイントを紹介します。   目次1 ロータリーエンコーダとは2 信号3 チャタリング4 実験5 あとがき ロ …

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

今回は以前から気になっていた秋月電子で販売されているこちらのジェスチャーセンサー APDS-9960 を使ってみました。ネットの情報も少なく、Arduinoのライブラリを使うだけしか書いてなかったりし …