找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 567|回复: 5
打印 上一主题 下一主题
收起左侧

stc8h1k08单片机,ws2812b和0.96oled做的时钟有问

[复制链接]
跳转到指定楼层
楼主
ID:593938 发表于 2025-3-7 14:30 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用单片机做了个时钟,OLED显示时间日期,周边一圈60个ws2812b灯珠同步显示时分秒正常,但是想让屏幕显示时间,ws2812显示流水灯就出问题了,我目前用的定时器定时一秒读取时间显示,但是这样的话流水灯就被打断了,不用定时器的话流水灯显示的时候时钟不能走秒,想问下有没有更好的解决办法

IMG_20250306_225850.jpg (513.16 KB, 下载次数: 0)

IMG_20250306_225850.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2025-3-9 13:49 | 只看该作者
顶一下
回复

使用道具 举报

板凳
ID:1145127 发表于 2025-3-9 21:02 | 只看该作者
用FreeRTOS吧,多线程跑这两个任务
回复

使用道具 举报

地板
ID:36322 发表于 2025-3-9 22:25 | 只看该作者
你的程序里读取时间并在OLED上显示和ws2812显示流水灯时肯定使用了大量的延时,这些延时是打断其他程序的根本原因。要想实现不同功能的流畅切换,要更换程序框架。比如使用状态机的机理,将各个功能进行时间切片,不用死等的延时,这样才可以。
回复

使用道具 举报

5#
ID:69038 发表于 2025-3-9 23:05 | 只看该作者
流程问题。
2812在写入数据不容打断!
你的2812也是显示时钟的吗?
那你可以定时读RTC,对比秒数据,秒不同才更新2812和OLED,
更新2812时,把所有中断关闭就可以了。
2812和OLED都有锁存的,没必要时时更新数据,只有在需要时再更新。
如果你的2812不是显示秒,而是不停在在转,理论上可能要开硬件驱动,比如SPI+DMA,
这样你2812发送数据交给DMA去处理,MCU只要给DMA喂新数据就可以了。
===以上仅供参考,没有相关的实验支持===
回复

使用道具 举报

6#
ID:446156 发表于 2025-3-10 10:08 | 只看该作者
zxcscm 发表于 2025-3-9 22:25
你的程序里读取时间并在OLED上显示和ws2812显示流水灯时肯定使用了大量的延时,这些延时是打断其他程序的根 ...

给你点赞,借楼给楼主说一声如果有兴趣的话可以看看我发的帖子,试试我的方案
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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