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

Опубликовано lamazavr - пт, 03/01/2013 - 19:56
Body

Недавно писал про управление семисегментным индикатором по 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.

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

Добавить комментарий

Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.