姓名:安培赟 学号:22021211917
在使用Arduino时,可能会将常遇到数字引脚不够用的情况,那么可以使用74HC595芯片来实现拓展数字I/O口的效果。74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
74HC595的引脚的说明如图所示:
如果驱动16位led显示,需要用两块74HC595芯片联级并行输出,联级并行输出的电路如图所示:
其工作原理为:
假如往第一级的595连续发三个字节数据:ABCD EFGH、IJKLP MNOP、QRST UVWX,第一个字节ABCD EFGH先进入第一级595移位寄存器;
当第二个数据IJKLP MNOP到来时,也往第一级595移位寄存器移,而第一个字节就会被挤出到第二个移位寄存器;
当第三个数据QRST UVWX到来时,也往第一级移位寄存器移,第二个字节就被挤出到第二级移位寄存器移,而一个字节就被挤出到第三级移位寄存器移;
由于OE引脚一直低电平,所以当STCP产生上升沿后,这三个字节就并行输出了。根据此原理,我们可以借助Arduino的模拟SPI引脚,输出串行信号。
在使用SPI时,必须将设备连接到Arduino的制定引脚上,但是不同的型号上的Arduino上的SPI的引脚的位置不同,甚至有一些基于Arduino的第三方开发板,并没有提供SPI接口。这时便可以使用Arduino提供的模拟SPI通信功能。使用模拟SPI通信可以指定Arduino上的任意数字引脚为模拟SPI引脚,并与其他SPI器件连接进行通信。Arduino提供了两个相关的API用于实现模拟SPI通信功能。利用Arduino库函数“shiftout()”便可以模拟SPI串行输出。