74HC595移位寄存器

参考文章
参考文章

1-7,15号端口接8个LED或者8位数码管;
8号口接地;
9号口连接下一个595或者置空;
10号口接vcc;
11号口接D2;
11脚SRCLK移位寄存器时钟输入:当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。
12号口D3;
12脚RCLK存储寄存器:数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。
13号接口置空或者接GND;
14号接D4;
14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。
16号口接vcc

//淘宝店主配的代码,发觉后2个函数根本没用到,而是直接用shiftout函数
int data = 4; 
int clock = 3;
int latch = 2;
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
}
void loop()
{
int delayTime = 100;
for(int i = 0; i < 256; i++)
{
updateLEDs(i);
delay(delayTime);
}
}
void updateLEDs(int value)
{
digitalWrite(latch, LOW);    //移位寄存器
shiftOut(data, clock, MSBFIRST, value);
digitalWrite(latch, HIGH);
}
/*void updateLEDsLong(int value)
    {
  digitalWrite(latch, LOW);
  for(int i = 0; i < 8; i++)
  {
  int bit = value & B10000000;
  value = value << 1;
  if(bit == 128){digitalWrite(data, HIGH);}
  else{digitalWrite(data, LOW);}
  digitalWrite(clock, HIGH);
  delay(1);
  digitalWrite(clock, LOW);
  }
  digitalWrite(latch, HIGH);
  }
int bits[]={B00000001, B00000010, B00000100, B00001000, B00010000, B00100000,
B01000000, B10000000};
int masks[] ={B11111110, B11111101, B11111011, B11110111, B11101111, B11011111,
B10111111, B01111111};
void changeLED(int led, int state)
{
ledState = ledState & masks[led];
if(state == ON){ledState = ledState | bits[led];}
updateLEDs(ledState);
}*/

Arduino中shiftOut怎么用?
文章同步至Daoker小站,欢迎交流学习

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值