基于arduino的74HC595模块的原理与使用

为什么使用74HC595:因为开发板上的IO口不够用,所以采用74HC595来拓展IO口,用3个开发板上的IO口资源,就可以拓展出8个IO口。

74HC595就是二进制移位寄存器。

595有三条重要的线:数据线(data),锁存线(latch),时钟线(clock)

74HC595操作动作
latch = LOW只有为low时才可以输入数据
data通过data传输数据第一位,HIGH/LOW
clock = HIGH数据锁存,
clock = LOW准备下一个
data…继续上面步骤,直到传输完成
clock = HIGH储存全部的数据
clock = LOW禁止数据再进行传输
latch = HIGH并行送出数据

引脚接线方法

14脚DS数据引脚data                单片机引脚

12脚ST_CP锁存线LATCH            单片机引脚

11脚SH_CP时钟线引脚clock           单片机引脚


最后上实例程序:
/*********************************
arduino连接74HC595,595上各个输出IO
口上连接一个LED,指定某个灯亮或者灭

*********************************/
int clockPin = 5;//时钟引脚设置
int dataPin = 2;//数据引脚设置
int latchPin = 4;//锁存引脚设置

//将三个引脚全部设置为输出
void setup() {
  pinMode(clockPin,OUTPUT);
  pinMode(dataPin,OUTPUT); 
  pinMode(latchPin,OUTPUT);
}

void loop() {
  int led_state = 5;//将要点亮或者关闭的LED个数或者位置  
  HC595(led_state);  
}
//设置led变化函数
void HC595(byte led_state)
{
  boolean ledPin;//led的状态变量,0或者1
  digitalWrite(latchPin,LOW);//开始输入数据
  for(int i = 0; i <= 7;i++){
    //将1按位左移,&上led_state可以判断led_state的各位是1或者0,从而决定ledPin的HIGH或者LOW
    if(led_state &(1<<i)){
      ledPin = HIGH;
      }
    else
      ledPin = LOW;
    digitalWrite(dataPin,ledPin);//往data里存入数据
    digitalWrite(clockPin,HIGH);//锁存数据
    digitalWrite(clockPin,LOW);//准备输入下一个数据
        }
  digitalWrite(clockPin,LOW);//全部输入完毕
  digitalWrite(latchPin,HIGH);//送出数据
  /*
  送出数据之后,你可能发现,你输入的数字和实际亮的灯的顺序不对,首先,你要将灯按照D0-D7顺序排好,
  最重要的是,你要知道74HC595的数据时怎样输入的。
  */
  }

文章中的595芯片管脚图及内容参考来自《Arduino从基础到实践》。

至于数据到底是从低位输入595,还是高位输入到595,建议浏览https://blog.csdn.net/jbh18401/article/details/75334562

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值