■ デジタル時計 時刻カウント部 ■


● ワンチップマイコン AVR で作るデジタル時計の製作 ●

 ワンチップマイコンと言えば、インテルの8048以来使用したことがありませんでしたが、数年前からPICやAVRなどの、ワンチップとは侮れないほどの機能と速度を備えたマイコンが、次々と登場しているので気にはなっていました。
 しかし、機材の組み込みにマイコンが必要な場合でも、相変わらず使い慣れた8085やZ-80を使い続けてきた、生きた化石のような人間なので、今回趣味の領域とはいえ一度試してみることにしました。
 PICとAVR、どちらにするかを検討した結果、アーキテクチャのスマートさと、高価な専用ライターが必要ないことから、まずはAVRで決定です。
       AVRの開発元 Atmel社のページ

 さっそくAVRを調達し、アセンブラでソフトウェアを書き始めたのですが、資料の少なさと参考になるライブラリがあまり見あたらないことで、ハードの調査と平行で進めて行くには、かなりの時間がかかりそうな様相を呈してきました。
 趣味の製作にあまり時間をかけても無駄になると思い、安易なBASICコンパイラに変更することにしてしまいました。
 
 使用したのは、BASCOM-AVRと言うコンパイラで、AVRのフラッシュROM容量で4KByte分までは無料で使用できると言うことで、これに決定です。
 
            BASCOM-AVRのダウンロード ページ  (Demo version)

   AVRへのプログラム書き込みは、パソコンのプリンターポートとAVRの一部のポートを使用した簡単な書き込み器の作り方を、ネットで何人かの方が紹介されていましたので参考にさせていただきました。  (STK200互換 タイプ)
 AVRを基板に直接ハンダ付けしたり、機器に組み込んだ後でも、ISP端子と言う6ピン(10ピン用もある)のコネクターを用意しておけば、いつでもプログラムの変更が可能という優れものです。

 色々癖のあるBASICでしたが、あまり特異な命令は使用せず、ダイナミック点灯の処理速度に注意を払い、8割ほど完成したところで、なんと無料の制限である4KByteを超えてしまいました。
 ここからは、プログラムのサブルーチン化と命令の見直しで、よけいな手間がかかりましたが、なんとか4KByte以内に収め、動作確認を含め3日ほどで完成しました。
 
 BASICなので、ダイナミック点灯のスキャンスピードは、700Hzほどが限界のようです。
   (AT90S8535-8 8MHz動作時)

回 路 図  GIF版 A935Ccir.gif (221KB)  PDF版 A935Ccir.pdf (125KB)
 
部品配置図  GIF版 A935Cpcb.gif (184KB)
   注意! この図面を使用した、いかなる損害にも責任を負いません。 

 * 2007.1.18 改正 (表示部回路 Revision 2 対応)
プログラム  テキスト形式 ソースファイル  A935C105.txt (23.5KB)
 BASCOM-AVR用 ソースファイル  A935C105.bas (23.5KB)
 インテルHEX形式 オブジェクトファイル  A935C105.HEX (11KB)
 
 注意! 著作権は放棄しておりませんので、販売目的での使用は絶対にしないで下さい。



側面

内部

基板  部品面

基板  ハンダ面
↑ 画像をクリックすると、拡大します。 ↑

操作方法

1.スキャンスピード
 

  ・ダイナミック点灯の走査周波数を、半固定抵抗器で6桁時35Hz〜650Hzまで可変出来ます。
  ・可変の必要がなければ、FIX端子を(L)レベルに落とすと200Hzに固定でき、半固定抵抗器を
   無くすことができます。(半固定抵抗器のポートは開放でかまいません)

2.デップスイッチ
 
  ・デップスイッチの設定により、下記のように動作します。
 HOLD  OFF = 通常のカウント ON = カウント停止
 12H / 24H SELECT  OFF = 24時間表示 ON = 12時間表示 (AM/PM有効) 
 DIGIT SELECT  OFF = 表示器6桁 ON = 表示器4桁
 READING ZERO SUPPRESS   「時」表示部の上位桁が0の場合、
 OFF = 0を表示しない ON = 0も表示する

3.時刻表示
 
  ・「Time Set A」と「Time Set B」ボタンを押すことにより、下記の表示切り替わります。
6桁モード時
通   常 時.分.秒 表示
Time Set A ボタン 月 日   表示
Time Set B ボタン 年    表示
4桁モード時
通   常 時.分 表示
Time Set A ボタン 月 日 表示
Time Set B ボタン 分.秒 表示

4.時刻設定
 
  ・「Time Set A」と「Time Set B」ボタンを同時に3秒以上押すと、時刻設定モードに入ります。
    (年は、西暦2000年から2099年までの範囲で対応しています)
  ・設定モードに入ると、下記の順に設定できる項目が点滅します。
     ( 年 → 月 → 日 → 時 → 分 → 終了 )
  ・「Time Set B」ボタンで、設定値が増加し、1秒以上押し続けると早送りになります。
  ・「Time Set A」ボタンを押すと、次の項目に移ります。
  ・分の設定が終わると、秒を0クリアして通常の時刻表示に戻りますので、秒の単位まで合わせる
   場合は、「HOLD」スイッチをONにした状態で時刻設定に入り、00秒で「HOLD」を解除します。

5.デシマル モード
 
  ・表示部に、ニキシー管等のセグメントタイプではない表示器を使用する場合は、0〜9の表示に
   対応する10本の信号が必要になるので、「Decimal Mode」端子を(L)レベルに落とすと、この
   モードになります。
  ・TTL 74141等の、BCD to Decimal Decoderを使用する場合は、このモードは必要ありません。

6.日差の微調整
 
  ・時刻の原振となる1Hzは、AVRの動作クロックを分周して得ていますので、水晶発振子に接続
   されているトリマーコンデンサを微調整することで、日差を修正できます。

7.プログラム バージョン
 
  ・「Time Set A」ボタンを押しながら、電源を入れるまたはリセットを行うと、現在のプログラム
   バージョンが4桁で表示されます。
  ・「Time Set A」ボタンを放すと、通常の時計表示がスタートします。


○パーツの参考資料
 ・基板  「秋月電子通商」 片面ガラスエポキシ・ユニバーサル基板 Bタイプ (95x72mm)
 ・アクリルケース  「無印良品」 アクリルポケットティシューケース



   電子工作の部屋 Top へ 前のページへ戻る