本帖最后由 ly101010100 于 2021-1-3 14:02 编辑
哈喽大家好,今天给大家分享一下HC595控制led的亮灭,简单说一下这个芯片,HC595是一个典型的移位串转并三态输出驱动器,
8为并行三态输出,并且可以级联,
100MHZ移位频率传输数据,且兼容TTL电平
为16pin的中规模集成芯片
14pin DS,12 pin ST锁存时钟,11pin SH数据输入时钟
命名可能不同,但是不影响,感谢电子爱好者提供图片
好了,上Arduino代码
int ST = 12;//ST/RCK CP of 74HC595 输出存储器锁存时钟线
int SH = 11;//SH/SCK CP of 74HC595 数据输入时钟线
int DS = 13; //DS/SER of 74HC595 数据线
void setup () {
pinMode(ST, OUTPUT); //锁存引脚设置
pinMode(SH, OUTPUT); //时钟引脚设置
pinMode(DS, OUTPUT);// 数据引脚设置
}
void function1(void)
{
for (int i = 8; i > 0; i--)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0xcc);
//0xcc是代表16进制数,也可以直接写10进制数,cc十进制就是204,二进制表示:11001100
//二进制表示:11001100。1和0对应每一位led灯的亮灭。用高到低就是MSBFIRST,用LSBFIRST是相反的。
//用MSBFIRST参数是高位到低位顺序与LSBFIRST是低位到高位逆向的。可以改变点亮的顺序
digitalWrite(ST, HIGH);
}
}
void function2(void)
{
for (int i = 0; i<8; i++)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0x33);//即二进制的0011 0011也就是3478亮,1256灭
digitalWrite(ST, HIGH);
}
}
void function3(void)
{
for (int i = 0; i<8; i++)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0x0f);//二进制为0000 1111即就是1234灭,5678亮
digitalWrite(ST, HIGH);
}
}
void function4(void)
{
for (int i = 0; i<8; i++)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0xf0);//对应二进制为1111 0000 即就是1234亮5678灭
digitalWrite(ST, HIGH);
}
}
void function5(void)
{
for (int i = 0; i<8; i++)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0xAA);//对应二进制为1010 1010即就是1357亮 2468灭
digitalWrite(ST, HIGH);
}
}
void function6(void)
{
for (int i = 0; i<8; i++)
{
digitalWrite(ST, LOW);
shiftOut(DS,SH,MSBFIRST,0xff);//对应二进制为1111 1111 即就是全亮
digitalWrite(ST, HIGH);
}
}
void loop()
{
while(1)
{
function1();
delay(600);
function2();
delay(600);
function3();
delay(600);
function4();
delay(600);
function5();
delay(600);
function6();
delay(600);
}
}
接线图如下,由于本人水平有限,错误之处请给予指正,请读者多多包涵
|