用户工具

站点工具


ocrobot:kit:arduino_star_kit:tutorial023

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
ocrobot:kit:arduino_star_kit:tutorial023 [2017/10/04 08:02] 弘毅ocrobot:kit:arduino_star_kit:tutorial023 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +======shiftOut()介绍======
 +<WRAP center round info 100%>
 +这个例程展示了怎样使用shiftOut()函数来使用一颗74HC595驱动8颗LED
 +</WRAP>
 +74HC595是一种8位移位锁存器。锁存器就是把单片机的输出的数先存起来,可以让单片机继续做其它事。
 +=====搭建电路=====
 +{{:ocrobot:kit:arduino_star_kit:2014-5-20_17-03-09.png?nolink|}}
 +=====代码=====
 +<code cpp>
 +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让你看到效果
 + }
 +}
 +
 +
 +</code>
 +<WRAP center round tip 100%>
 +shiftOut()
 +描述
 + 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。
 +注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。
 +注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。
 +
 +语法
 + shiftOut(dataPin, clockPin, bitOrder, value)
 +参数
 + dataPin:输出每一位数据的引脚(int)
 + clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
 + bitOrder:输出位的顺序,最高位优先或最低位优先
 + value: 要移位输出的数据(byte)
 +</WRAP>
 +{{youku>XNzE4ODI1Nzk2?900x530}}
 +[[ocrobot:kit:arduino_star_kit:main|返回上一级]]

Valid HTML5 Valid CSS Driven by DokuWiki