Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.
Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.

Подключение последовательных данных к регистру сдвига TivaC

Микроконтроллеры TivaC часто используются во встраиваемых системах, требующих взаимодействия с периферийными устройствами, включая регистры сдвига. В этой статье мы рассмотрим, как подавать последовательные данные в регистр сдвига 74HC595 с помощью TivaC.

Регистр сдвига 74HC595 – это распространенная микросхема, позволяющая преобразовывать последовательные данные в параллельные. Он имеет 8 выходных битов, которые могут использоваться для управления такими устройствами, как светодиоды, ЖК-дисплеи и другие периферийные устройства. Использование регистра сдвига помогает уменьшить количество необходимых выводов ввода/вывода на микроконтроллере.

Для подачи последовательных данных в 74HC595, TivaC должен генерировать три сигнала: последовательные данные (DS), тактовый импульс (SH_CP) и защелку данных (ST_CP).

Последовательные данные отправляются побитно по выводу DS. Каждый тактовый импульс на выводе SH_CP сдвигает данные в регистр сдвига на один бит. Когда все 8 битов сдвинуты, импульс на выводе ST_CP фиксирует данные из регистра сдвига в регистр хранения, и данные появляются на параллельных выходных выводах (Q0-Q7).

Настройка выводов на TivaC для взаимодействия с 74HC595 должна быть выполнена в процессе инициализации. Три выбранных вывода для DS, SH_CP и ST_CP должны быть настроены как цифровые выходы. Например, если использовать вывод PA2 для DS, PA3 для SH_CP и PA4 для ST_CP, код инициализации может выглядеть следующим образом (с использованием библиотеки TivaWare):

// Объявление выводов
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4

// Инициализация порта GPIO A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));

// Настройка выводов как цифровых выходов
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);

После настройки выводов, данные могут быть отправлены в 74HC595 с помощью цикла, отправляющего каждый бит по очереди и генерирующего соответствующие тактовые импульсы.

Например, для отправки значения 0x55 (01010101 в двоичном формате) в регистр сдвига:

uint8_t data = 0x55;

// Установка защелки данных в низкий уровень
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);

// Отправка каждого бита
for (int i = 7; i >= 0; i--) {
  // Установка данных
  GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);

  // Генерация тактового импульса
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}


// Установка защелки данных в высокий уровень для обновления выхода
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);

Вышеуказанный код перебирает каждый бит данных, начиная с самого старшего бита (MSB). Каждый бит записывается на вывод DATA_PIN, затем генерируется тактовый импульс на выводе CLOCK_PIN для сдвига бита в регистр сдвига. Наконец, вывод LATCH_PIN устанавливается в высокий уровень для фиксации данных и обновления выхода 74HC595.

Управление периферийными устройствами через регистр сдвига 74HC595 с помощью TivaC требует понимания принципа работы регистра сдвига и настройки выводов GPIO на TivaC. Используя функции библиотеки TivaWare и простую управляющую логику, вы можете легко взаимодействовать с различными периферийными устройствами.

Comments

No comments yet. Why don’t you start the discussion?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *