搜索
查看: 895|回复: 2

[原创] 【螺蛳壳里做道场】用STM8S001J3做高精度时钟

[复制链接]

该用户从未签到

22

主题

1351

帖子

62

蝴蝶豆

论坛元老

最后登录
2021-9-26
发表于 2021-1-22 10:29:12 | 显示全部楼层 |阅读模式
还是用上一次的STM8S001J3OLED屏,
为了做更准确的时钟,增加DS3231模块。
参考:
DS3231功能十分强大,是高精度I2C实时时钟芯片(RTC),具有集成的温补晶振(TCXO)和晶体,误差可做到一年小于一分钟。
包含电池输入端,断开主电源时仍可保持精确的计时。
芯片内保存秒、分、时、星期、日期、月和年信息。少于31天的月份,将自动调整月末的日期,包括闰年的修正。时钟的工作格式可以是24小时或带/AM/PM指示的12小时格式。
可设置2个定时/日期闹钟,鉴于MCU容量有限,没设置闹钟功能。
芯片内还内置温度传感器。
20200605152739830.png
MCU引脚功能分配:
Pin1:向上按键
Pin2:GND
Pin4:VCC
Pin5:I2C_SDA
Pin6:I2C_CLK
Pin7:设置按键
Pin8:向上按键 和 SWIM(编程口)
操作:
1、长按设置按键可以进入和退出设置
2、进入设置后,当前设置位会闪动
3、从世纪开始设置也就是设置为20xx或19xx,然后年、月、日、时、分、秒
4、向上向下键可以调整数值,具有循环设置功能,也就是按向上到了最大值跳回最小值,按向下到了最小值跳回最大值。
5、退出设置后,更新星期和农历。

为了功能和显示效果,程序内置多种字体,固定数据占用了大量空间,对于8K的小单片机来说,非常吃紧。
为了减少占用空间,
1、大幅优化字体,
如:16*32数字字体,把数字两侧用来间隔0x00值删除,显示时直接跳空显示,把字体往下挪一行,字体变成14*24,大小不变,但占用空间大大减少。
最后,字体+农历基础数据共减少了300多字节,最后不足3KBytes。
2、使用上2545889167大侠的硬件I2C驱动代码
无标题.png
但最后还是没有加入12小时与24小时切换功能。
没带蜂鸣器,也没加入闹钟功能。如用STM8S103芯片,可以把部分数据放入EEPROM中,可以节约近1K空间,再优化程序可以考虑加入此功能。
还是那块面包板,那个OLED屏,那个单片机,换了按键板
微信图片_20210121163708.jpg
还加了DS3231模块,模块带EEPROM。我没把字体和数据加入,有兴趣的可以加入,或开发一个小小的电子时钟。
微信图片_20210121163959.jpg
最后显示效果,设置比较方便,特地设置成未来的时间。
微信图片_20210121163713.jpg

上源码
User.rar (28.98 KB, 下载次数: 8)
回复

使用道具 举报

该用户从未签到

0

主题

543

帖子

26

蝴蝶豆

金牌会员

最后登录
2022-6-4
发表于 2021-1-23 08:43:41 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

该用户从未签到

34

主题

867

帖子

90

蝴蝶豆

论坛元老

最后登录
2021-4-4
发表于 2021-1-24 22:34:28 | 显示全部楼层
刚好我也有这个时钟模块,谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-27 09:39 , Processed in 0.153436 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表