6桁スタティック表示クロック...page.1/1
概要
マイクロコントローラー:PIC16F877(A)に時計のプログラムを施して、その後は貴方のアイデアでデジタル回路を組んで時計として完成させるものです。
応用でアラーム回路や時報回路を組めますので、デジタル回路の学習に活用してみて下さい。
目に優しいスタティック表示ですから、明るく大きな7セグメントLEDを使えば、店舗や工場で活用できる時計に仕上げることができます。
PIC16F877(A)のプログラム
BCD出力の6桁デジタルクロックです。これを解凍して下さい。
「時」、「分」、「秒」のレジスタがあり、「時」は24でクリア、「分」と「秒」は60でクリアされる単純なものです。
これらレジスタは2進-BCD変換しポートに出力させています。
「停電発生表示」、「1Hz出力」、「12/24時間表示」、「ゼロサプレス」、「AM/PM出力」がプログラムを少し複雑にしてしまっています。
発振源は12.8000MHzで、KTXOのモジュールを用いることで高精度な時計を実現できます。
停電時の表示について...
停電によるバックアップ回路を設けていないので、停電があったことを示す停電表示は必須でしょう。
7セグメントLEDドライバー:74HC4511(又は汎用C-MOS:CD4511)のBCD入力が1111の時にブランク(全消灯)となるので、1001「8を表示」と1111「全消灯」をフラッシングするようにしました。
全消灯のタイミング時はAMランプ、PMランプ、1Hz出力(コロン)を全点灯させました。
その様子はイラストの通りです(パーツレイアウトはご自由に...)。
これは表示類のランプテストを兼ねようとした私の考えによるもので、電源容量が弱い場合はオール8表示は大きな負担となりますから必要に応じてTEIDENルーチンを変更してビルドして下さい。
プログラム後のピン配置
前記のプログラムをPIC16F877(A)に施しますと下図の通りのI/Oとなります。
端子名 | I/O | 説明 |
リセット | 入力 | PIC16F877(A)のリセット端子で、4.7KΩ〜47KΩを介してVddに接続します。 |
「時」調整 | 入力 | Lレベルで「時」が進みます。連続したLレベルは自動に「時」が進みます。 「時」調整中の「秒」はクリアされることなく刻み続けます。 プッシュスイッチやタクトスイッチが便利です。 4.7KΩ〜47KΩでプルアップして下さい。 「停電表示」のときに押下すると「停電表示」が解除され、0時(am12時)から時計を刻みます。 |
「分」調整 | 入力 | Lレベルで「分」が進みます。連続したLレベルは自動に「分」が進みます。 「分」調整中の「秒」はクリアされることなく刻み続けます。 プッシュスイッチやタクトスイッチが便利です。 4.7KΩ〜47KΩでプルアップして下さい。 「停電表示」のときに押下すると「停電表示」が解除され、0時(am12時)から時計を刻みます。 |
「秒」00セット | 入力 | Lレベルで「秒」が00になり、Hレベルにすると0秒から時計を刻みます。 「秒」をクリアしても「時」、「分」は変化しません(繰上げなどしない)。 プッシュスイッチやタクトスイッチが便利です。 4.7KΩ〜47KΩでプルアップして下さい。 「停電表示」のときに押下すると「停電表示」が解除され、0時(am12時)から時計を刻みます。 |
12/24時間切替 | 入力 | Lレベルで12時間表示になります。 トグルスイッチやスライドスイッチが便利です。 4.7KΩ〜47KΩでプルアップして下さい。 |
6桁目ゼロサプレス | 出力 | 12/24時間表示に関わらず、6桁目が「0」のときだけLレベルになります。 これは7セグメントLEDドライバー:74HC4511(CD4511)のBL端子のH/Lレベルに合わせました。 |
AMランプ出力 | 出力 | 12時間表示で午前のときHレベルを出力します。24時間表示は常にLレベルです。 |
PMランプ出力 | 出力 | 12時間表示で午後のときHレベルを出力します。24時間表示は常にLレベルです。 |
1Hz出力 | 出力 | コロンの表示に利用します。 |
12.800MHz入力 | 入力 | 12.8000MHz発振モジュールなどと接続して下さい。 単品のクリスタル(12.800MHz)の場合はOSC1/OSC2の2端子を利用して下さい。 |
Vdd | 電源 | +5Vを与えます。 |
Vss | 電源 | 0V |
BCD出力(A〜D) | 出力 | 7セグメントドライバーへ接続します。6回路必要です。 |
基本接続回路
応用回路(1)
カソードコモンの7セグメントLEDドライバー:74HC4511(又は汎用C-MOS:CD4511)を用いた回路です。
A〜Gへのセグメント電流は約7mA以下に抑えておきましょう。
電源電圧は5Vですから大きな7セグメントLEDは使えません。
応用回路(2)
応用回路(1)にトランジスタアレイ:TD62003AP(又はuPA2003C)を介し、大電流・高耐圧として1セグメントに数個のLEDを使った大きな7セグメントLEDを使う場合に適した回路です。
この場合はアノードコモンの7セグメントLED表示器を使うことになります。
TD62003APは約50Vまで扱えますから1セグメント当たり4個のブルーLEDを使った、PARA LIGHT:A-2301UB(Vf=約14V)を余裕で駆動できます。
後述した製作例は当回路としています。
また、単品のLEDを線状に並べた7セグメントの大きな時計も作れます。
応用回路(3)
アラーム機能を設けた応用回路です。
PIC16F877(A)から出力されるBCD出力を必要な数だけEx-ORゲートを用意してNORゲートやANDゲートを通すことで実現できます。
ロータリDIPスイッチやサミールスイッチを使えば使い勝手がいいでしょう。
「時」だけで構わない場合は2桁分の8ビット並列一致回路だけで済み、また何時何十分というように「分」の1の位を無視して構わない場合は3桁分の12ビット並列一致回路で済みます。
ただし、12/24時間表示切替は困難となりましょう。12時間表示時はAM/PMランプ出力も考慮して下さい。
下図は4ビット並列一致回路の一例です。
応用回路(4)
時報機能を設けた応用回路です。
4桁目の「分」の10の位は0〜5の表示しかなく、5から0になった時が時報の合図です。
即ち、4桁目のBCD出力:ビット2(PIC16F877(A)の25ピン)がHレベルからLレベルに変化したタイミングでブザー回路等を駆動することで実現できます。
微分回路や積分回路を応用して、立下りエッジだけ検出する回路を介すと便利でしょう。
下図はその一例で、それぞれ微分回路、積分回路を応用したものです。
PIC16F877(A)から出力されるBCD信号だけでなく、7セグメントLEDドライバーの出力からタイミングを取る方法もあります。
下図により、4桁目(「分」の10の位)のGセグメントが消灯するエッジで時報信号が得られます。
また、Cセグメントが点灯するエッジで毎時30分毎の信号が得られます。
キーデバイス
74HC4511 カソードコモン7セグメントLEDドライバー。 CD4511 同上。 74LS47 アノードコモン7セグメントLEDドライバー。手持ちがなく未確認のため敬遠。BI/RBOがワイヤードOR。 A-2301UB PARA LIGHTの大型ブルー7セグメントLED。私が今回利用したパーツです。6桁(6個分)はさすがに高価です。 TD62003AP 7回路入りトランジスタアレイ。抵抗内蔵のタイプでダーリントン回路。 μPA2003C 同上。TD62003APより若干高耐圧になっている。
製作例
先述の応用回路(2)により、1セグメント当たり4個のブルーLEDを使ったPARA LIGHT:A-2301UBで作ってみました。
電源はDCアダプター:24Vとし、各セグメントへのブリーダー抵抗を1.5KΩで約7mAで点灯させています。
写真では判りにくいですが横幅は40cmもあります。消費電力は極僅かですがとっても明るいです。
ジャグラーのGOGOランプを意識して、1Hzで点滅するコロンにはピンクLEDを使いました。
かなり高価なパーツ・材質を使いましたが、手作りでしか出来ない大きなものを作るのも楽しいと思います。
シャーシは5mm厚のアルミです。多少、重たくしませんと表示部の重みで転倒しやすくなるためです。
基板上に散りばめたLEDは飾りです。
回路基板にはスモーク、表示基板にはスカイブルーのアクリル板をホコリよけとして使いました。
各スイッチは表示部に配置しました。
横幅40mmの大きい時計で、とても明るいです。
ブルー7セグメントLEDと、コロンに使ったピンクLEDのコントラストが綺麗でしょ?
こんなに明るいのに消費電力は平均5Wといったところです。