本帖最后由 董董soul 于 2016-10-27 11:15 编辑
这节课我们介绍一下怎样使用shiftOut()函数来使用一颗74HC595驱动8颗LED。
74HC595是一种8位移位锁存器。锁存器就是把单片机的输出的数先存起来,可以让单片机继续做其它事。他的用处很多,现在我们户外使用的单色LED屏幕就大量使用。
看一下硬件连接图
shiftOut()
描述
将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。
注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。
注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。
语法
shiftOut(dataPin, clockPin, bitOrder, value)
参数
dataPin:输出每一位数据的引脚(int)
clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
bitOrder:输出位的顺序,最高位优先或最低位优先
value: 要移位输出的数据(byte)
- int latchPin = 8;
- int clockPin = 12;
- int dataPin = 11; //这里定义了那三个脚
- 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,前面我们说了这个变量会一次从1+1+到256,是个十进制数,
- 输入到芯片后会产生8个二进制数,达到开关的作用*/
- digitalWrite(latchPin,HIGH); //将ST_CP这个针脚恢复到高电平
- delay(500); //暂停500ms让你看到效果
- }
- }
复制代码
看一下具体效果
|