8乘8led点阵显示数字

您所在的位置:网站首页 8×8led点阵屏滚动显示数字 8乘8led点阵显示数字

8乘8led点阵显示数字

2024-06-04 22:56| 来源: 网络整理| 查看: 265

      又到了每周一更时间,本期介绍第三种常用显示设备,LED点阵屏,如公交车上前后的路线显示屏,马路上的红绿灯,商铺的广告牌等等,可以说应用场合非常广泛。

6d273d202e1a197ad43b570245c9fbdd.png

       在这里,以8*8的点阵屏为例进行介绍,其它尺寸的屏幕,其实也可以通过多个8*8的点阵屏进行扩展,例如32*16,可以用8块8*8的点阵屏进行拼凑,只是需要增加驱动芯片而已。

       首先来看看8*8 LED点阵屏的内部原理图,如图1.17所示。LED点阵屏也有共阳,共阴的区别,准确来说,是行线共阴,还是共阳。

9c413fe459041454d5f22680ae2318c2.png

图1.17 LED点阵屏内部结构图示

     从内部结构图可以看出,8*8点阵屏里面就是64个LED,对于左边的图示,每一行的阴极连接在一起,每一列的阳极连接在一起。例如,现在需要左上角的第一颗LED点亮,则把第一行(9号脚)输入低电平,第一列(13号脚)输入高电平即可。同样,LED点阵屏可以通过单片机的I/O口直接驱动,也可以通过专用的芯片驱动。

① 直接使用I/O口驱动

图1.18就是直接使用I./O口驱动8*8 LED点阵的典型电路原理图。这样同样存在问题,一是LED阳极的驱动不足,直观的表现就是点阵屏点亮后亮度不够。另外一个问题就是单片机有灌入电流,具体原因及解决方法,读者可以参考之前的内容进行分析。当然,对于一般的应用,图1.18所示的接线方法已满足应用,所以常用于教学里,例如开发板,但实际应用在产品上,估计很少会用这样的设计方案。

1c437501a6ce2140c6d57c62eaf382f3.png

图1.18 I/O口驱动点阵屏原理图

②使用专用芯片驱动

直接使用I/O口驱动,占用较多的I/O口资源,特别是随着点阵屏的数量增加,所以一般的应用,会选择专用的驱动芯片,例如74HC595,MAX7219,在这里以MAX7219为例,介绍该如何设计电路。

在使用一个新的芯片时,一定要习惯查看芯片手册,可以不用每个部分都细读完,因为那样会太费时间了,但必须有个大概的概念,知道所选用的芯片是否符合设计的需求,例如最基本的供电电压,工作的环境温度,对电流的要求等等,有了大概的概念后,才正式着手电路的设计。因此先来看看MAX7219的说明。绝大部分的芯片手册,都会在最开始,写出芯片的功能及特性,MAX7219也不例外,因为手上的手册是英文版的,为了增加可读性,在度娘找到中文版的说明,但是文字显示效果可能比较差,先凑合看着,如果有条件可以查看英文原版手册。

c12ce30c77eec987b82379b80afb0622.png

从以上手册的开端,就可以看到MAX7219能驱动8位数码管或者64个独立的LED,带8*8的静态RAM,可以节省单片机的程序处理开销,而且其中一项应用就是LED矩阵显示,正符合驱动8*8点阵屏的需求。

另外,留意到,MAX7219是驱动共阴极,因此就根据引脚定义进行连接,把DIG0~DIG7接到阴极端,把SEGA~SEGDP接到阳极端,即对于以下左图的LED点阵,把DIG0~DIG7接到ROW1~ROW8上,把SEGA~SEGDP接到COL1端,而对于右图的LED点阵,则刚好是行列相反的接法。

9c413fe459041454d5f22680ae2318c2.png

最后,附上MAX7219驱动8*8 LED点阵屏的完整原理图,如图1.19所示。值得说明的是,对于与单片机的连接的控制口,习惯加上拉电阻,如图示中的R35,R34,R33,这样做的好处是能保证输出高电平时的电平准确,另外就是芯片的电源滤波问题,所以在很多芯片旁边会设置一个104(0.1uF)电容,即图中的C40,至于图中的R25的设置,是用于调整显示的亮度的,阻值不同,亮度不同,但最小是9.53k欧。至于具体如何编程的问题,将会在后续的内容进行说明。

bd651dc7304b033d7cdc9d689bab2fdf.png

图1.19 MAX7219驱动点阵屏原理图

补充说明:

在最后,还是补充说明一下LED点阵显示的驱动原理。还是先来回顾一下LED点阵的排布,如图1.20所示。

78b8a88355c2da1d1e915636e288bfac.png

图1.20LED点阵分配图示

从图中可以看到,LED点阵分成了行(ROW)跟列(COL)。假设LED点阵是行共阴,列共阳,按以下三种方式处理:

① 把行信号全部设为0,列信号全部设为1,则LED点阵就会全点亮;

②把行信号轮流设为0,且适当的延时,列信号依然保持全部为1,则LED点阵显示结果是每一行轮流显示;

③ 把行信号轮流设为0,且适当的延时,列信号只有第一列为1,其余全为0,则LED点阵显示结果是仅有第一列的点依次点亮;

好了,希望读者能把以上三种情况的概念理解清楚。接下来就结合实际例子,讲一下驱动的原理。以图1.21所示的显示心形图案为例,图中红色的部分就是需要点亮的点。

7f4e3f4953180ead7395730e96f96fc8.png

图1.21LED点阵显示心形图示

先来结合图形看一下点亮位置的特点:第一行:没有位置点亮;第二行:只有2/3/6/7四个位置点亮;第三行:所有列点亮;第四行:所有列点亮;第五行:2~7点亮;第六行:3~6点亮;第七行:4~5点亮;第八行:没有位置点亮;根据以上的LED点亮情况,不妨把这些内容做成变格,点亮的位置填入1,没有点亮的位置填入0,那么就可以得出表1.1的内容,我们称之为真值表。

表1.1LED点阵显示心形真值表

十六进制

1

0

0

0

0

0

0

0

0

0x00

2

0

1

1

0

0

1

1

0

0x66

3

1

1

1

1

1

1

1

1

0xFF

4

1

1

1

1

1

1

1

1

0xFF

5

0

1

1

1

1

1

1

0

0x7E

6

0

0

1

1

1

1

0

0

0x3C

7

0

0

0

1

1

0

0

0

0x18

8

0

0

0

0

0

0

0

0

0x00

      整理成表格后,是否更为直观了?其实表1.1中十六进制那一列,就是我们需要的数据,驱动的思路就清晰了。每一行轮流设置为0,然后把列信号填入对应的数值即可,在前面数码管的章节已经提到,只要刷新的速度足够快,由于人眼的视觉暂留效果,看起来就是同时显示的一样。当然,如果使用专用的驱动芯片,例如前面提到的MAX7219,自带静态RAM,那就不需要不断刷新,直接把数据传入的驱动芯片的RAM里面,显示的图形就自动保持了。

以上的例子涉及到一些编程的思路,在这里先有个概念即可,在后续编程章节,会以实际的例子进行编写,并演示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3