Подключение регистра сдвига 74HC595 к микроконтроллеру PIC


В ряде проектов радиолюбители сталкиваются с ситуацией, когда количество контактов у используемого ими микроконтроллера является недостаточным для реализации всех функций проекта. Данная ситуация характерна для проектов с большим количеством используемых светодиодов (светодиодные кубы и т.д.), большим количеством семисегментных индикаторов и т.п. Решить проблему нехватки контактов микроконтроллера в этом случае могут регистры сдвига.

Внешний вид подключения регистра сдвига 74HC595 к микроконтроллеру PIC

В данной статье мы рассмотрим подключение регистра сдвига 74HC595 к микроконтроллеру PIC. Для подключения данного регистра сдвига к микроконтроллеру необходимо всего лишь 3 контакта, а на его выходе мы получаем 8 параллельных контактов. Для еще большего увеличения необходимых контактов можно подключать регистры сдвига каскадом – подключив таким образом два регистра сдвига мы получим 16 выходных контактов.

Также на нашем сайте мы рассматривали подключение регистра сдвига 74HC595 к другим микроконтроллерам (платам):

Необходимые компоненты

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Регистр сдвига 74HC595 (купить на AliExpress).
  3. Программатор PICkit 3 (купить на AliExpress).
  4. Кварцевый генератор 20 МГц (купить на AliExpress).
  5. Конденсаторы 33 пФ (2 шт.) (купить на AliExpress).
  6. Резисторы 4,7 кОм и 1 кОм (купить на AliExpress).
  7. Светодиоды – 8 шт. (купить на AliExpress).
  8. Источник напряжения питания 5V.
  9. Макетная плата.
  10. Соединительные провода.

Регистр сдвига 74HC595

Распиновка (назначение контактов) микросхемы регистра сдвига 74HC595 представлена на следующем рисунке. Расшифрованы контакты в таблице ниже.

Распиновка микросхемы регистра сдвига 74HC595

Наименование контактов Выполняемые функции
Q0 - Q7 Выходные контакты микросхемы (на рисунке обозначены красным прямоугольником), на них выдаются параллельно 8 бит данных. Мы к ним подключаем светодиоды.
Data Pin (DS) Контакт, на который мы передаем данные последовательно, бит за битом. Чтобы передать 1, мы с помощью подтягивающего резистора подаем на него напряжение высокого уровня (high), а чтобы передать 0 – мы подаем на него напряжение низкого уровня.
Clock Pin (SHCP) Контакт синхронизации. Каждый импульс на этом контакте заставляет регистр сдвига считать один бит с контакта Data Pin и сохранить его.
Shift Output (STCP) После приема 8 бит мы подаем импульс на этот контакт чтобы увидеть выход регистра сдвига.

Алгоритм работы

Алгоритм взаимодействия с регистром сдвига показан на следующем рисунке.

Алгоритм взаимодействия с регистром сдвига в нашем проекте

1. Сначала мы передаем один бит данных на контакт Data Pin.
2. После этого мы подаем импульс на Clock Pin, в результате этого регистр сдвига считывает бит данных с контакта Data Pin и сохраняет его.
3. Затем мы подаем второй бит данных на контакт Data Pin и импульс на Clock Pin, в результате чего регистр сдвига считывает второй бит данных с контакта Data Pin и сохраняет его. Этот процесс мы продолжаем до тех пор, пока не передадим регистру сдвига все 8 бит.
4. Когда все 8 бит приняты последовательно, один за одним, мы подаем импульс на контакт Shift Output (STCP) чтобы передвинуть (передать) все сохраненные 8 бит на 8 выходных контактов микросхемы.

Таблица истинности регистра сдвига 74HC595 приведена на следующем рисунке

Таблица истинности регистра сдвига 74HC595Схема проекта

Схема подключения регистра сдвига 74HC595 к микроконтроллеру PIC представлена на следующем рисунке.

Схема подключения регистра сдвига 74HC595 к микроконтроллеру PICВ схеме мы подключили контакты регистра сдвига data, clock и strobe к контактам RB0, RB1 и RB2 микроконтроллера PIC соответственно. Для всех 8 светодиодов используется один токоограничивающий резистор. Для того, чтобы задействовать работу контактов вывода регистра сдвига 74HC595, необходимо замкнуть его контакт 13 на землю. Контакт QH регистра сдвига мы оставим неподключенным поскольку мы не будем подключать еще один регистр сдвига каскадом. Мы отключаем флаг очистки входа (clear input flag) при помощи подключения контакта 10 регистра сдвига к VCC.

Кварцевый генератор подключен к контактам OSC микроконтроллера. В данном проекте мы с помощью регистра сдвига будем последовательно включать светодиоды с Q0 по Q7.

Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.

Внешний вид собранной на макетной плате конструкции проекта

Объяснение программы для микроконтроллера PIC

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе настроим биты конфигурации микроконтроллера.

После этого укажем тактовую частоту кварцевого генератора (необходимо для правильной работы функции задержки) и дадим осмысленные имена используемым контактам.

Затем запрограммируем функцию system_init() – в ней мы будем задавать направление работы используемых контактов (в нашем случае на вывод данных).

Далее запрограммируем импульсы, подаваемые на контакты clock и latch регистра сдвига.

После этого запрограммируем функцию data_submit(unsigned int data), предназначенную для передачи последовательных данных на регистр сдвига 74HC595.

На вход этой функции будут поступать 8-битные данные, каждый из этих битов мы будем передавать последовательно (друг за другом) используя оператор сдвига влево и оператор AND. Каждый бит будет записываться в регистр используя импульс синхронизации (функция clock()), а затем данные будут окончательно передаваться на выход с помощью функции strobe(). В этой функции сначала будут передавать наиболее значащие биты (MSB, Most Significant Bit), а затем менее значащие.

В основной функции программы main мы будем последовательно передавать на выход регистра двоичные числа чтобы по очереди зажигать светодиоды, подключенные к его выходам.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
801 просмотров

Комментарии

Подключение регистра сдвига 74HC595 к микроконтроллеру PIC — 2 комментария

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

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