LED滚动显示板
本文介绍了设计滚动消息LED显示屏所涉及的步骤。在文章中解释了显示器的以下功能。
- 框架字母数字字符和特殊字符
- 复用矩阵
- 串行模式的数据分布使用移位寄存器
- 静态文本显示
- 滚动文本显示
- 模式选择静态和滚动
- 增加和减少实时滚动的速度
本文主要介绍在LED板上显示静态文本。要显示的文本和字符是预先编程的。同样的项目也经过了修改,可以使用蓝牙功能远程编辑将要显示的文本和字符。点击下面的链接了解更多。
参考:基于蓝牙的可编程LED留言板电路
滚动LED标志 - 输出视频演示
LED滚动显示板-框图
LED DOT矩阵 - 内部电路图
名称本身是infers,LED以矩阵格式连接,即行和列。矩阵可以用所需的行数和列形成。但是,7x5(5x7)和8x8点矩阵显示器随时可用为模块。设计人员可以使用这些模块或者可以使用单个LED构建阵列。由于LED具有两个端子,矩阵取向具有两种类型。行终端具有阳极类型,并且柱端子是阴极型反之亦然,或者行终端是阴极类型,柱终端具有阳极类型。以下是常见阳极和公共阴极类型的矩阵显示器。
在这里是一个典型的数据表的点阵显示与上述图像。
刷新矩阵显示
从矩阵显示的电路图可以清楚地看到,任何LED都只能由行和列端子控制。因此,为了通过led显示一个符号或字符,不可能一直连续地打开与字符相对应的所有led。led应该使用矩阵的单个像素进行定位和控制。
矩阵显示器类似于矩阵键盘,并且以相同的方式接口,唯一的变化是行和列都被视为输出端子。因此,要在矩阵上显示字符,应将信息发送到矩阵列的列或划行.这就是所谓的提神。下面的视频显示数字零在较慢的刷新率。
让我们讨论列的列8X8矩阵显示的接口类型。让列从C1到C8命名,行从R1到R8命名。为了显示字符,C1被启用,显示字符所需的行被启用/打开。在上面的视频中,数字零显示在矩阵上。因此,当C1被启用时,R3到R7应该被打开。类似地,当C2被启用时,R2和R8应该被打开。记住,在启用C2之前,C1应该被禁用,所有的行必须被关闭(行是可选的)。这是在我们的电路中通过十进计数器完成的。
构成LED的字符数组滚动显示
如上所述,为了刷新显示,字符被构建为二维数组。第一个维度用于定位字符,其长度或大小等于字符的数量。第二个维度包含与启用的列对应的行信息或与启用的行对应的列信息。下面提供了包含字母-数字和特殊字符的数组。该数据对应于列阴极类型点阵显示。下图显示了一个使用星号的字符。
下载-字符数组代码
多路复用的矩阵
8x8矩阵包含16针,8行8个引脚和8个柱8个柱。因此,要接口矩阵,我们需要16针的微控制器。但是,它可以一次显示一个字符,即文本的长度只是一个完整的字符。为了显示一行字符,必须并排放置多个矩阵,并且每个矩阵应与微控制器接口。例如,考虑我们使用的是10个矩阵,然后需要160引脚或者20个8位I / O端口来操作矩阵阵列。
当需要使用大型显示器将多个字符显示为一行文本时,将并排放置许多8X8矩阵。考虑到界面的逐列类型,对每个矩阵的唯一列进行分流,即。,所有矩阵的C1都连接在一起C2到C8也是如此。现在,需要8个引脚来控制显示阵列所有矩阵的列。
我们仍然可以减少针对列的引脚数。通过使用十年柜台可以实现这一点。可以使用HCF4017,CD4017或类似IC等计数器来控制列。微控制器必须提供时钟脉冲,以从其I / O引脚之一增加计数,并且还必须在启动期间重置计数器,并在随时随地时重置计数器。因此,完全,需要2个I / O引脚操作十年计数器,该计数器将控制整个显示阵列的列。
驱动集成电路或晶体管需要承受电流。像C8050或SS8050这样的晶体管可以连续提供1.5A集电极电流。其他晶体管如2N2906、2N2222、2N3904等。,约600毫安。所需的最大集电极电流取决于模块的类型和所选LED的尺寸。矩阵模块的数据表包含与典型LED电流相关的数据。利用这个电流,我们可以计算所需的最大集电极电流。
- 我领导= LED绘制的典型电流
- 8 * I.领导给出模块的一列所绘制的最大电流(8X8)
- 8 * I.领导*(编号组件)给出所有模块的列1绘制的电流,因为模块被复用,唯一列被分流。
因此,最大集电极电流= 8*I领导*(不。的模块)
现在,让我们减少控制显示阵列的行所需的I/O引脚。这是通过使用“Serial-In Parallel-Out”移位寄存器来实现的。该寄存器串行接收输入数据,并在其输出端口加载数据,即在并行输出。通过使用这种类型的数据传输,只需要微控制器的4个引脚就可以将行数据发送到整个显示阵列。
来自微控制器的串行数据传输
如前所述,微控制器的数据通过串行移位并行输出寄存器传递给矩阵。为此,这里使用了微控制器的SPI(串行外设接口)特性。考虑到列逐列刷新方式,将相应使能列对应的行数据从单片机的MOSI(主输出从输入)引脚串行发送到移位寄存器。通过启用移位选项后,从微控制器发送新的数据字节,该数据被串行地从最后寄存器(最右)移动到第一个寄存器(最左)。接下来,频闪输入给寄存器(“XX4094”IC的负边)。然后,并行输出被启用,这将打开每个矩阵的相应行led。
微控制器必须逐个启用列,并发出每个列的相应行数据。在这个项目中,数据从单片机发送到最右边的寄存器,并通过一系列的移位操作,数据到达最左边的寄存器。因此,在一个周期中,微控制器发送到最右边寄存器的第一个数据字节将在周期结束时到达最左边寄存器。程序流程如下所示。
的移位寄存器
IC 4094 (MC14094)是一个串行输入和并行输出寄存器,具有级联选项。由单片机发送的串行数据被加载到移位寄存器的并行输出。频闪输入将数据加载到各个寄存器中。如果output Enable为HIGH,则输出数据可在寄存器的输出管脚处获得。每个移位寄存器的并行输出连接到各自8X8矩阵的行。需要的移位寄存器的数量等于8X8矩阵的数量。
框架行数据数组
要显示的文本行将分段为各行数据的列。一个名为'rowdata'是为此目的而声明的。这个数组存储要显示的文本的每一列的行数据。当显示中启用某列时,将使用该数组发出相应的行数据。
数组的大小应该大于或等于文本中的字符数(如果文本中有10个字符,则列数为10*6=60)。除此之外,应该提供从显示的最右边的列开始的空列。因此,数组的大小必须等于这些空列和实际文本。对于包含16个模块的16显示,空列是16*8=128。对于最大值为的文本200个字符数组的大小=((16 * 8) + (200 * 6)) = 1328.微控制器的RAM限制了变量的大小。因此,根据RAM大小,文本的最大字符是有限的。
要显示的文本写在调用的用户定义函数中线(“ABC”);这里'abc'是要显示的文本。所有字符都在5列中框架。在5列之后,将空列插入两个字母之间的空间。如果字符的宽度小于5列,则不会单独插入此空列。框架函数照顾此条件。对于上面所示的实际显示,行数据被框架如下所示。
此框架是在达到'null字符'之前完成的行();函数。如果选择了滚动模式,则在开始文本之前插入空列。这样做是因为文本必须从显示的最右边滚动。空列数等于8*(模块数)。这是一种可能的方法。
LED显示板上的停顿信息
现在,我们知道文本是逐列显示的。因此,为了从微控制器传输数据,我们必须将文本行分割成包含行数据的一维数组。在这种模式下,不考虑文本的长度。文本被框到一个数组中,列被启用,行数据从第一列发出,无论文本是否适合显示。变量名为'滚动,以决定是选择静止模式还是滚动模式。如果滚动= 0,则选择静止模式。这可以在程序中初始定义,也可以通过滑动开关实时更改。改变模式后,重启输入必须应用于微控制器以框架rowdata阵列。对于静止显示,程序流程如下所示。考虑到已完成RowData帧,请参阅连续循环。
滚动领导签署
要滚动文本,我们将使用一个名为'滚动”。这个滚动变量在每个列循环之后每次递增。如果显示数组的所有列都启用了,并且发出了相应的行数据,那么列循环就完成了。因此,显示阵列在每一个周期后都用新数据刷新。滚动的速度可以通过增加“scroll”变量之前的列周期数来调整。这个滚动变量的范围从0到长度rowdata的数组。如果滚动= 1,则选择滚动模式。这可以在程序中初始定义,也可以通过滑动开关实时更改。滚动的速度由一个名为“repeat”的变量决定。上面所示的静止循环重复这个“重复”次数。如果这个值越大,滚动速度就越慢。在重复静止循环之后,变量滚动会递增。这将改变串行数据发布期间指向的rowdata数组的数组索引。
改变LED留言板的滚动速度
电子标识的滚动速度可以通过按键在外部实时改变。为此,采用了微控制器的两个外部中断。一个中断INT0是用来降低速度的,另一个中断INT1是用来增加速度的。一个变量叫做'重复用来控制滚动的速度。这重复变量改变列循环的数量。如果按下慢速按钮,则生成INT1和重复递增。同样,如果按下快速按钮,则会生成INT0重复是递减的。此值用于定义速度。因此,滚动的速度是实时变化的。
速度范围取决于显示阵列的长度或所用模块的数量。如果显示器的长度很大,例如5英尺长,那么可以使用4个字母/字符每秒或240个字母/分钟(LPM)作为正常速度。这可以增加或减少实时使用速度控制按钮。
下面是显示的程序文件。该程序是为16个模块编写的。如果模块的数量减少到8或更少,那么重复循环应该乘以10而不是5以获得适当的速度。这只是改变速度,如果速度令人满意,可以忽略它。有一个c字体验证函数来逐个查看字符。
下载:LED滚动显示板程序代码
1评论
你好,我无法下载代码。请告诉我……