Arduino学习过程中很多童鞋都对74HC595表示晦涩难懂,今天我就来整理一下基本功能,让童鞋们呢能快速上手!

![]()
74HC595共有16个引脚,按照逆时针顺序排列。(74HC595有凹陷处,可以很快区分引脚。)
先来一张引脚功能图(百度到的),让大家先了解一下引脚的功能,然后用自己的理解来解释。
自我理解:
- VCC(16引脚)接Arduino5V,GND(8引脚)接ArduinoGND,没什么可说的。
- Q0-Q7 是8位并行输出引脚。
- DS(Data Serial) 是串行数据输入引脚,595数据来源口,一次只能输入一个位,连续输入8次,就积攒为一个字节。(通过此引脚输入数据有专用的函数shiftOut)
SH_CP(Shift register ClockPin)移位寄存器时钟引脚 控制移位动作 高电平触发,做一次移位。
一次移位过程过程:SH_CP LOW;
DS x(0/1);
SH_CP HIGH;
当DS有数据输入,且Sh_CP为高电平,则触发一次移位过程。
ST_CP 并行输出控制开关 高电平触发。
OE 输出有效(低电平触发)--默认接GND,若接到5V上,Q0-Q7输出都是0。
MR 复位开关-低电平有效(默认接到GND)
Q7’串行输出引脚 (若输入位数比8多,则通过此引脚连接下一个74HC595,作为下一个的DS(极连),两个595的SH_CP 和ST_CP 连接,连接方式如下图,程序中两个shiftOut就可以了。)
summary因为串行转并行 需要DS和Q0-Q7因为移位(串入) 需要SH_CP因为并行输出 需要ST_CP
假如我们要输出11011101=221,此时就需要用一个函数shiftOut(DS,Sh_CP,MSBFIRST,221)。。
int latchPin=5; int clockPin=4; int dataPin=2;//这里定义了那三个脚 void setup() { pinMode(latchPin,OUTPUT); pinMode(clockPin,OUTPUT); pinMode(dataPin,OUTPUT); //让三个脚都是输出状态 } void loop() { for(int a=0;a<=256;a++)//这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活动 { digitalWrite(latchPin,LOW); //将ST_CP口上面加低电平让芯片准备好接收数据 shiftOut(dataPin,clockPin,MSBFIRST,a); /*这个就是用MSBFIRST参数让0-7个针脚以高电平输出(LSBFIRST 低电平)是dataPin的参数, clockPin的参数是变量a*/ digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平 delay(500); //暂停1秒钟让你看到效果 } }
最后,向大家推荐一个讲解74HC595视频,对大家绝对有用哦!!!