Рубрики
Схемы на AVR

Подключение светодиодной матрицы 8х8 к микроконтроллеру AVR ATmega8

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

Светодиодная матрица 8х8 содержит 64 светодиода, которые упорядочены в форме матрицы, поэтому эта конструкция и называется светодиодной матрицей. Такую матрицу можно сделать самостоятельно, соединив 64 диода, но это будет пустой тратой времени – проще использовать уже готовую конструкцию, показанную на рисунке. Светодиодные матрицы выпускаются различных размеров и цветов – можно выбрать ту, которая вам больше всего подходит.

Светодиодная матрица 8х8 стоит столько же, сколько и 64 светодиода, а работать с ней проще. Расположение ее контактов показано на следующем рисунке. Чтобы исключить ошибки при ее подключении необходимо пронумеровать ее контакты в точном соответствии с приведенным рисунком. Далее в статье мы более подробно рассмотрим внутреннюю схему соединений светодиодной матрицы.

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

Аппаратное обеспечение

  1. Микроконтроллер ATmega8 (купить на AliExpress).
  2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  3. Светодиодная матрица 8х8 (купить на AliExpress).
  4. Конденсатор 100 мкФ (соединенный по питанию) (купить на AliExpress).
  5. Резистор 1 кОм (8 шт.) (купить на AliExpress).
  6. Источник питания с напряжением 5 Вольт.

Программное обеспечение

  1. Atmel Studio версии 6.1 (или выше).
  2. Progisp или flash magic (необязательно).

Работа схемы

Схема подключения светодиодной матрицы 8х8 к микроконтроллеру AVR ATmega8 приведена на следующем рисунке.

В схеме необходимо сделать следующие соединения светодиодной матрицы с микроконтроллером:
PORTD, PIN0 —————— к контакту PIN13 светодиодной матрицы
PORTD, PIN1 —————— к контакту PIN03 светодиодной матрицы
PORTD, PIN2 —————— к контакту PIN04 светодиодной матрицы
PORTD, PIN3 —————— к контакту PIN10 светодиодной матрицы
PORTD, PIN4 —————— к контакту PIN06 светодиодной матрицы
PORTD, PIN5 —————— к контакту PIN11 светодиодной матрицы
PORTD, PIN6 —————— к контакту PIN15 светодиодной матрицы
PORTD, PIN7 —————— к контакту PIN16 светодиодной матрицы

PORTB, PIN0 —————— к контакту PIN09 светодиодной матрицы
PORTB, PIN1 —————— к контакту PIN14 светодиодной матрицы
PORTB, PIN2 —————— к контакту PIN08 светодиодной матрицы
PORTB, PIN3 —————— к контакту PIN12 светодиодной матрицы
PORTC, PIN0 —————— к контакту PIN01 светодиодной матрицы
PORTC, PIN1 —————— к контакту PIN07 светодиодной матрицы
PORTC, PIN2 —————— к контакту PIN02 светодиодной матрицы
PORTC, PIN3 —————— к контакту PIN05 светодиодной матрицы

В используемой нами светодиодной матрице 64 светодиода упорядочены в форму матрицы. Таким образом, мы имеем 8 строк (рядов) и 8 столбцов, как показано на следующем рисунке. В каждой строке все положительные выводы светодиодов объединены в общую линию. То есть имеем один общий положительный вывод для всех 8 светодиодов в одном ряду. Данная схема соединений представлена на следующем рисунке.

Таким образом, для 8 строк светодиодной матрицы мы имеем 8 общих положительных выводов. Рассмотрим 1-ю строку – светодиоды от D1 до D8 объединены в общий положительный вывод, который обозначен в контактах светодиодной матрицы как PIN9.

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

То есть если мы хотим включить все или хотя бы один светодиод в первой строке матрицы, приведенной на рисунке, то мы должны подать питание на PIN9, а не на PIN0.

А если мы хотим включить все или хотя бы один светодиод в третьей строке матрицы, приведенной на рисунке, то мы должны подать питание на PIN8, а не на PIN2.

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

Теперь сосредоточимся на общих отрицательных выводах столбцов. На представленном ниже рисунке видно, что в рассматриваемом случае все отрицательные выводы первого столбца объединены в контакт PIN13.

