| ホーム |     私の電子工作作品集

104. ドットマトリクス 5 x 7 2色 LED 表示時計

[ 初公開日:2013年11月18日 ]

 先に作製した "097. ドットマトリクス 8 x 8 LED 表示時計" の 表示器を、5 x 7 2色(赤と緑)ドットマトリクス LED に変更した、ディジタル時計です。

 この 5 x 7 2色 ドットマトリクス LED は、Yahoo! オークションで入手したもので、メーカー、型名等は不明です。 また、CPUを PIC16F876 から ローコストな PIC16F873A に変更し、クロックには前作同様、京セラの KTXO-18S(12.8MHz)を使用していますので、安定した動作が望めます。

 時計表示は24時間表示ですが、12/24時間の両表示に対応し、午前中は緑色、午後になると赤色で表示します。 機能的には前作をすべて 引き継ぎますので、他に年月日の表示と気温の表示機能も持っています。 また、モード選択によって、毎時の時報を鳴らすことも可能となっています。


  • 12/24時間の両表示に対応 ( 2014/08/28 更新 )

    時計機能の時間表示が今まで24時間表示専用でしたが、今回 12H / 24H SELECT スイッチを設けて、いつでも12/24時間の両表示に対応できるように、プログラムのバージョンアップをしました。 詳細は 機能概要と使用法 および プログラムファイル を参照してください。

  • カレンダーデータのバックアップ機能を追加 ( 2014/09/04 更新 )

    ここで言うカレンダーデータのバックアップとは、電源にバックアップ用電池や大容量の電気二重層コンデンサ等を設けるというものではなく、ソフトウエア的にそのデータのバックアップを行うことを 意味します。

    この時計をこれまで使用してきて、以前から気になっていることがありました。 それは電源を入れてから数日後、数十日後、あるいは数か月後に、何らかの都合(設置場所を変更したとか)で、 再び電源を入れ直さなければならないような場合に、当然なんですが "年、月、日、時、分、秒" のカレンダーデータが、PIC にプログラムを書き込んだときの初期値に戻ってしまう ――― と言うことです。

    これは期間が経てば経つほど、SETスイッチ等で大幅に現在の "年、月、日、時、分、秒" のデータに設定し直す必要が生じます。(プログラムの作者である私の場合には、特にデバッグ中には この作業が頻繁に起こります。)

    そこで、この手間を少しではありますが軽減するために行なったバージョンアップです。 詳細はやはり 機能概要と使用法 および プログラムファイル を参照してください。

  • うるう年計算のプログラムバグを修正 ( 2014/10/15 更新 )

    前バージョン( Ver. 2.20 )までにはバグがありました。 このデジタル時計には年月日表示の機能があるのですが、その時のうるう年の計算に誤りがありました。

    そのため、平年とうるう年での2月の最終日の表示がでたらめで、平年なのに 29日表示をしたり、逆にうるう年なのに 28日で終わってしまったりで、まともな動作をしていなかったのを修正しました。 詳細は、ソースファイル中の month_days サブルーチンを参照してください。

  • 12時間表示時の am / pm 表示の不具合とその他を修正 ( 2019/4/16 更新 )

    12時間表示時の am / pm LED表示に一部誤りがありました。 私の認識違いからその LED表示が妥当ではありませんでした。 詳細は、別ページ "014. 7セグメントLED表示時計" の "12時間表示の扱いについて" の項を参照願います。

    またバグではありませんが、従来までは、12/24時間の両表示とも先頭の1桁目(左端)を、ゼロサプレス表示を行っていましたが、今回からは、ゼロサプレス表示は12時間表示時のみで 24時間表示時には行わないように修正をしました。 私作の他のデジタル時計との統一性と、12/24時間表示の区別の視認性を高めることを目的とします。

■ 回路図 ■


(注). PIC16F873A の I/O ポートの RA4 ピンは、オープンドレイン出力のため プルアップ抵抗が必要。

今回の製作では、コロン(またはピリオド)用の LED について、Φ2で赤/緑色の2色の LED が入手できませんでした。 したがって赤色の単色 LED を 使用していますが、回路的には 74HC138 の出力(図中の左上の真理値表を参照)に余裕がありますので、将来、2色の LED が入手できれば その使用が可能です。

また電源部分について、当初、手持ちの多い 12VのスイッチングACアダプタを使用し、それを5Vの三端子レギュレータで降圧するつもりでした。 その後都合があって、直接5VのスイッチングACアダプタで供給することに変更をしました。 しかし既に プリント基板(2) 上には、三端子レギュレータと周辺回路を組み込んでしまった後です。

