デジタル時計のキットが動かないので直す

2025.07.19


0. はじめに

はんだ付けの練習のキットとして販売されているデジタル時計を組み立てたが動かない!という人向けの情報です。基板も回路も、もちろんはんだ付けも全く問題ないのにうんともすんとも動かないという事で、原因を調査しました。

※先に説明しておくとこの問題を解決するには生のマイコンの読み書きができる必要があります。そこら辺についてはさっぱりだよという方々は分かりそうな人を捕まえてお願いしてみましょう。

1. 仕様

今回調査した商品はこれです。

https://amzn.asia/d/gmWzYNj

まず手元に届いた基板は写真と見た目が異なります。中華の商品あるあるですね。

基板の端にSH-E878と書いてあります。使用されているマイコンは同じでAT89C2051です。

基板の写真はこちらです。今回使用するのはマイコンが基板の左側に寄っているものです。

https://lh3.google.com/u/0/d/1Zzd56_h5C78gQl7aHiR6Vo3ga-tjN_Ao

2. 原因

動かない原因を色々と調査した結果、どう考えてもマイコンに問題がありそうということになりました。この場合考えられる原因としては下記の二つが挙げられるかと思います。

  • マイコンがうまく動作していない
  • マイコンにプログラムが正しく書き込まれていない

一つ目に関してはAT89C2051のデータシートと今回の回路を見比べてみても問題がなさそうに思えましたし、何よりアマゾンのレビューでは同じ基板で動作しているというものも見られたので、こちらの可能性は薄いのではないかと考えました。

一応AT89C2051のデータシートはこれ👇

https://www.microchip.com/en-us/product/at89c2051

二つ目に関してもおおよそあり得ないことかと思っていましたが、こちらのキットなどをネットで調査していくとこのような動画を見つけました。

要約するとAT89C2051が使用されているデジタル時計のキットを購入したら動作せず、原因を探ると、マイコンにコンパイルされた機械語ではなく、ファームウェアのソースが直接書き込まれていたというものです。

こうなると、自分が調査している今回のキットも同じように正しく書き込みがされていない可能性が出てきました。

という事で、自分のキットのAT89C2051のROMを読み込んでみることにしました。

今回の読み書きにはxgecu t48というライターを使用しています。

そしてこれが読み込んだ結果です。(画面直撮りですみません)

image.png

冒頭から#include<REG2051.H>なんちゃらかんちゃらってもう明らかにCっぽいのが書かれちゃってますね。原因はこれです。

3. 解決策

という事で、今回これを解決するにはROMを読み書きする手段が必要となります。はんだ付けの練習をしようとこのキットを買う方々は、そんなものを持っている可能性はかなり低いと思うので、あきらめるか詳しそうな周りの人にお願いするしかありません。何としてでもこれを解決して時計を解決させたいんだという意気込みのある方は是非ここから下も読んでみてください。マイコンとかコンパイルとかそこら辺が全く分からない状態からこの問題を解決できるまで頑張ったらかなり勉強になることは間違いないです。

まずこの2.で書き込まれていたソースをコンパイルしてから書き込みなおしたらいいじゃんと思ったのですが、ROMのサイズ的に全体が入っているわけもなく、途中で終わってしまっていました。

なのでここからの策としては2つあります。

  1. 自分でソースを書く
  2. ちゃんと動くマイコンを入手してコンパイル済みのアプリを読みだして、コピーする

最初、手持ちのキットは2個しかなく1の方法をとり一旦時計にはなりました。その後、たまたまロット違いのちゃんと動くマイコンを手に入れることもできたので2の方法も取ることができました。

下記、それぞれの方法についてです。

3.1. 自分でソースを書く

一から自分でソースを書けなくもないですが、今回はとりあえず時計の状態にしたいという目標があったのでネット上に使えるソースがないか探しました。すると似た基板の時計でオリジナルのソースを書いたという人を見つけました。

https://ceptimus.co.uk/index.php/2024/01/22/3-button-at89c2051-clock-kits/

こちらは時計の最低限の機能を残し、LEDの明るさを調節できるように製作されたようです。

今回自分の持っている基板とでは、主にマイコンとLEDを繋ぐ配線が違うようなので、こちらのピンに関するところを書き直してみました。

下記変換のヒントです。見た目にわかりやすくExcelで行ってみました。

image.png

今回こちらのソースのコンパイルにはSDCCを使用しました。

https://sdcc.sourceforge.net/

そしてコンパイルしたものを先ほどのライターを使用して書き込むと、ちゃんと時計として機能してそうです。やはり原因はマイコンにあったということですね。

1000005214.jpg

3.2. 読みだしてコピーする

今回はたまたまちゃんとコンパイルされているアプリケーションが書き込まれているものを手に入れることができたので、それをコピーして書き込むのを試してみました。

こちらもちゃんと成功し、このキットに添付されている説明書通りの挙動をする時計を製作することもできました。

こちらのコンパイル済みhexファイルもこちらに置いておきます。

https://drive.google.com/file/d/1rSw6ThQfF80Yyf0RZGidSvmmoh9Wx5L_/view?usp=sharing

4. おまけ

本題とは関係ないのですが、アクリルの板を曲げて基板の台みたいなものを作りました。

image.png

基板の穴位置がまちまちなのでこれが正しいとは言えないと思いますが、一応こちらのデータも置いておきます。

https://drive.google.com/file/d/1JzsrfxIaJ88sgtf1akWK-qChWdUvcHQn/view?usp=sharing

ちなみに、この写真だと電池boxが後ろからはみ出してしまっていますが、この後給電はUSBでできるように改造したのですっきりしています。

5. 最後に

この情報が役に立っていると嬉しいです。何かお気づきの点などございましたら、ご連絡ください。

また、こちらの情報の使用に伴って発生した問題などについては一切の責任を負うことが出来かねますのでよろしくお願いいたします。


↓シェアしてね↓