1. 实验目的
- 使用08-74HC595的扩展点亮8个发光二极管
- 按照
1011 0001
调整灯的亮灭
2. 知识点
8位移位寄存器
08-74HC595
各个针脚功能如下
Vin
:芯片高电平输入端(电源)GND
:芯片接地端(接地)OE
:使能端,接地才能正常工作,一般情况下接地MR
:一般情况下接高电平,接低电平会重置0~9
:被控制端口(0或1)DS
:资料ST
:suoer tap,活塞SH
:大平台- 右上角高亮:串接扩展接口
其主要原理使用8位移位寄存器
- 大平台:输出8位寄存器内容
- 活塞:右移一位
- 资料:输入数值
大平台输入低电平
大平台输入高电平(更新状态)
图片来源及课程详见《别再找了!这是有史以来最棒的Arduino教程系列》感谢佑來老师的奉献无私!的视频课程
3. 原理图
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. 实验结果
局部
写在最后
注:本专栏实验均使用免费的仿真平台TinkerCAD
,传送门如下
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知