有限状态机在单片机编程中的应用

在单片机编程中,如果在不使用操作系统的情况下同时执行多个任务,可能会遇到下面这些情况:

  • 一个任务的执行时间过长,导致其他任务无法及时执行
  • 在一些任务中大量使用 delay() 等函数进行软件延时,这些延时函数占用过多时间,影响其他任务的执行
  • 一些复杂任务的程序逻辑不清晰,不便于以后对程序进行维护,或添加新功能

本文介绍的有限状态机,可以做到将一个耗时较长的复杂任务分解为多个简单任务,同时使代码逻辑更加清晰,从而解决上述问题。

目录:

继续阅读“有限状态机在单片机编程中的应用”

摇摇棒的更多玩法

这段时间,我们班、科协和院学生会都组织了摇摇棒制作活动。大概是因为摇摇棒是一项容易制作,而且比较好玩的电子 DIY.

由于摇摇棒里的单片机可以编程,所以,可以通过修改程序,使摇摇棒又更多功能。下面是我的一些想法:

自动调节亮度

加装光敏电阻,或直接通过 LED 获取周围环境亮度,并根据环境亮度自动调节摇摇棒的亮度。

将 LED 用做光线传感器的方法,《爱上单片机》上有简单的介绍。

继续阅读“摇摇棒的更多玩法”

[我的DIY]进度条时钟

这是我和我的同学胡春宇、王哲强正在一起做的一个电子小制作。不过,外形很不好看。

想法

上学期,在科协,学长给了我们一份他搜集到的 DIY 项目,供我们参考并制作。我发现里面的进度条时钟挺漂亮,就和另外两位同学商量,做出一个具有类似功能的时钟。

原先的时钟,是用电动机+蓝色薄膜片制成的。为了增加功能,我们决定用单片机控制。

起初的想法挺多,想到了用液柱,或者荧光管做进度条。可是液柱高低的控制,似乎有点复杂,同时也没有找到合适的荧光管,只好用效果不是很好的LED。

外观上,本想做得十分精简,从正面只能看到进度条,没有多余的按键,电路等全部隐藏在进度条下。这一点最后也因制作过程复杂而放弃。

功能上,我们想出了一大堆,保留下来的也没多少。

所以经过不断地简化,我们的进度条时钟准备做成这样:

  • 采用两块洞洞板,一块做控制板,一块用来显示时间。
  • 具有时钟、闹钟的功能,将来可能加上番茄钟
  • 通过串口设置时间。可配合蓝牙转 TTL 模块,用手机遥控。

继续阅读“[我的DIY]进度条时钟”

退出移动版