Сдвиговый регистр 74HC595 и семисегментный индикатор

preview_player
Показать описание
Как работает сдвиговый регистр?
Рекомендации по теме
Комментарии
Автор

Единственное толковое видео.. Большое спасибо, что делитесь знаниями!

СергейИльченко-щм
Автор

Спасибо! За каких-то 17 минут практически донесли понимание довольно сложной для начинающих схемы! Многие любят объяснять какую-нибудь одну тему или устройство, а целиком, чтобы пошире охватить, почему-то не решаются или растягивают на десяток часовых лекций. У Вас определённо есть способности. Голос пободрее и число Ваших подписчиков увеличится многократно :-) Желаю успеха.

skolo
Автор

и видео полезное, и рассказываешь все но такое впечатление, что ты вырос в дремучем лесу в пещере. я понимаю, что русский язык очень сложный. но ты парень толковый, по старайся его выучить. а то переводить тебя

kasper
Автор

Здравствуйте. Скажите пожалуйста, сможете подсказать мне как реализовать в одной мною изготовленной схеме индикацию состояния устройства. Речь идёт о регуляторе мощности на симисторе и микросхемах к561ие8 и к561ле5а. Это по сути ступенчатый регулятор. Нужно, что бы на двухразрядном индикаторе отображались числа от 1 до 10 в зависимости от положения галетника. Полную схему устройства приложу, скажите только куда её прикрепить. Дело в том, что с програмиррванием не "дружу", далёк от этого. Может есть какие варианты попроще... Заранее спасибо

rxnlroi
Автор

...
digitalWrite(latchpin, LOW);
shiftOut(clockpin.datapin, LBSFIRST,
shiftOut(clockpin, datapin, LBSFIRST,
digitalwrite(latchpin, HIGH);
В первом регистре будет а во втором .Я правильно понял?

kamilbro
Автор

#define clockPin 9 //CH_CP
#define latchPin 8 //ST_CP
#define dataPin 7 //DS

/*формуємо масив відповідний нашим сегментним індикаторам,
залежить від того як ми їх підключили.*/


byte dig[] =

0b11011010,
0b11110010,
0b01100110,
0b10110110,



0b11110110};



/*
Цифра | Байт

Пусто |
0 |
1 |
2 | 0b11011010
3 | 0b11110010
4 | 0b01100110
5 | 0b10110110
6 |
7 |
8 |
9 | 0b11110110
*/



void setup()
{

// налаштовуємо контакти на роботу - Виходами.
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
// виключаємо LATCH (щоб регістр не чекав даних).
digitalWrite(latchPin, HIGH);
Serial.begin(9600);

}

void loop()
{
for(unsigned int i = 0; i<100; i++)
{
// включаємо LATCH (починаємо завантаження даних в регістр).
digitalWrite(latchPin, LOW);
if (i<10)
{
// гасимо сигменти в старшому регісті.
shiftOut(dataPin, clockPin, LSBFIRST,

}

else
{
// вмводим старший регістр.
shiftOut(dataPin, clockPin, LSBFIRST, dig[calculateregister1(i)]);

// вмводим молодший регістр.
shiftOut(dataPin, clockPin, LSBFIRST, dig[calculateregister2(i)]);

// закриваємо LATCH (продовжуємо цикл).
digitalWrite(latchPin, HIGH);
delay(500);
}
}
}

// функція розкладання двохзначного десяткового числа, повертає значення старшого регістра.
int calculateregister1(int n)
{
int k2 = n/10;
return k2;
}

// функція розкладання двохзначного десяткового числа, повертає значення молодшого регістра.
int calculateregister2(int n)
{
int k1 = n - int (n/10)*10;
return k1;
}

romanspirit
Автор

отлично все объяснил, можешь скетч скинут? спасибо.

abuahmad
Автор

Хорошо объясняешь, спасибо за инфу. У меня завалялась парочка смдэшных 74HC164D как на счёт них?

jsckktc
Автор

восемь цыфр двоичной системы исчисления????))))

pravosekzloy