51单片机学习笔记(清翔版)(13)——LED点阵、74HC595

本文介绍了51单片机如何驱动LED点阵屏,讲解了点阵屏的工作原理,包括静态显示和动态扫描技术。同时,重点阐述了74HC595芯片在驱动8*8点阵屏中的作用,通过级联方式节省IO口,实现串入并出。文中还提到了动态扫描避免闪屏的问题,并给出了74HC595的使用方法和电路原理图。
摘要由CSDN通过智能技术生成

如图3,点阵屏分单色和彩色,点阵屏是由许多点组成的,在一个点上,只有一颗一种颜色的灯珠,这就是单色点阵屏,彩色的在一个点上有三颗灯珠,分别是RGB三原色。

图4你可能没看出来,那么大块黄色的就是点阵屏,下面那个粉色的长条也是。

大的点阵屏实际上是由许多一小块一小块点阵屏拼接在一块的,最终形成一个大的,在做移动舞台时,它拆装方便,例如演唱会时,液晶的就不方便,运输也不方便,也容易损坏,而点阵屏就一快一块运输就可以,然后拼在一起。

单色点阵屏成本低,就不能像图4一样显示视频了,只能显示文字。

这是我们用的,一个点里面一个灯珠的单色点阵屏。

8*8就是8行8列的64个的点阵屏,左下方那是背面引脚图,在设计点阵屏的时候就需要了解这个引脚是怎么排序的,否则怎么驱动它。

看这有一个凹起的塑料,以这个点为参考点,右面是1脚,左边是8脚,右到左1~8,上方左到右是9~16。学会后要是自己想做一个点阵屏就要知道引脚的排序。

接下来就看点阵屏内部原理图。

内部结构比较简单,是由多颗LED灯珠连接在一起组成的

左边和上边的数字分别对应的是引脚

LED就是让指定的灯亮,来显示我们需要的字形

比如“上”

那么我们如何点亮呢?

例如左上角的那个,它的正极接到了9脚,负极接到了13脚,那么9接高电平,13给低电平就亮了,那么其它脚我们怎么赋值呢?

我们的LED点阵是共阳极的,和前面的数码管一样,也分为共阳极共阴极。

行,都是接了正极的,就是共阳极。反之,如果LED的正极接在了列上,那么就是共阴极。

回到刚才的问题,那么就是如下:

那么点亮许多灯怎么办?

比如我们再把这个点亮。

这就用到了动态扫描技术了。(和数码管一样,利用人眼的视觉暂留效果)

我们先让第一个亮,然后马上让第二个亮,然后又让第一个亮,一直循环。这样看起来就两个都亮了,实际上是不能静态显示同时亮这两个灯的。

原因呢,我们看看:

如果我们要想让这两个亮,那么9,14是高电平,13,3是低电平。那么第一行第二列的灯也会亮,第二行第一列也是。所以我们就需要用动态扫描的方式。

以上就是点阵屏静态显示和动态显示的工作原理。点阵屏在实际的应用中我们是用动态显示的方法显示我们需要的内容。

有人会问为什么不把这16个引脚都接到单片机的引脚上呢?因为接下来我们介绍74HC595芯片。

我们这个点阵是焊在了一个PCB板上做点阵模块,是由两片595级联在一起来驱动8*8点阵的。

级联在一起只需要3个单片机的IO口,就可以控制16个脚的点阵了。非常的节省IO口。这也是实际应用中的一个方案。在点阵屏行业中,几乎都是用74HC595级联驱动的。

有些同学会看到别的同学再做实验时,把16个引脚都接到了单片机上驱动,作为初学者看似很简单,实际和我们实际应用中是脱节的。实际应用中我们不可能用这种方式去驱动,这种方式太耗费硬件资源了,你看1个点阵就有16个脚,假设我们要让点阵显示的内容更加丰富,我们再加3个8*8的点阵,那就是64个引脚,如果我们直接接单片机,那么需要多少个单片机?以我们stc89c52为例,一个单片机有32个IO口,那么就需要两片单片机。(这种4块8*8的点阵合在一起我们称为16*16的点阵模块)上面这种方案显然是不可行的,一个单片机就好几块钱,你驱动4个屏就需要2个单片机,这样硬件开销成本太大了。

而595方法,两个595级联在一块就可以驱动一个8*8点阵,驱动4个点阵我们只需要8片595,而1个595只需要几毛钱(5毛)。可能有的同学还看到别的硬件驱动1个8*8点阵需要8个或者10个以上的IO口,这种硬件纯粹就是设计给你玩的,他和实际应用是严重脱轨的,就算你学单片机只是为了玩,那你玩也要玩跟实际接轨的东西,不然你也玩不出什么高端。


 74HC595

在学会595后你会发现,他在驱动这类电子屏是非常适合的。

串入并出:串行输入,并行输出。

例如有1个数据,1个字节的8位数据,要从A传送到B点,如果是串行,串行只有一个数据通道,这8位要想从A到B只能从这一个通道过去,那么它一次只能走一个,比如第一次过去一个1,1完了后,2又过去,以此类推,8次。如果是8位并行,他就有8个通道,8个数据就可以一次传过去

由此可见,并行传输速度快,但是占用的硬件资源多,一共要占用8条传输用的数据线。串行占用硬件资源少,但传输速度要慢许多。

下面看看595的使用方法

比较重要,这一块学懂了,那么595芯片也就彻底懂了,使用方法懂了,编程也就不会有问题了。

(比较难,前面都是并行输入输出,现在已经到串行输入了)

中间上面是我们的引脚图,下面是我们模块的原理图,他只需要3个IO口就可驱动16个引脚的点阵屏了。

