【Arduino开发】初识08-74HC595


1. 实验目的

  • 使用08-74HC595的扩展点亮8个发光二极管
  • 按照 1011 0001调整灯的亮灭

2. 知识点

8位移位寄存器

08-74HC595各个针脚功能如下
1

  • Vin :芯片高电平输入端(电源)
  • GND:芯片接地端(接地)
  • OE:使能端,接地才能正常工作,一般情况下接地
  • MR:一般情况下接高电平,接低电平会重置
  • 0~9:被控制端口(0或1)
  • DS:资料
  • ST:suoer tap,活塞
  • SH:大平台
  • 右上角高亮:串接扩展接口

其主要原理使用8位移位寄存器

  • 大平台:输出8位寄存器内容
  • 活塞:右移一位
  • 资料:输入数值

大平台输入低电平
1
大平台输入高电平(更新状态)
4

图片来源及课程详见《别再找了!这是有史以来最棒的Arduino教程系列》感谢佑來老师的奉献无私!的视频课程


3. 原理图

5


4. 实现代码

4.1版本一:无循环暴力重复

参照课程中的动画

/*
	【Arduino开发】初始08-74HC595
    Author: FeverTwice 
*/

int big = 2; 	// 大平台
int push = 3;	// 活塞
int datain = 4;	// 信号输入

void setup()
{
  pinMode(big, OUTPUT);
  pinMode(push, OUTPUT);
  pinMode(datain, OUTPUT);
}

void loop()
{
  digitalWrite(big, LOW);	// 先放下大平台
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 1);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 0);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 0);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 0);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 1);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 1);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 0);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, 1);	// 资料放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
  
  digitalWrite(big, HIGH);	// 大平台推上去
}

4.2 版本2:使用函数和循环简化上述代码

/*
	【Arduino开发】初始08-74HC595
    Author: FeverTwice 
*/
int big = 2; 	// 大平台
int push = 3;	// 活塞
int datain = 4;	// 信号输入

// 定义输入序列(数组)
int dataInput[8] = {1,0,1,1,0,0,0,1};

void setup()
{
  pinMode(big, OUTPUT);
  pinMode(push, OUTPUT);
  pinMode(datain, OUTPUT);
}

void loop()
{
  digitalWrite(big, LOW);	// 先放下大平台
  
  for(int i = 0; i < 8; i++){
    putSomething(dataInput[i]);
  }
  
  digitalWrite(big, HIGH);	// 大平台推上去
}

// 放入资料值为number的函数
void putSomething(int number){
  digitalWrite(push, LOW); 	// 拉回活塞 
  digitalWrite(datain, number);	// 资料number放上去
  digitalWrite(push, HIGH);	// 资料放好推出去
}


5. 实验结果

1
局部
4


写在最后

注:本专栏实验均使用免费的仿真平台TinkerCAD,传送门如下

传送门:ThinkerCAD

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值