8乘8led点阵显示数字 |
您所在的位置:网站首页 › 8×8led点阵屏滚动显示数字 › 8乘8led点阵显示数字 |
又到了每周一更时间,本期介绍第三种常用显示设备,LED点阵屏,如公交车上前后的路线显示屏,马路上的红绿灯,商铺的广告牌等等,可以说应用场合非常广泛。 在这里,以8*8的点阵屏为例进行介绍,其它尺寸的屏幕,其实也可以通过多个8*8的点阵屏进行扩展,例如32*16,可以用8块8*8的点阵屏进行拼凑,只是需要增加驱动芯片而已。 首先来看看8*8 LED点阵屏的内部原理图,如图1.17所示。LED点阵屏也有共阳,共阴的区别,准确来说,是行线共阴,还是共阳。 图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所示的接线方法已满足应用,所以常用于教学里,例如开发板,但实际应用在产品上,估计很少会用这样的设计方案。图1.18 I/O口驱动点阵屏原理图 ②使用专用芯片驱动 直接使用I/O口驱动,占用较多的I/O口资源,特别是随着点阵屏的数量增加,所以一般的应用,会选择专用的驱动芯片,例如74HC595,MAX7219,在这里以MAX7219为例,介绍该如何设计电路。 在使用一个新的芯片时,一定要习惯查看芯片手册,可以不用每个部分都细读完,因为那样会太费时间了,但必须有个大概的概念,知道所选用的芯片是否符合设计的需求,例如最基本的供电电压,工作的环境温度,对电流的要求等等,有了大概的概念后,才正式着手电路的设计。因此先来看看MAX7219的说明。绝大部分的芯片手册,都会在最开始,写出芯片的功能及特性,MAX7219也不例外,因为手上的手册是英文版的,为了增加可读性,在度娘找到中文版的说明,但是文字显示效果可能比较差,先凑合看着,如果有条件可以查看英文原版手册。 从以上手册的开端,就可以看到MAX7219能驱动8位数码管或者64个独立的LED,带8*8的静态RAM,可以节省单片机的程序处理开销,而且其中一项应用就是LED矩阵显示,正符合驱动8*8点阵屏的需求。 另外,留意到,MAX7219是驱动共阴极,因此就根据引脚定义进行连接,把DIG0~DIG7接到阴极端,把SEGA~SEGDP接到阳极端,即对于以下左图的LED点阵,把DIG0~DIG7接到ROW1~ROW8上,把SEGA~SEGDP接到COL1端,而对于右图的LED点阵,则刚好是行列相反的接法。 最后,附上MAX7219驱动8*8 LED点阵屏的完整原理图,如图1.19所示。值得说明的是,对于与单片机的连接的控制口,习惯加上拉电阻,如图示中的R35,R34,R33,这样做的好处是能保证输出高电平时的电平准确,另外就是芯片的电源滤波问题,所以在很多芯片旁边会设置一个104(0.1uF)电容,即图中的C40,至于图中的R25的设置,是用于调整显示的亮度的,阻值不同,亮度不同,但最小是9.53k欧。至于具体如何编程的问题,将会在后续的内容进行说明。 图1.19 MAX7219驱动点阵屏原理图 补充说明: 在最后,还是补充说明一下LED点阵显示的驱动原理。还是先来回顾一下LED点阵的排布,如图1.20所示。 图1.20LED点阵分配图示 从图中可以看到,LED点阵分成了行(ROW)跟列(COL)。假设LED点阵是行共阴,列共阳,按以下三种方式处理: ① 把行信号全部设为0,列信号全部设为1,则LED点阵就会全点亮; ②把行信号轮流设为0,且适当的延时,列信号依然保持全部为1,则LED点阵显示结果是每一行轮流显示; ③ 把行信号轮流设为0,且适当的延时,列信号只有第一列为1,其余全为0,则LED点阵显示结果是仅有第一列的点依次点亮; 好了,希望读者能把以上三种情况的概念理解清楚。接下来就结合实际例子,讲一下驱动的原理。以图1.21所示的显示心形图案为例,图中红色的部分就是需要点亮的点。 图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 |