
Увеличить

Сдвиговый регистр 74HC165
ВВЕДЕНИЕ
Входной сдвиговый регистр 74HC165 — один из самых распространённых сдвиговых регистров. Он преобразует параллельный входной сигнал в последовательный выходной. Позволяет увеличивать количество входов микроконтроллера.
Используйте сдвиговый регистр для увеличения количества входов микроконтроллера. Например, для определения нажатий среди большого количества кнопок.
ПАРАМЕТРЫ
- Рабочее напряжение: 2 - 6 Вольт DC
- Рабочая температура: от -40°C до +85°C
- Корпус: DIP16
КОРПУС DIP16
Чип преобразовывает входящий параллельный сигнал на 8 пинах (Dx) в выходной последовательный сигнал на 1 пине (Q7).Передача синхронна: для такта используется дополнительный пин (CP). Также отдельным пином управляется регистр данных (PL), что позволяет загружать параллельный сигнал для последовательного считывания с 8 входов одновременно.

Таким образом из трёх пинов микроконтроллера, такого как Arduino, можно получить 8 цифровых входов. Из регистров 74HC165 можно делать каскады, подключая один за другим, и таким образом из всё тех же 3 входящих линий получать 16, 24, 32 и т.д. цифровых входов.
КАК ПОДКЛЮЧИТЬ
Подключаем микросхему с Arduino по рисунку ниже. В этом примере считываются нажатия с четырёх кнопок.

ПРИМЕР КОДА
int pinDataIC = 9;
int pinClockIC = 10;
int pinLanchIC = 1;
int tempo = 60;
byte button = 0;
int show = 1;
void setup()
{
//initialize the pin
pinMode(pinDataIC, INPUT);
pinMode(pinClockIC, OUTPUT);
pinMode(pinLanchIC, OUTPUT);
//iniciate serial comminication
Serial.begin(9600);
}
void loop()
{
//some variables
byte oldbutton;
int pausenote;
String notearray[] = {"Redonda", "Blanca", "Negra", "Corchea", "Tresillo", "Semicorchea", "Seisillo"};
int numarray[] = {0, 0, 0, 1, 2, 3, 5};
int index = 2;
String note;
int numero;
int i = 0;
//parallel load
digitalWrite(pinLanchIC, HIGH);
delayMicroseconds(20);
//serial shift
digitalWrite(pinLanchIC, LOW);
//Read 74HC165
button = shiftIn(pinDataIC, pinClockIC, MSBFIRST);
digitalWrite(pinLanchIC, HIGH);
//Show the result
Serial.println(button);
if ((button - oldbutton) == 2)
{
tempo ++;
show = 1;
//beat = beat + 30;
}
else if ((oldbutton - button) == 4)
{
tempo --;
show = 1;
//beat = beat - 30;
}
else if ((oldbutton - button) == 8)
{
index ++;
show = 1;
}
else if ((oldbutton - button) == 16)
{
index --;
show = 1;
}
oldbutton = button;
numero = numarray[index];
note = notearray[index];
if (show == 1)
{
Serial.print("TEMPO: ");
Serial.print(tempo);
Serial.print(" NOTE: ");
Serial.println(note);
show = 0;
}
delay (1000);
}
КОМПЛЕКТ
- Сдвиговый регистр 74HC165 x1



























































































