SPI клавиатура на сдвиговом регистре 74hc165. Кнопки к микроконтроллеру

Недавно писал про управление семисегментным индикатором по SPI при помощи сдвигового регистра.

Так уж повелось, что зачастую необходимо не только отправлять данные но и получить их с кнопок.. Ног как всгда не хватает но проблема решается также как и в предыдушем случае — при помощи сдвигового регистра. Но на этот раз регистр понадобится с паралельной загрузкой и последовательной выдачей. Будем использовать 74hc165.

Вот схема подключения:

Как видите схема простенькая. Управление ей не намного сложнее.

Пример под ATmega8:

int main(void){
    PORTD = 0;
    DDRD = 0xff;
    PORTB=0;

    DDRB=0x2C; //Настраиваем порт для SPI
    ACSR=0x80; //Отключаем компаратор
    //Включаем SPI

    //Биты будем отправлять LSB-MSB, т.е. от младших к старшим
    SPCR=0x70;
    SPSR=0;

    PORTB |= (1<<2);  // включаем

    while(1) {
        PORTB &= ~(1<<2); // выключаем SH/LD
        PORTB |= (1<<2);  // включаем SH/LD
        char str = spi_transfer(0);
        //PORTB |= (1<<2);  // включаем
        PORTD = str;
    }
}

Алгоритм простой:

дёргоем ногой подключеной к SH/LD (сдвиг-загрузка), затем считываем регистр SPI.

Напомню, что шлём и получаем мы одновременно, такчто шлём ноль — это нормально.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий