Эксперимент 19. Счетчик (Версия 4.0)

Используя сдвиговый регистр 74НС595 усовершенствуем проект счетчика нажатий на кнопку.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Как и в предыдущем эксперименте контроллер передает последовательный сигнал на вывод DS микросхемы, который преобразуется в параллельный сигнал на выводах Q0…Q7. К этим выводам через токоограничительные резисторы подключаем LED - индикатор.

Программный код эксперимента

Exp19
  1. const int latchPin = 5;
  2. const int clockPin = 6;
  3. const int dataPin = 4;
  4. int keyPin = 13;
  5. int data[16] = {254, 176, 237, 249, 179, 219, 223, 240, 255, 243, 247, 159, 206, 189, 199};
  6. void Displ(int num);
  7.  
  8. void setup () {
  9. pinMode(latchPin,OUTPUT);
  10. pinMode(clockPin,OUTPUT);
  11. pinMode(dataPin,OUTPUT);
  12. Displ(0);
  13. }
  14.  
  15. int x = -1;
  16. int button_old = 1;
  17. void loop() {
  18. if((digitalRead(keyPin) == LOW)&&(button_old == 1)) {
  19. x = x + 1;
  20. }
  21. Displ(0);
  22. Displ(x);
  23. if (x > 15) {x = 0;}
  24.  
  25. button_old = digitalRead(keyPin);
  26. delay(20);
  27. }
  28.  
  29. void Displ(int num) {
  30. digitalWrite(latchPin,LOW);
  31. shiftOut(dataPin,clockPin,LSBFIRST,data[num]);
  32. digitalWrite(latchPin,HIGH);
  33. }

В отличие от предыдущей версии «Счетчика» у нас изменилась схема подключения LED -индикатора к контроллеру, теперь для передачи сигналов достаточно только трех пинов, более того, используя соединение микросхем 74HC595 каскадом, можно используя все те же три пина подключать дополнительные LED - индикаторы для создания более сложных и интересных проектов.
В программе мы обрабатываем нажатие кнопки и передаем в функцию Displ() номер закодированного символа в массиве data[]. Для краткости записи кодировку символов записываем не в двоичной системе а в десятичной.

Дополнительное задание

Попробуйте добавить еще одну кнопку в проект.