首页 » 智能 » 和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平

和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平

乖囧猫 2024-10-30 11:17:21 0

扫一扫用手机浏览

文章目录 [+]

现在轻微繁芜一点的组件多数采取某种总线与Arduino板通信,因此,如果我们要进一步学习Arduino,就必须节制常见的几种总线。
现在组件件总线很多,最常见的是I2C,我们前面有好几篇文章先容过。
I2C的上风很多,缺陷是速率较低。
如果须要高速率交流信息,譬如各种存储芯片、视频等,就得改用SPI总线。
总线不是高不可攀的东西。
用一个74HC595芯片就可以做一个SPI组件,与Arduino板连接。

74HC595是8位串入并出的位移缓存器,三态输出,可级联。
它可以直接连SPI总线,吸收来自SPI的串行数据,转换成并行数据。
因此,也可用来扩展数字输出口。

和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平 和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平 智能

实验只须要一个74HC595芯片和一个8位电平指示器。

和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平 和爷爷一路学Arduino:用74HC595芯片就可做一个SPI组件_总线_电平 智能
(图片来自网络侵删)

下图是74HC595与Arduino的连接。
74HC595的/OE(13)是使能,电平拉低时芯片才事情,因此必须接Gnd。
/MR(10)是主复位,为低电平时,存储数据被清空,因此必须接Vcc。
DS(14)是串行数据输入,接Arduino的D11数字口。
STCP(12)是存储寄存器时钟输入,接Arduino的D8。
SHCP(11)是移位寄存器的时钟输入,接Arduino的D12。

74HC595与Arduino的连接

下面是代码。
你要在Arduino项目里利用SPI总线,必须先接入SPI库。
SPI库是内置的,逐级点选菜单栏“Sketch|装入库|SPI”,即可连接上SPI库。
Q0~Q7是平行输出,分别接8位电平指示器的D0~D7。
Q7S是串行输出,供级联用的。
如果你想用SPI总线扩展16个数字输出口,你就用两个74HC595,这个Q7S接下一个74HC595的DS端。
如果是单个74HC595,这个Q7S就空置。

#include <SPI.h>#define LatchPin 8//STCP#define ClockPin 12//SHCP#define DataPin 11//DS//LED状态显示的变量char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void setup() {pinMode(LatchPin, OUTPUT);pinMode(ClockPin, OUTPUT);pinMode(DataPin, OUTPUT);}void loop() {for(int i = 0; i < 8; i++){digitalWrite(LatchPin, LOW);shiftOut(DataPin, ClockPin, MSBFIRST, table[i]);digitalWrite(LatchPin, HIGH);delay(500);}}

本来须要8个LED、8个限流电阻做8位指示,后来买到了8位指示组件,只有一元一个,就做了这个实验。
74HC595是元10只,因此,实验本钱只有1.40元。
可开始LED不亮。
测试创造,这个8位指示组件是共阳的,公共端该当接Vcc,而不是接Gnd。
这样,输入低电平时,LED才点亮。
为此,上面的char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};改成了char table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};。
也便是说,送8位电平指示器的是反码。
很好,顺便对反码又有了感性认识。

往后详细先容SPI总线的事理与规范。

标签:

相关文章

反激12V 5A制作实战_电压_电流

PWM掌握器+开关管+高频变压器一、事理框图二、技能参数:输入电压范围 90-265VAC输出电压 12±5%V输出电流 5A线性...

智能 2025-01-16 阅读0 评论0

据说有人植入了芯片?咋回事?_芯片_技巧

你想给自己植入一枚芯片吗?科幻大片中常常有这样的桥段,主角植入芯片改造身体,终极得到了超能力,变得无所不能。对大多数普通人来说,人...

智能 2025-01-16 阅读0 评论0