视觉暂留效应是指人眼在看一个物体的时候,如果物体在很短的时间内发生了变化,然后又恢复原状,人眼是无法分辨的。这个时间有多短呢?0.1-0.4秒。间隔越短,人眼就越分辨不出来。如果把这个间隔时间记为周期T,那么可以得出频率为1/T=2.5HZ,也就是说在0.4秒的时候,人眼就会出现视觉暂留现象,我们就会发现重影。
频率这么快,人眼怎么可能察觉不到这些变化呢?很早以前就有人做过相关实验,得出的结论是24帧/秒不会有明显的闪烁,不过当然因人而异。24帧/秒的话,每帧就是0.0417秒,如果是连续的动作,比如人跑步,那么就需要更高的刷新率。一般来说,研究发现,只要在100HZ以上,人就基本感觉不到闪烁,会觉得一切都很流畅。100HZ每帧的时间为0.01秒。也就是说,如果我们把闪烁频率控制在100Hz,两个物体就会同时出现在同一个画面中,不会有任何违和感。
然后我们就用这个理论来测试一下我们的小灯,看看如何让两个小灯同时亮起来。
首先我们修改一下程序,需要加一个延时,还是用之前的延时,不要问为什么不用中断定时,因为对于初学者来说,还有很长的路要走,如果直接用的话,很容易弄得手忙脚乱,造成学习困难。延时很好理解,先从简单的开始,我们的延时是0.7秒,也就是2.67ms,100Hz需要10ms,所以我们可以延时3倍。
我们需要先点亮左上角的小灯,也就是1001,再点亮右下角的小灯,也就是0110。
我们先来修改一下代码。
让我们通过模拟来看一下这一点。
仍然有明显的闪烁,尽管您可以看到灯同时亮起,但闪烁非常强烈。
我们将其下载到实际电路中尝试一下。
可以看到实际电路表现良好,两个小灯同时亮起。至于为什么模拟中的情况和实际情况不一样,或许这也是为什么我们不能盲目相信模拟的结果,模拟只是一种手段而已。
接下来我们开始讲输入信号。相信通过这篇文章,大家基本上可以很好的控制单片机的输出口了。有了这个基础,接下来的输入控制只是对之前学过的内容做了些许改动,但大体内容还是一样。在讲输入之前,我先讲一下如何自己动手焊接一个最小系统,以及如何从一块废弃的电路板上拆下自己喜欢的元器件。
好了,暂时就这么多,大家有什么问题或者建议可以留言或者私信我,我们一起学习。
没办法,我又测试了好几个组件,发现好像都没办法通过延时函数的刷新来实现同时显示,难道是我的软件有问题?
经过一番“研究”,发现仿真软件并不是支持所有的东西,对一些代码的控制也很神奇。所以以后遇到仿真异常,最好下载到单片机上实际调试一下,不要完全相信仿真,否则会一败涂地。