これらをプリント基板(2)から撤去するとなると、基板が相当痛み損傷を起こす可能性があります。 そこで上図のように、コンデンサ類は残したままで 三端子レギュレータだけを引き抜き、後をジャンパ線で置き換えることにしました。

参考 次に、あまり参考にはならない? おバカな設計を紹介しておきます。 作者の気休めに 記録 したものです。
また、74HC154 の入手が困難な現在、別ページ "097. ドットマトリクス 8 x 8 LED 表示時計" の "回路の見直し" で その対応策を紹介しているので、そちらも参考にしてみてください。

| 回路図 (Matrix57LED_Clock3.CE3) | ページトップ |

■ ケース外観と内部の様子 ■

ケース正面の斜め上から見たところ ケース背面の斜め上から見たところ
ケース左側面の斜め上から見たところ ケース右側面の斜め上から見たところ
蓋をあけてケース内部を見たところ
蓋をあけて内部をケース真上から見たところ 蓋をあけて右側面の斜め上から見たところ ケース裏面を真上から見たところ

( 2014/08/28 追加更新 ) ( 2014/09/04 追加更新 )
機能追加した 12H / 24H SELECT スイッチの取り付けの様子 プログラムの機能追加を機に4個のコネクタを取り替えた現在の様子

| ページトップ |

