LCDクロック(その2)
はじめに
最新技術を使って作り直しました。具体的にはMPLAB と HI-TECH C(PIC16用)でプログラムを記述し直しました。
C言語を利用することで、開発期間の短縮が図れます。
24時間時計に日付機能を追加しました。閏年も正しく処理します。
仕様
消費電流 | 1.5mA |
電源 | 3V(CR-2032) |
電池寿命 | 200mAH/1.5mA=133hour |
表示方式 | LCD直読方式、hh:mm:ssYY/MM/DD |
長期使用の場合には、もっと低電力のLCDモジュールを利用する必要があります。
回路図
- 消費電力の大半はLCDモジュールです。PIC自身の消費電流は18uAです。
- LCDモジュールを3V電源で使用するとコントラスト不足になるため、コッククロフト回路によるマイナス電源を供給します。
- 「モード」と「+」による2ボタンで時刻あわせをします。
部品表
値 | 数 | 備考 |
PIC16F88 | 1 | IC1 マイクロチップ |
S-10551D | 1 | LCD1 16x1行表示 |
10K | 1 | R1 カーボン皮膜抵抗1/4W |
10uF | 1 | C1 縦型電解コンデンサ(耐圧16V) |
33pF | 2 | C4, C5 セラミックコンデンサ |
0.1uF | 1 | C2 積層セラミックコンデンサ |
0.01uF | 1 | C3 積層セラミックコンデンサ |
1S4 | 2 | D1, D2 ショットキー・バリア・ダイオード |
32.768KHz | 1 | XTAL1 CF-308, シチズン |
SW | 2 | タクト・スイッチ |
CR2032 | 1 | CR2032電池とホルダ |
ソフトウェア
- 低消費電流を目指し、PICの動作クロックを内蔵発振の31.25KHzとしています。
- コントラスト用のクロックはOSC2出力(31.25KHz/4)を利用します。
- PICを31.25KHzという低い周波数で動作させているため、LCD表示に時間がかかります。一度に16桁を表示させると1秒以内に処理が終わりません。
- そこでLCD表示は必要最低限な部分のみを書き換える方式としました。
- プログラムサイズが急激に増えるためsprintfの使用も避けました。
- タイマ1割り込みを使い、32.768KHzを分周して1秒を生成します。
- ピン割り込みを使い、ボタン入力を検出します。
- 時刻合わせは「モード」ボタンを押すごとに「秒」->「分」->「時」->「日」->「月」->「年」->「終了」を設定できるようになります。
- 設定できる項目はカーソルが表示されます。「+」ボタンで時刻を合わせます。
- 圧電ブザーを追加し、アラーム機能を追加してみると面白いでしょう。
時刻設定の様子
(C)2010 All rights reserved by Einstein.