Arduino IO扩展神器74HC595
2022-07-03 本文已影响0人
Charles2018
原型
引脚
引脚说明
实验一
将一组数据11110010通过74HC595驱动8个LED 只占用处理器三个IO口。
电路图代码
int SHCP = PD2;
int STCP = PD3;
int DS = PD4;
void setup()
{
pinMode(SHCP, OUTPUT);
pinMode(STCP, OUTPUT);
pinMode(DS, OUTPUT);
}
void loop()
{
digitalWrite(STCP, LOW); // 将STCP加低电平让芯片准备好接受数据
show();
digitalWrite(STCP,HIGH); // 将STCP引脚恢复到高电平
}
void show()
{
digitalWrite(SHCP, LOW);
digitalWrite(DS, 1);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 1);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 1);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 1);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 0);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 0);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 1);
digitalWrite(SHCP, HIGH);
digitalWrite(SHCP, LOW);
digitalWrite(DS, 0);
digitalWrite(SHCP, HIGH);
}
演示.jpg
实验二
使用ShiftOut函数 8个LED随机点亮。
电路图参考实验二。
代码
int SHCP = PD2;
int STCP = PD3;
int DS = PD4;
void setup()
{
pinMode(SHCP, OUTPUT);
pinMode(STCP, OUTPUT);
pinMode(DS, OUTPUT);
}
void loop()
{
for(int i = 0;i <= 250;i++)
{
digitalWrite(STCP, LOW); // 将STCP加低电平让芯片准备好接受数据
shiftOut(DS,SHCP,LSBFIRST,i);
digitalWrite(STCP, HIGH); // 将STCP引脚恢复到高电平
delay(100);
}
}
主要说明
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
参数 dataPin; 数据输入引脚
参数 clockPin; 时钟引脚
参数 bitOrder; MSBFIRST(高位在前,也就是从数据的左边开始)、LSBFIRST(低位在前,也就是从数据的右边开始)
参数 val; 需要移位的数据
演示