若想更详细了解可以先跳转到:
基于 51 的点阵屏显示 8*8 点阵仿真实验:
基于 51 的点阵屏显示 8*8 点阵仿真实验-CSDN博客
对一个模块进行了解
16*16 点阵的显示原理
虽然完成了上面 8*8 点阵的显示,但是由于点的数量太少以至于它的显示效果并不是很理想,事实上现在大部分点阵的汉字都是16*16显示的,下面让我们来学习16*16点阵的显示。和上面一样我们先选择元件 :AT89C52 ,74LS138, ,MATRIX-8*8-GREEN ,因为要显示16*16的汉字,我们就不能再使用一个38译码器进行行选了,这里我们用两个38译码器组合成一个4 选 16的译码器(当然也可以使用 74159)。而MATRIX-8*8-GREEN 点阵需要4个。完成后如下图:
先来看看 4 选 16 的译码器是如何工作的,这里有 4 个输入端a、b、c、d,16 个输出端 HO~H15,如上图连线后即可完成类似于38译码器一样的工作。只不过扩展到了16 行选。关于连线的原理这里不再赘述,只要明白38译码器的原理这个可以轻松理解。接着完成全部布线。如下图所示:
连好线后,P1作为行选,P2、P3一起作为列选。现在16*16的点阵被分成两块并不完整的部分,我们可以整体移动(包括点阵屏、连线以及连接点,)来方便我们观察显示的效果(最好同时去掉仿真中电平的指示灯)。接着我们来看一个程序,还是让此点阵屏显示一个汉字:“明。”先看效果图:
源代码如下:
#include<reg52.h>
char code table[]={0x00,0x20,0x20,0x7F,0x7E,0x21,0x22,0x21,
0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21,
0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21,
0x80,0x20,0x80,0x20,0x40,0x28,0x20,0x10}; // 明
void delay(int z)
{
int x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void main()
{
int num;
while(1)
{
for(num=0;num<16;num&