- 编程语言: C
- 平台: PIC微控制器8位
- 问题数: 2
我使用 4 位 7 段显示器来显示数字。我有一些函数可以在 7 段上显示一些字母/数字,例如:
zero() // displays 0 on the 7-segment.
one() // displays 1 on the 7-segment.
two() // displays 2 on the 7-segment.
...
现在我有一个数字(比如 1435)要显示在 7 段显示器上。我目前的算法如下:
从数字 1435 中提取单个数字(将数字分隔为 1、4、3、5)。sds
- 1 将显示到 7 段的 digit1。
- 4 将显示到 7 段的 digit2。
- 3 将显示到 7 段的 digit3。
- 5 将显示到 7 段的 digit4。
为了显示这些单独的数字,我使用了 '10' if-else 条件,如下所示:
- 如果要显示的数字 == 0 -> 运行函数 zero(); 别的
- 如果要显示的数字 == 1 -> 运行函数 one(); 别的
- 如果要显示的数字 == 2 -> 运行函数 two();
- ...
- ...
- ...
因此,要打印的这个实现(对于数字 1435)会运行几个 if-else 检查。
- 2 检查显示数字 1
- 5 检查显示数字 4
- 4 检查显示数字 3
- 6 检查显示数字 5
- 即使数量没有改变,也会在 loop() 函数中“定期且不必要地”运行 17 次检查(这是问题编号 1)。
问题 2:此实现效率低下,因为当我需要增加/减少该数字(1435 到 1436 然后到 1437 等等)时,if-else 检查的数量也发生了变化,因此数字的变化并不平滑。这意味着 '0' 是 if-else 检查中的第一个,因此它显示得很快。另一方面,'9' 是 if-else 检查中的最后一个,因此它必须经过十次检查才能显示出来。当要显示的数字从 0 增长到 9 时,这使得实现变得更慢。如何实现来解决这两个问题?
提前致谢。