找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 928 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-3-7 14:30

正文摘要:

用单片机做了个时钟,OLED显示时间日期,周边一圈60个ws2812b灯珠同步显示时分秒正常,但是想让屏幕显示时间,ws2812显示流水灯就出问题了,我目前用的定时器定时一秒读取时间显示,但是这样的话流水灯就被打断了, ...

回复

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

给你点赞,借楼给楼主说一声如果有兴趣的话可以看看我发的帖子,试试我的方案
ID:69038 发表于 2025-3-9 23:05
流程问题。
2812在写入数据不容打断!
你的2812也是显示时钟的吗?
那你可以定时读RTC,对比秒数据,秒不同才更新2812和OLED,
更新2812时,把所有中断关闭就可以了。
2812和OLED都有锁存的,没必要时时更新数据,只有在需要时再更新。
如果你的2812不是显示秒,而是不停在在转,理论上可能要开硬件驱动,比如SPI+DMA,
这样你2812发送数据交给DMA去处理,MCU只要给DMA喂新数据就可以了。
===以上仅供参考,没有相关的实验支持===
ID:36322 发表于 2025-3-9 22:25
你的程序里读取时间并在OLED上显示和ws2812显示流水灯时肯定使用了大量的延时,这些延时是打断其他程序的根本原因。要想实现不同功能的流畅切换,要更换程序框架。比如使用状态机的机理,将各个功能进行时间切片,不用死等的延时,这样才可以。
ID:1145127 发表于 2025-3-9 21:02
用FreeRTOS吧,多线程跑这两个任务
ID:301191 发表于 2025-3-9 13:49
顶一下

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

Powered by 单片机教程网

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