littlebot
Published on 2025-04-12 / 3 Visits
0

【源码】基于SDCC和STC微控制器的DIY LED时钟系统

项目简介

本项目是针对基于STC15F微控制器的DIY时钟套件的固件替换方案。该套件可从Banggood、AliExpress等平台购买。使用SDCC进行代码构建,通过stcgal或STC - ISP工具将固件烧录到STC15F204EA和STC15W408AS系列微控制器中。

项目的主要特性和功能

基础功能

  • 支持时间显示与设置,有12/24小时模式可选。
  • 支持日期显示与设置,MM/YY和YY/MM显示可切换。
  • 能显示星期、年份和秒数,可重置秒数。
  • 显示屏具备自动调光功能。
  • 温度显示支持摄氏度或华氏度,可自定义偏移调整。
  • 具备闹钟和贪睡功能,有整点报时。

实验性支持

gps分支支持与输出串行NMEA数据的GPS接收器进行时间同步,目前仅适用于STC15W408AS或STC15W404AS,功能尚不完善。

待实现功能

计划支持与WWVB无线电接收器模块进行时间同步(针对STC15W408AS)。

安装使用步骤

前提条件

  • 操作系统:Linux或Mac(Windows未测试,但理论上可行)。
  • 安装SDCC并添加到系统路径(建议版本 >= 3.5.0)。
  • 安装stcgal(可通过git clone --recursive ...复制项目时获取,或使用git submodule update --init --recursive命令获取)。

硬件连接

将DIY LED时钟套件通过廉价的USB - UART适配器(如CP2102、CH340G)连接到PC,连接方式如下: | P1头 | UART适配器 | | ---- | ---- | | P3.1 | RXD | | P3.0 | TXD | | GND | GND | | 5V | 5V |

构建与烧录

PlatformIO方式(推荐)

  • 确保已安装PlatformIO。
  • platformio.ini文件中取消注释相应的env_default以选择要构建的微控制器。
  • 根据需要调整platformio.ini中的upload_port

传统Make方式

bash make clean make make flash

Make选项

  • 覆盖默认串口:STCGALPORT=/dev/ttyUSB0 make flash
  • 添加其他选项:STCGALOPTS="-l 9600 -b 9600" make flash
  • 烧录STC15W408AS:STCGALPROT="stc15" make flash

预编译二进制文件

可使用官方的STC - ISP工具(如stc - isp - 15xx - v6.85I.exe)进行烧录。该工具为Windows应用程序,在Mac和Linux系统上可通过Wine运行。如需生成eeprom.hex文件,可运行make eeprom命令。

时钟假设

对于STC15F204EA,部分代码假设内部RC系统时钟为11.0592 MHz(可通过stc - isp或stcgal设置)。若时钟频率不同,可能需要调整延迟例程。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】