Нумерация общих выводов столбцов, как и строк, также не упорядочена – в представленном примере общий вывод первого столбца выходит на PIN13, а второго – на PIN3.

Теперь если на PIN13 подать землю, то на все светодиоды первого столбца будет подана земля. Соединяя отрицательные выводы светодиодов каждого столбца, мы получим следующую картину:

И теперь мы уже получили полную внутреннюю схему соединений светодиодной матрицы. Теперь если нам, к примеру, необходимо зажечь светодиод D10 в матрице, мы должны подать напряжение питания на PIN14 и землю на PIN3. Эта ситуация показана на следующем рисунке.

А если нам нужно зажечь светодиод D1, то необходимо подать питание на PIN9 и землю на PIN13. Направление прохождения тока через светодиод D1 в этом случае показано на рисунке ниже.

А теперь перейдем к более сложным вещам при управлении светодиодной матрицей. Предположим, что нам необходимо одновременно зажечь D1 и D10. Для этого мы должны подать питание на PIN9, PIN14 и землю на PIN13, PIN3. Но при этом кроме нужных нам светодиодов зажгутся еще светодиоды D2 и D9 поскольку они подключены к тем же самым общим выводам что и необходимые нам светодиоды. Эта ситуация показана на следующем рисунке.

Чтобы исключить подобную проблему мы должны в каждый момент времени зажигать только один светодиод. К примеру, в момент времени t=0 мс мы включаем светодиод D1, потом при t = 1 мс мы D1 выключаем, а светодиод D2 включаем. Потом в момент времени t = 2 мс D2 выключаем, а D1 снова включаем. И далее продолжаем в том же духе.

Здесь нам на помощь приходит тот факт, что человеческий глаз не может различать частоту большую чем 30 Гц. Поэтому мы должны включать/выключать светодиоды с частотой не менее 30 Гц. В этом случае человеческий глаз будет воспринимать светодиоды непрерывно горящими, хотя на самом деле это не так – светодиоды будут непрерывно включаться и выключаться. Подобная технология называется мультиплексированием.
С использованием этой технологии в каждый момент времени мы будем переключать только одну строку светодиодной матрицы, а далее у нас будет задействован непрерывный цикл по всем 8 строкам. Для человеческого глаза это будет незаметно.

Предположим теперь, что мы хотим отобразить на светодиодной матрице букву “A”.

В этом случае, как уже обсуждалось ранее, мы должны использовать следующую методику.

В момент времени t = 0 мс на PIN09 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на PIN3,PIN4,PIN10,PIN6,PIN11,PIN15 подается земля (на все остальные общие контакты столбцов матрицы в это время подается высокий уровень). То есть зажигаем нужные нам светодиоды в первой строке.

В момент времени t = 1 мс на PIN14 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на все общие контакты столбцов матрицы в это время подается земля. То есть зажигаем нужные нам светодиоды во второй строке.

В момент времени t = 2 мс на PIN08 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на PIN13,PIN3,PIN15,PIN16 подается земля (на все остальные общие контакты столбцов матрицы в это время подается высокий уровень).

В момент времени t = 3 мс на PIN12 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на PIN13,PIN3,PIN15,PIN16 подается земля (на все остальные общие контакты столбцов матрицы в это время подается высокий уровень).

В момент времени t = 4 мс на PIN01 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на все общие контакты столбцов матрицы в это время подается земля.

В момент времени t = 5 мс на PIN07 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на все общие контакты столбцов матрицы в это время подается земля.

В момент времени t = 6 мс на PIN02 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на PIN13,PIN3,PIN15,PIN16 подается земля (на все остальные общие контакты столбцов матрицы в это время подается высокий уровень).

В момент времени t = 7 мс на PIN05 подается высокий уровень (на все остальные общие контакты строк матрицы в это время подается низкий уровень), на PIN13,PIN3,PIN15,PIN16 подается земля (на все остальные общие контакты столбцов матрицы в это время подается высокий уровень).

При использовании данной технологии мы будем непрерывно наблюдать на светодиодной матрице зажженную букву “A”. Это продемонстрировано на приведенном рисунке.

Исходный код программы на языке С (Си) с пояснениями

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

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

2 ответа к “Подключение светодиодной матрицы 8х8 к микроконтроллеру AVR ATmega8”

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

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