PICを使った24時間時計の紹介です。
LEDをダイナミック点灯表示させます。
表示 LEDダイナミック表示 時刻調整 2ボタン方式(Mode, CountUp) 時刻精度 ±20ppm(水晶発振子の精度に依存) 電源 5V, 80mA
■PICは時計機能とLED表示
PICはタイマ割り込みを使ってLEDのダイナミック表示と同時に時計機能を行います。
ダイナミック表示とは人間の目の残像効果を利用したもので、 高速に表示を切り替えることであたかも4つの7セグメントLEDを同時に点灯しているように見せるものです。 概ね人間の目は50Hz以上の点滅を見分けることができなくなり、連続点灯しているように見えます。 蛍光灯の光も点滅(50Hz, あるいは60Hz)していますが、人間の目には連続点灯しているように見えます。 今回は64Hzで切り替えています。高速切り替えを行うため、輝度が下がりますので、LEDの電流を少し多めに流します。
LEDはこういった用途のためにパルス電流特性が規定されています。
PICには16F88を使用しました。
■水晶発振子
時計の基準クロックでもあり、PICのシステムクロックでもあります。32.768KHzを使用しました。
精度に影響します。
■ファームウェア
型番 数 Parts 備考 33p 2 C1,C2 セラミックコンデンサ 10u 2 C3,C4 電解コンデンサ,耐圧16V 150 8 R1,R2,R3,R4,R5,R6,R7,R8 カーボン抵抗1/4W 1K 4 R9,R10,R11,R12 カーボン抵抗1/4W 10K 2 R13,R14 カーボン抵抗1/4W 2SA1015 4 Q1,Q2,Q3,Q4 PNP汎用小型トランジスタ PIC16F88 1 U1 PIC、マイクロチップ 78L05 2 U2,U3 3端子レギュレータ 7LED 4 D1,D2,D3,D4 GL9A040G、アノードコモン、秋月 XTAL 1 X1 水晶発振子、シチズン時計、CFS-308, 32.768KHz、千石 SW 2 SW1,SW2 押しボタンスイッチ
回路は簡単ですが、7セグメントLED周りの配線が混雑しています。
基板例。
動作中の様子。
時刻調整は2つのボタンで行います。
時刻調整中の様子(分)。
Mode 調整する分、時を選択、選択されるとドットを表示。分->時->未選択 CountUp 選択された分あるいは時をカウントアップ。押すと同時に秒も0にリセット。
時刻調整中の様子(時)。
ソフトウェアはMPLAB MPASMで開発しました。 7セグメントLEDのダイナミック表示はちらつきも見られず良好です。
時刻精度も水晶発振子の精度で安定しているようです。
ボタン操作はソフトウェアによるチャタリング防止機能で概ね取り除かれました。
意外と苦労したのは、PICの動作クロックが32.768KHzと低いので、割り込み処理のプログラムです。
割り込み処理で実行できる命令数に限りがあり、これを超えてしまうと時刻カウントが間に合わず、 時刻が遅れてしまいます。
(2010-08-18)(C)2007-2010 All rights reserved by Y.Onodera.
OLIMEXへ他の回路と共に基板発注してみました。