前言
16乘16点阵是比较常用的汉字显示工具,我们知道显示器都是由一个个点组成的,也可以理解成像素,显示器显示图案文字的原理与点阵并无多大区别,我们只需理解其中原理便可举一反三。因为英文字母及符号的显示最小单位为6乘8像素,就是说,要比较完整的显示英文字母,需要一个至少8行6列的矩形空间;而汉字则需要至少16乘16的空间才能比较完整的显示常用汉字。因此使用16乘16点阵驱动来滚动显示汉字是比较有学习价值的一个小课题。整个程序我都会附在最后,还是懒得复制粘贴,需要整个工程,仿真以及软件,16方点阵模型的就给我点赞赏吧。
先放一张最后的效果图:
首先,我们需要找到proteus中的16乘16点阵,应该会发现proteus中只有8乘8的点阵,没有16乘16的,16乘16的点阵需要自己制作,或者就下载别人的,我已经把16乘16点阵的protues模型文件一起打包在资料里中,可以直接下载添加。按照模型的添加说明,把模型添加即可:
然后,我们需要测试一下,这个16乘16点阵如何驱动。很简单,只需要一个VCC,一个GND,便可以测试。
首先我们需要测试出来这个16乘16点阵模型是左高右低亮灯还是,左低右高亮灯,测试如下:
可以看出这个点阵是左高右低亮灯,那么接下来我们需要测试出来,左边的这一列接口是控制列的还是控制行的,测试如下:
由图可知,左边选中哪一行高电平,那么右边哪一行的最后一个就会亮,那么就可以看出,左边的这一列接口的功能是选中行,而右边的这一列接口的功能是选中列,从图中可以推测出,右边最上面的接口控制的是最后一个灯,最下面的接口控制的是从左到右第一个灯,那么接下来验证推测:
测试结果确实是这样,那么就明确了proteus中的这个仿真元件的驱动方法:左边的一列接口是选中行,右边的一列接口时选中列,只不过右边的接口从上往下接口对应的是每一行的从右至左,这一点要注意。
那么之后就可以把点阵接到单片机接口来编程测试,电路如图:
电路上的标号,我按照点阵左右列的接口分别标注,左边的一列接口分别为L1-L16,右边的是R1-R16。那我们现在就测试编程,让第一行的最后一个亮,按照之前测试到的驱动方法,想要让第一行的最后一个亮,那也就是上图中的,L1给高,其余的L标号给低,右边R1给低,其余R标号给高,那么程序上就要给P2