为了让大家更深入地了解底层的原理,在讲解时特意选择了51单片机(而非STM系列),另外16*16点阵由译码器和移位缓存器直接驱动(而非MAX系列芯片),摇杆也利用ADC功能判断方向。
那如何让单片机驱动这256个点呢?直接用IO口驱动显然不够且十分浪费。为了解决这个问题,我们要引入动态扫描的方法,它利用了人类的视觉暂留现象:如果让点阵的每一行分别轮流显示,当扫描速度足够高时,我们并不会看到一行一行地闪动,而是一幅完整的图像。
在驱动这个16*16点阵时,单片机会首先选中一行,然后将16位的数据输出以显示一行,在做短时间的停顿后接着再选择下一行输出,如此往复对这16行进行高速扫描就可以在点阵上看到要显示的图像。
先来讲解一下16*16点阵的原理。为了方便大家理解,我们先来看一下8*8点阵的电路图。它实际上由64个LED组成,每行共阴,每列共阳,当某行输出信号为低电平时,整一行LED阴极均为低电平,当在列上分别输入不同的电平信号时,交叉点的LED就会有不同的亮灭情况,以此不断循环扫描,就可以显示完整的图像。