找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8828|回复: 2
收起左侧

基于51单片机16×16点阵设计与制作详细说明

[复制链接]
ID:56662 发表于 2013-11-7 00:16 | 显示全部楼层 |阅读模式
吐血分享!!!这可是我了一个多月的研究成果。16×16LED显示屏的制作,虽然这已不是所谓的“新鲜事物”,淘宝上也有在卖,但这是我自己的作品!另外我又在点阵显示的基础上加了一个蜂鸣器,用来输出声音,比较方便。。。

先说一下为什么会做这个,我是在网上看到一个视频,是讲一个老外制作了一个8×8×8的立体LED,也叫光立方。看的我是热血沸腾,也想自己制作一个,但限于自己的知识有限,而且我所学习的51单片机根本达不到控制光立方的计算速度,所以,就想先做一个平面的练练手,等以后再向光立方发展!

先说一下此次制作的花费(此处为我自己在淘宝网上购买时的报价):
LED(5mm) 280×0.1=28元(一般会多买上十几二十个的,万一与坏的不就悲剧咯……);
74LS154(二手) 1×4.5=4.5元;
74HC595 2×0.65=1.3元;
万能板 (18×30cm)1×8.3=8.3元;
再其他的像晶振、三极管、电容电阻的就都几分或几毛钱一个,很便宜的。所以总共是也就60元左右吧……
好了,废话少说,下面就让我们进行制作吧!

16×16点阵顾名思义就是16×16也就是256个LED,而用51单片机控制的话,并不是像我之前所想的简单的用单片机上的32个I/O接口,16个控制行,16个控制列。因为单片机每个P口总的输出电流是有一定限制的,而点亮一个LED的电流在3—10MA,要是一行或一列LED都点亮的话,初步估计是20MA×16=320MA,单片机是承受不了的。所以就得用到三极管的放大作用了,用8550就可以实现对LED进行驱动。

当然在对LED的操作并不是简单的用I/O接口去控制亮、灭,因为我们想让它可以显示文字、符号甚至动画,简单的静态显示是远远达不到我们的要求的,这就得用动态显示。动态扫描的意思简单地说就是逐行轮流点亮,具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;…… 第十六行之后又重新燃亮第一行,这样反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。

在采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分简单、经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。这样一来,时间就有点长了,会对LED的亮度产生影响。

解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法,即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。所以在行控制上选用74LS154,在列控制上选用74HC595。下面我们来说一下这两个芯片的功能与用法。关于这两个芯片的具体资料由于受篇幅的影响就不在此细说了,可以上网搜索,有中文资料。这里只是大体说一下。

74LS154是4/16线译码器,由74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线,一条行线要带动16列的LED进行显示,这样就可以实现对行的控制了,当然还要考虑电流的问题啦,也就是加三极管8550。

74HC595是比较复杂的,详细说一下吧。的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚14是串行数据的输入端。引脚11是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将14引脚的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。12引脚是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。引脚13是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。10引脚是移位寄存器的清零输入端,当其为低时移位寄存器的输出全部为零。由于11引脚和12引脚两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为Q0~Q7,最高位Q7可作为多片74HC595级联应用时,向上一级的级联输出。但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了Q7',这里作为与移位寄存器完全同步的级联输出,已完成2块595的串联使用。

下面说一下硬件连接图。因为实物我还没做出来,等实物完成后再后续上传程序吧、、、
总电路图:


因为DXP篇幅太大,不清楚,下面是各个部分的硬件连接图。
单片机最小系统:


晶振采用24MHZ的,以此来获得更高的刷新频率,使显示更加稳定。
74LS154连接图:


这里74LS154对LED进行行控制。
74HC595连接图:


这里74HC595对LED进行列控制。
好了,整个的理论制作过程就是这些了,等原件到了我把实物焊接好以后,还会有后续的程序上传。会有惊喜哟!

未完待续…………

回复

使用道具 举报

ID:304731 发表于 2018-4-11 15:21 | 显示全部楼层
你的后续呢,我也用的595和154做毕设,程序写不出来,能给我发一下你的资料吗
回复

使用道具 举报

ID:309277 发表于 2018-4-17 09:41 | 显示全部楼层
上传的图呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表