DS(14):串行数据输入端,串行输入只需要1个数据线,级联就接上一级的Q7',意思是如果要多加一个595芯片,那么DS就接到上一个的Q7'

看这个电路图就知道,当然这里标的不一样,这里标的是SER,我们看引脚就是,

 

为什么要级联?595是串入并出,8个IO口作并行输出,我们点阵有16个脚,1片只能控制8个脚,还有8个脚我们就再需要一片。

Q7'(9)(注意有两个Q7,是不同的,要区分开,那个9脚上面的点是“非”的意思):级联输出端,将他接到下一片595的DS端

看上面那个595的Q7'有个×,是悬空的,如果不级联悬空就行,如果级联就接到下一片的14脚。

 

如果级联3个,那么我们用3个IO口就可以做一个8*3=24位数据的并行输出了。这个方法用来扩展单片机的IO口非常实用,如果单片机的IO口不够用,我们就可以用这种方案,并且价格也便宜,而且成熟好用。

SH_CP(11):数据输入的时钟线,由于是串行输入,基本上所有的串行输入都是需要一个时钟线的,这个时钟线就是给他们一个节拍,你这个数据什么时候该走,什么时候不该走要给一个节拍,不然数据不知道是不是轮到我该传输过去了。上升沿时,数据从DS串行输入。输入到595内部的移位寄存器(8位)中,是怎么一个过程呢?下面演示一下。

DS脚应用的时候要接到单片机的个IO口上,假如给接到DS的IO口送一个数据1,那么DS脚就是1了(高电平),那么1是怎么进入到内部的移位寄存器呢?就需要在11脚产生一个上升沿,那么数据就可以进入到移位寄存器中了,什么是上升沿?一个低电平,然后变为高电平。对于5V单片机而言,低电平时0V,高电平时5V。从0V变到5V的这个过程就叫做一个上升沿。单片机产生一个上升沿是很简单的,给IO口一个0,单片机就输出一个低电平0V,再给单片机一个1,单片机就输出5V,从0V到5V的这么一个变化就产生了一个上升沿,这就是单片机产生一个上升沿的过程。

再详细说一下:

假设我们发1101 0011这么一个数据,1个字节8位的。右边是低位,左边是高位。先发低位。给先给DS一个1,用单片机IO口输出一个1,然后给11脚一个低电平一个高电平产生上升沿,这时这个1就会被送到移位寄存器第八位上,接着再发第二位,再给DS一个1,再产生一个上升沿,就会把最开始发的1挤到第七位移位寄存器上,而这次的1就发到了第八位,接着再发0,那么第八位移位寄存器就是0,第七位就是1,第六位就是1,依次类推。接着我们要输出,输出到Q0~Q7上,并行的输出出去,怎么办?这时候就是12脚了。

ST_CP(12):输出存储器锁存时钟线,12也接单片机一个IO,给他一个上升沿,那么刚刚的那8位数据就一下子从Q0到Q7输出出去了,这就是串行输入并行输出。输入的时候只从DS一个口,通过时钟控制,依次放到8位的内部移位寄存器上,再给12脚输出锁存器一个上升沿,锁存器中的8位数据就一下子输出到Q0~Q7。12脚我们还有一个需要注意的,它是一个锁存器,我们学数码管的时候也讲过,573就是一个锁存器,这里锁存器什么意思呢?假设经过8次后,数据放入移位寄存器中了,给一个上升沿,那么数据就输出到Q0~Q7上了,只要595没有断电的情况下,Q0~Q7的数据是保持不变的,除非我们再通过DS串行输入端输入8位数据过去,把这数据覆盖掉,否则在没断电的情况下是保持不变的。这有一个什么好处呢?这对我们驱动电子屏是非常实用,他可以实现不闪屏,我现在要这8个灯亮,它就一直保持着亮,不会因为其他情况让数据发生变化,假设后面这几个IO口还要拿来做别的用(11、12),Q0~Q7要保持不变,这就是他的锁存器的功能。在数码管那节课就体现出来了。

/MR(10):低电平清0移位寄存器,我们不需要把它清零,所以在电路图上直接接了VCC。电路图上标的不一样,标的/SRCLR。

/OE(13):高电平为进制输出状态(高阻态),我们要用到他的串入并出所以这个脚必须接到GND上。电路图上标的E。如果这个脚为高电平,那么Q0~Q7和点阵屏的IO口就是断开的了,断开后没有电压电流,就息屏了,不工作了。如果在IO口多的情况下,我们可以把这个脚接IO,给一个高电平就会息屏,点阵的16个脚相当于悬空,没有任何能量过去,LED灯就会全熄灭,再给个低电平,两个芯片的Q0~Q7又都接上了,数据是保持不变的,上一次是什么内容,这一次还是那个内容,就实现了闪屏的效果。

VCC(16):接电源,2~6V。

GND(8):接地。

级联:

DS输入的数据,当11脚SH_CP产生上升沿,就会把第一位数据送到第一片的移位寄存器最高位上,再发一位数据,那么之前的第一位数据就跑到移位寄存器第七位上,第二位数据跑到移位寄存器第八位上,依次进行16次,最终第一位数据就跑到第二片的移位寄存器的第一位上,第二位数据跑到第二片移位寄存器的第二位上。第16位数据跑到第一片的第八位上,再给ST_CP一个上升沿,16位数据就会都输出出去,通过两片你的Q0~Q7。第一片输出的9~16位,第二片输出的1~8位。

再详细看下原理图:

两个595的时钟线(11和12脚分别接在一起)接在一起,输入端接在第一片(14),另一片的输入接在

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值