我们说了下点阵的显示方法和如何点亮LED灯, 我们发现,当需要点亮对角的LED灯时,就会出现不需要的LED也点亮的现象,为了解决这个现象,我们就需要用到之前数码管中谈到的动态刷新技术。
动态刷新就是基于人眼的视觉暂留效应来实现的,关于这个理论的知识,大家可以翻看之前的文章或者百度一下。不再详细展开了。
首先是看下留下的图像。
我们这次主要是解决对角的LED点亮,其他LED不亮的问题,这回已经不能使用开关了,需要使用单片机来实现快速的切换。首先是搭建一个电路图。我用了一个8*8点阵,两个开关,一个单片机。
端口使用了P0作为列扫描,P2作为行扫描。这里简单说一下行列扫描的内容,之前我们进行数码管的动态扫描时,只需要8个管脚依次激活即可,在点阵中,8个LED只是一行或者一列,如果我们要显示一个点阵图像,就需要扫描8行或者8列,每一行或每一列的LED点亮情况是不一样的,这就需要我们在扫描一行或一列时,还需要扫描这一行或一列中的每一个数码管。
例如我要显示有一个下图的图形。
分解开就是下方的扫描过程。
每激活以行,就输出一次该行的8个小灯的亮灭数据,依次激活8行,循环往复,这个过程,就是扫描,从图形上可以看出,每次显示的是一行,所以这个是行扫描。
列扫描与此类似,就是每次激活一列,显示每行的数据。
电路的模拟电路运行图像如下。
设计了三个开关,一个是打开图案扫描,一个是待机画面,一个是清屏。这个按键的设计,在之前的一些实践中已经用得比较多了,还是很常规的方法,加入开关,对于程序的运行可以更好的把握,同时有助于自己判断程序具体运行到了哪里,如果出现异常,可以通过切换开关来判断故障的大致范围。
同样的实际的使用中,开关肯定是必不可少的一个硬件。
我们来看下程序如何来实现这个扫描的过程。
转载请注明地址:http://www.abmjc.com/zcmbwh/1801.html