Это старая версия документа!
Используя сдвиговый регистр 74НС595 усовершенствуем проект счетчика нажатий на кнопку.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
Как и в предыдущем эксперименте контроллер передает последовательный сигнал на вывод DS микросхемы, который преобразуется в параллельный сигнал на выводах Q0…Q7. К этим выводам через токоограничительные резисторы подключаем LED - индикатор.
int a = 8; int b = 9; int c = 11; int d = 5; int e = 4; int f = 7; int g = 6; int h = 10; int keyPin = 3; int data [11][8] = {{1,1,1,1,1,1,0,1}, //"Ноль" {0,1,1,0,0,0,0,1}, //"Один" {1,1,0,1,1,0,1,1}, //"Два" {1,1,1,1,0,0,1,1}, //"Три" {0,1,1,0,0,1,1,1}, //"Четыре" {1,0,1,1,0,1,1,1}, //"Пять" {1,0,1,1,1,1,1,1}, //"Шесть" {1,1,1,0,0,0,0,1}, //"Семь" {1,1,1,1,1,1,1,1}, //"Восемь" {1,1,1,1,0,1,1,1}, //"Девять" {0,0,0,0,0,0,0,0}}; // Исходное состояние void displ (int); void setup() { for(int i=4;i<=11;i++) pinMode(i,OUTPUT); pinMode(keyPin,INPUT); displ(11); } int x = -1; int button_old = 1; void loop() { if((digitalRead(keyPin) == LOW)&&(button_old == 1)) { x = x + 1; } displ(11); displ(x); if (x > 9) {x = 0;} button_old = digitalRead(keyPin); delay(20); } void displ (int num) { int j = 0; digitalWrite(a, data[num][j]); j = j + 1; digitalWrite(b, data[num][j]); j = j + 1; digitalWrite(c, data[num][j]); j = j + 1; digitalWrite(d, data[num][j]); j = j + 1; digitalWrite(e, data[num][j]); j = j + 1; digitalWrite(f, data[num][j]); j = j + 1; digitalWrite(g, data[num][j]); j = j + 1; digitalWrite(dp, data[num][j]); j = j + 1; }
В программе эксперимента используем двухмерный массив, в котором зашифровываем выводимые символы. Для вывода всех символов напишем универсальную функцию в которую будем передавать порядковый номер символа зашифрованного в массиве.
displ()
,(подсказка - для этого вам понадобится изменить монтажную схему подключения