无延迟刷新技术#

对于周期性的更新,例如控制LED的亮灭时,一般容易想到使用 delay() 。但 delay() 是阻塞的,会白白浪费CPU的时间,影响其它程序的运行。本文介绍几种更高效的方法。

备注

Here is a note!

解决方法#

  1. 无延迟刷新,见 builtin example: blink without delay

  2. 周期执行的调度程序,见 micropython 的相关讨论与笔记

应用案例#

7 段数码管的无延迟刷新。

7 段数码管一般采用复用的方案驱动,直接用引脚驱动时,这就单片机不停地周期地刷新显式,这比较消耗单片机CPU的时间。此时可以考虑降低刷新的频率,只有达到了一定的间隔,如 20ms, 才刷新一次。

更好的方法是采用移位保持寄存器或其它专用的 LED 驱动芯片。