使用74HC595来驱动LED数码管

前面讲过使用74LS47来驱动LED数码管,目的就是减少单片机IO引脚的使用量。如果单片机直接驱动LED数码管,每个数码管至少需要7个IO 引脚,如果使用74LS47,那么只需要4个引脚。如果要驱动多个数码管,要么引脚数量倍增,要么采用高频刷新的方式(每增加一位数码管,需要多占用一个 引脚,并且数码管可能会有闪烁的现象)。今天介绍的74HC595,可以将引脚数量降低为3个,并且可以串行驱动任意多个数码管,无需再增加IO引脚数 量,并且,LED数码管是没有任何闪烁的,效果非常好。

下面是74HC595的物理引脚定义和逻辑引脚标识:

74HC595 物理引脚定义

74HC595 逻辑引脚

Arduino的代码库中内置了ShiftOut方法,可以很方便的应用于74HC595。在这个示例中,我们使用一个74HC595驱动一个LED数码管,单片机采用Arduino UNO。

电路连接要点如下:

LED数码管(5161AS)的1,2,4,5,6,7,9,10引脚分别连接74HC595的Q0-Q7。

LED数码管的3引脚串接一个200欧的电阻然后接地。

74HC595的OE、GND接地,VCC、MR接电源正极。

74HC595的ST_CP接Arduino的3脚,SH_CP接Arduino的4脚,DS接Arduino的2脚。

我是在面包板上做测试的,很方便,实际连接图如下,其实啥也看不清,大家照着上述的连接方式连即可:

74HC595 面包板

Arduino程序代码如下:

 

代码运行的效果,就是LED数码管从0到9循环显示。

本次试验参考了74HC595的数据手册和Arduino的官方文档:

http://www.arduino.cc/en/Tutorial/ShiftOut

http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf

大家可以自行研究,尝试驱动多个LED数码管。

Published by

Meng Guang

thinking ahead of what's possible