本文主要是介绍74HC595移位寄存器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考文章
参考文章
1-7,15号端口接8个LED或者8位数码管;
8号口接地;
9号口连接下一个595或者置空;
10号口接vcc;
11号口接D2;
11脚SRCLK移位寄存器时钟输入:当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。
12号口D3;
12脚RCLK存储寄存器:数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。
13号接口置空或者接GND;
14号接D4;
14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。
16号口接vcc
//淘宝店主配的代码,发觉后2个函数根本没用到,而是直接用shiftout函数
int data = 4;
int clock = 3;
int latch = 2;
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
}
void loop()
{
int delayTime = 100;
for(int i = 0; i < 256; i++)
{
updateLEDs(i);
delay(delayTime);
}
}
void updateLEDs(int value)
{
digitalWrite(latch, LOW); //移位寄存器
shiftOut(data, clock, MSBFIRST, value);
digitalWrite(latch, HIGH);
}
/*void updateLEDsLong(int value){digitalWrite(latch, LOW);for(int i = 0; i < 8; i++){int bit = value & B10000000;value = value << 1;if(bit == 128){digitalWrite(data, HIGH);}else{digitalWrite(data, LOW);}digitalWrite(clock, HIGH);delay(1);digitalWrite(clock, LOW);}digitalWrite(latch, HIGH);}
int bits[]={B00000001, B00000010, B00000100, B00001000, B00010000, B00100000,
B01000000, B10000000};
int masks[] ={B11111110, B11111101, B11111011, B11110111, B11101111, B11011111,
B10111111, B01111111};
void changeLED(int led, int state)
{
ledState = ledState & masks[led];
if(state == ON){ledState = ledState | bits[led];}
updateLEDs(ledState);
}*/
Arduino中shiftOut怎么用?
文章同步至Daoker小站,欢迎交流学习
这篇关于74HC595移位寄存器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!