配色:                          文字サイズ: 

4桁デジタル時計キット(DIY 4Digit Led Electronic Clock Kit)

以前にAmazonでDIYのデジタル時計(購入時1,050円)を買ったのだが、
時間->日付->曜日->温度 と一定の間隔で自動で切り替わり、
見た瞬間に時間が表示されてない場合多く、不便に感じていたので時間だけ表示するように書き換えを行った記録です。

まずは、下記からソースコードをダウンロードします。
https://github.com/zerog2k/stc_diyclock

main.cに以下の記述あるので、

enum display_mode {
    M_NORMAL,
    M_SET_HOUR_12_24,
    M_SEC_DISP,
    M_TEMP_DISP,
#ifndef WITHOUT_DATE
    M_DATE_DISP,
#endif
    M_WEEKDAY_DISP,
#ifndef WITHOUT_ALARM
    M_ALARM,
#endif
#ifdef DEBUG
    M_DEBUG,
    M_DEBUG2,
    M_DEBUG3,
#endif

その直前に
#define WITHOUT_DATE
#define WITHOUT_ALARM
を追加して、日付とアラームの機能を除外するように指定します。

次はコンパイラの準備です。
コンパイラはsdcc(Small Device C Compiler)です。
Windows Subsystem for Linux版のUbuntuにインストールしました。
インストール時のメモがないので定かでないですが、下記のコマンドだけで簡単にインストールできると思います。

sudo apt install sdcc

Makefileのある場所まで移動して、
make
コマンドを実行します。これでコンパイルは完了です。

次のファイルの転送の準備をします。
転送には、USB-TTLシリアルコンソールのUSB変換COMケーブルを使います。

Amazonのコメントありますように、
Windows10ドライバーは、秋月電子などから「PL2303_Prolific_DriverInstaller_v1.5.0.zip」
入れないと動きませんので、ご注意を。

次にケーブルを、こちらのように接続します。

P1 header COMケーブル
P3.1 RXD
P3.0 TXD
GND GND
5V 5V

電源は別から取るので、RXDとTXDだけ接続です。
電源はこの時点では接続しません。

転送用のソフトウェア(stc-isp6.86 (1).rar)を下記よりダウンロードします。
http://www.stcmicro.com/rjxz.html

ちなみにこのソフト、VirusTotalでウィルスが検出されます。

念のため virtual machine (VM)上で実行することをお勧めします。

stc-isp-15xx-v6.86E.exeを実行します。
起動時、文字化けしたメッセージボックスが表示されますが、OKを押して進めます。

1.MCU Type:STC15W404AS
2. COM Port : シリアルコンソールのポート
3. [Open Code File]で、先ほどコンパイルしたmain.hexを選択します。
4. [Download/Program]ボタンをクリックします。
5. デジタル時計に電源を接続します
起動と同時に転送が始まり、すべて完了です。

時間があれば、他の部分も書き換えて遊んでみます。