Размножение портов

Слайд 2

7-ми сегментный индикатор Виды: С общим катодом С общим анодом

7-ми сегментный индикатор

Виды:
С общим катодом
С общим анодом

Слайд 3

Сдвиговый регистр 74HC595 DIP16 Микросхема в корпусе DIP16, предназначенная для увеличения

Сдвиговый регистр 74HC595 DIP16

Микросхема в корпусе DIP16, предназначенная для увеличения количества

портов
DIP (Dual In-line Package, также DIL) — тип корпуса микросхем и некоторых других электронных компонентов
Слайд 4

Схема Q0…Q7 – выходы которыми будем управлять. Могут находится в трёх

Схема

Q0…Q7 – выходы которыми будем управлять. Могут находится в трёх состояниях: логическая

единица, логический ноль и высокоомное Hi-Z состояние
GND – земля
Q7′ – выход предназначенный для последовательного соединения регистров.
MR – сброс регистра.
SH_CP – вход для тактовых импульсов
ST_CP – вход «защёлкивающий» данные
OE – вход переводящий выходы из HI-Z в рабочее состояние 
DS – вход данных
VCC – питание 5 вольт 
Слайд 5

Схема подключения

Схема подключения

Слайд 6

Временная диаграмма

Временная диаграмма

Слайд 7

Реализация Для передачи данных мы использовали функцию shiftOut(dataPin, clockPin, bitOrder, value).

Реализация

Для передачи данных мы использовали функцию shiftOut(dataPin, clockPin, bitOrder, value). Функция ничего

не возвращает, а в качестве параметров ей нужно сообщить
пин Arduino, который подключен ко входу DS микросхемы (data pin),
пин Arduino, соединенный со входом SHcp (clock pin),
порядок записи битов: LSBFIRST (least significant bit first) — начиная с младшего, или MSBFIRST(most significant bit first) — начиная со старшего,
байт данных, который нужно передать. Функция работает с порциями данных в один байт, так что если вам нужно передать больше, придется вызывать ее несколько раз.
Слайд 8

Слайд 9

Счет нажатий #define DATA_PIN 13 // пин данных (англ. data) #define

Счет нажатий

#define DATA_PIN 13 // пин данных (англ. data)
#define LATCH_PIN

12 // пин такта (англ. clock)
#define CLOCK_PIN 11 // пин строба (англ. latch)
#define BUTTON_PIN 10
int clicks = 0;
boolean buttonWasUp = true;
byte segments[10] = { 0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111, 0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111 };
void setup() {
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
} void loop() {
// считаем клики кнопки
if (buttonWasUp && !digitalRead(BUTTON_PIN))
{
delay(10);
if (!digitalRead(BUTTON_PIN)) clicks = (clicks + 1) % 10;
}
buttonWasUp = digitalRead(BUTTON_PIN); // для записи в 74HC595 нужно притянуть пин строба к земле
digitalWrite(LATCH_PIN, LOW);
// задвигаем (англ. shift out) байт-маску бит за битом,
// начиная с младшего (англ. Least Significant Bit first)
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, segments[clicks]);
// чтобы переданный байт отразился на выходах Qx, нужно
// подать на пин строба высокий сигнал
digitalWrite(LATCH_PIN, HIGH);
}