■ 機能概要と使用法 ■

  • 本機の電源を投入すると、"ピポッ" と開始ブザー音を出力後、ドットマトリクス LED のデモ表示が数秒間行われ、続いて プログラムのバージョン番号が LED に約3秒間表示される。

    		バージョン番号		Ver. x.xx
          
  • 次に、0.5秒間ずつ0から9まで、かつ赤/緑色の数字を順次更新しながら、ドットマトリクス LED の0〜9表示テストを計10秒間行う。 その後、1秒間の空白を置いた後 時計機能が開始され、時間表示が行われる。

  • 時計表示は12/24時間の両表示機能を持ち、12H / 24H SELECT スイッチによりいつでも切り替えることができる。 また、他に年月日の表示と気温の表示の機能を持っている。

  • 時計機能の24時間表示では、午前中( 0:00:00 〜 11:59:59 )*1 は LED を緑色で表示し、午後( 12:00:00 〜 23:59:59 )*2 になると 赤色で表示する。 また、年月日の表示と気温の表示ではその逆で、午前中は LED を赤色で表示し、午後になると 緑色で表示する。 ただし、コロン(またはピリオド)の表示については、2Φの2色 LED が入手できず赤色の単色 LED を使用のため、午前午後を通して常に赤色表示のみである。

    *1, *2 12時間表示では、下記対応のようにそれぞれ 午前( 1:00:00 am 〜 12:59:59 am )、午後( 1:00:00 pm 〜 12:59:59 pm ) として扱っている。
    午前( 12:00:00 am 〜 11:59:59 am )、午後( 12:00:00 pm 〜 11:59:59 pm )
    							       (午前)  (午後)
    		時間表示		xx:xx:xx	緑色	赤色
    		年月日表示		xx.xx.xx	赤色	緑色
    		気温表示		   xx.x℃	赤色	緑色
          
    表示例    
    時間表示 (午前11:04:27) 時間表示 (午後23:52:06)
       
    年月日表示 (2013.11.18) 気温表示 (20.1℃)

  • 12時間表示の場合には、上記のような緑色/赤色表示の他に、左列の :(コロン)の上側 LEDで AM を、また下側 LEDで PM を、 1秒間隔で点滅を繰り返すことで、それぞれを表現している。
    					  ┌─ AM
    					  ↓
    		12時間表示		xx:xx:xx
    					  ↑
    					  └─ PM
          
  • ただし、次に示す24時間表示と12時間表示の対応のように、24時間表示では 00 時台を午前、12 時台を午後としているのに対して、 12時間表示ではそれぞれに対応した時間を逆の午後、午前として扱っている (これで正しいのか?)。 したがって、両者では LEDの 緑色/赤色表示、および AM/PM を表す点滅位置が異なってくる。 なお、どちらの場合でも先頭の1桁目(左端)は、ゼロサプレスを 行なって表示をする。

    次に、12時間表示と24時間表示の対応を示す。 なお、12時間表示の場合だけ 先頭の1桁目(左端)は、ゼロサプレスを行なって表示をする。
    		(24H)   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ┐
    		(12H)  12  1  2  3  4  5  6  7  8  9 10 11 12  1  2  3  4  5  6  7  8  9 10 11  │(←修正前)
    		       pm am am am am am am am am am am am am pm pm pm pm pm pm pm pm pm pm pm ┘
    
    		(24H)  00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ┐
    		(12H)  12  1  2  3  4  5  6  7  8  9 10 11 12  1  2  3  4  5  6  7  8  9 10 11  │(←修正後)
    		       am am am am am am am am am am am am pm pm pm pm pm pm pm pm pm pm pm pm ┘
    		       ↑                                  ↑
    
          ( 2019/4/16 修正 )

          上記において、修正前では2つの↑位置の am / pm の表示が誤っていました。 作者の認識違いで、両位置のそれぞれが逆表示であったのを修正しました。
          詳細は、別ページ "014. 7セグメントLED表示時計" の "12時間表示の扱いについて" の項を参照してください。

          またバグではありませんが、従来、12/24時間の両表示ともに先頭の1桁目(左端)は、ゼロサプレス表示を行ってたのを、12時間表示時だけに改め
          24時間表示時には行わないように修正をしました。 作者の他デジタル時計との統一性と、12/24時間表示の区別の視認性を高めることを目的とします。


  • また、上記の時間、年月日、気温の3つの表示は MODE スイッチを押下することで自由に切り替わり、そのスイッチの押下ごとに、 時間表示、年月日表示、気温表示、オートモードに加えて、時報付の時間表示の順に5つのモードを繰り返す。
    		┌→ 時間表示 → 年月日表示 → 気温表示 → オートモード → 時間表示(時報付) ─┐
    		│                                      │
    		└──────────────────────────────────────┘
          
  • この時、MODE スイッチを何度も続けて押していると、現在のモードが何なのか分かり辛くなる時があるため、 ドットマトリクス LED の1桁目(最左端桁)でその時のモードを表示する。 (特に時間表示、オートモード、 時間表示(時報付) の3つのモードでは、ともに時間が表示されるので 区別が付けにくい)

  • すなわち、MODE スイッチを押した直後に、1桁目の横1列の5個の LED が次のように数秒間だけ表示される。 その後 1桁目の LED は通常の表示に戻る。
    (例ではオートモードを表す。 ●は点灯、○は消灯)
    		(例)	○○○○○
    			○○○○○
    			○○○○○ ← 時間表示(時報付)
    			●●●●● ← オートモード
    			○○○○○ ← 気温表示
    			○○○○○ ← 年月日表示
    			○○○○○ ← 時間表示
          
  • オートモードでは、時間表示中に以下の振る舞いを行う。
          		毎05〜09秒と35〜39秒の間:	年月日表示
          		毎20〜24秒と50〜54秒の間:	気温表示
    
    		 (___: 時間表示、NNN: 年月日表示、KKK: 気温表示)
    
    		00        10        20        30        40        50        00
    		.    .    .    .    .    .    .    .    .    .    .    .    .
    		_____NNNNN__________KKKKK__________NNNNN__________KKKKK_____
          
  • 年月日、時分の設定変更は、上記5つのどのモード時でも可能で、PICにプログラムを書き込んだ直後の電源の投入時には、 14年09月01日、0時00分00秒(12時間表示の場合は PM 12時00分00秒) 14年09月01日、00時00分00秒(12時間表示の場合は AM 12時00分00秒)からスタートするので、 SET または BACK スイッチと、UP または DOWN スイッチによって適宜変更を行う。



  • このように、SET スイッチ等で年月日の設定変更を行うと、その値のバックアップがとられて次回(同一日であれば)に電源の投入をし直した時には、 その設定値で年月日、時分、および 00秒からスタートする。 また、年月日の設定変更を行なった場合ばかりでなく、 毎日日付が自動更新された時点でも、やはり同様に年月日、時分のバックアップがとられるため、次回に電源の投入をし直した時には、 そのバックアップ値で年月日、時分、および 00秒からスタートする。

  • SET スイッチは、押下するごとに年、月、日、時、分と次項目に移動するので、該当の項目を選択後 UP または DOWN スイッチによって値を設定する。 最後の分設定後にもう一度 SET スイッチを押下すると、 00秒から時計動作がスタートし、必ず時報なしの時間表示モードに戻る。

  • この SET スイッチによって項目を選択中に、誤って希望する項目を通り過ぎてしまったような場合に、BACK スイッチを 押下することによって、ひとつ前の項目に戻ることができる。 MODE / BACK スイッチは、年月日、時分の設定中には このような機能を有する。
    		               BACK   BACK   BACK   BACK
    		               ←─   ←─   ←─   ←─
    		           SET    SET    SET    SET    SET    SET
    		5つのどれかのモード ─→ 年 ─→ 月 ─→ 日 ─→ 時 ─→ 分 ─→ 時報なしの時間表示モード
    		             │               ↑
    		           BACK└───────────────┘
          
  • また、この時も選択された項目が分かり易いように、次のように表示される。
    	   (xx 選択項目、 __ 消灯桁)
    
    		xx.__.__	年が選択
    		__.xx.__	月が選択
    		__.__.xx	日が選択
    		xx:__:__	時が選択
    		__:xx:__	分が選択
          
    表示例      
    年が選択 月が選択 日が選択
       
    時が選択 分が選択

  • SET スイッチによって項目の時/分を選択中で12時間表示の場合、緑色/赤色表示の他に、左列の :(コロン)の 上側 LED点灯 + 下側 LED消灯で AM を、上側 LED消灯 + 下側 LED点灯で PM を、それぞれ表現している。 なお、 この場合の先頭の1桁目(左端)のゼロサプレスは、12/24時間表示のどちらの場合にも行なわない。

  • ZERO/DOWN スイッチは、年月日、時分の設定中は上記のように DOWN スイッチとして機能するが、それ以外では毎正時 プラス・マイナス5分以内に押されると 00分00秒に設定するための ZERO スイッチとして機能する。

  • 年月日カレンダー機能について、うるう年の計算は 2001年〜2399年までの範囲で対応している。 ただし、年の表示は 下2桁のみになる。

  • その他の機能として、周囲の明るさに応じてドットマトリクス LED の表示を減光するディマー機能を持ち、周囲が明るい ときはドットマトリクス LED の表示も明るく、周囲が暗くなると暗く表示される。

| ページトップ |

■ プログラム ■

現在の最新バージョン: Ver. 2.40  ( 2019/4/16 更新 )



Ver に見えますか? 5x7では少々無理があるかも…

| ページトップ |

■ プリント基板(1)パターン図 (部品面) ■

| プリント基板(1)パターン図 (部品面) (Matrix57LED_Clock3PC.CE3) | ページトップ |

■ プリント基板(1)パターン図 (ハンダ面) ■

| プリント基板(1)パターン図 (ハンダ面) (Matrix57LED_Clock3PC1.CE3) | ページトップ |

■ プリント基板(2)パターン図 (部品面) ■

上図の右下部分は、仕様変更のため 三端子レギュレータを引き抜いてジャンパーしたもの。

| プリント基板(2)パターン図 (部品面) (Matrix57LED_Clock4PC.CE3) | ページトップ |

■ プリント基板(2)パターン図 (ハンダ面) ■

| プリント基板(2)パターン図 (ハンダ面) (Matrix57LED_Clock4PC1.CE3) | ページトップ |

■ ドットマトリクス LED について ■

今回の製作で使用した 5 x 7 赤緑2色 ドットマトリクス LED は、Yahoo! オークションで入手したもので、メーカー、型名等は不明で 分かりません。 ただ、外観的には左下の写真のようなもので、大きさが 12.5 x 17.5 mm の 2.54 ピッチ足となっています。 また、足ピンは 17本出ておりその接続は、 私が調べたところ、右下の図のように配置されていました。



Top View


Bottom View

| ページトップ |

■ ケース加工図 ■

 使用したケースは、100均で購入した "はがきケース (L-8821)" ポリプロピレンケースです。

| ケース加工図 (Matrix57LED_ClockCS.CE3) |

上面から見たところ 右側面を見たところ 裏面から見たところ

| ページトップ |

■ 使用部品表 ■

(主要部品: IC, トランジスタ等)

(データシート)
PICマイコン .................... PIC16F873A
HC-MOS IC (3-8 デコーダー) .................... HD74HC138P
HC-MOS IC (4-16 デコーダー) .................... TC74HC154AP
オペアンプ .................... LMC662CN
高精度IC温度センサ .................... LM35DZ
トランジスタ .................... 2SA1015

| 部品表 | Excel ファイル (Matrix57LED_Clock_parts.xls) | ページトップ |

■ 参考サイト ■

ドットマトリクス 8 x 8 LED 表示時計 .......... http://xyama.sakura.ne.jp/hp/MatrixLED_Clock.html
汎用温度計ユニット .......... http://www.picfun.com/equipj38.html
『ウィキペディア(Wikipedia)』 時報  .......... http://ja.wikipedia.org/wiki/%E6%99%82%E5%A0%B1

| ページトップ | ホーム |


Copyright (C) 2007-2023 やまもとみのる
初版:2007年7月27日、初公開:2013年11月18日、最終更新:2023年11月3日