На этом занятии мы собираемся разработать светодиодный дисплей 8x8 со светодиодной матрицей 8x8 и микроконтроллер ATmega8, который может отображать алфавиты или имена. Типичная светодиодная матрица 8x8 показана ниже:
Светодиодная матрица 8x8 содержит 64 светодиода (Light Emitting Diodes), которые расположены в виде матрицы, отсюда и название светодиодная матрица. Эти матрицы могут быть изготовлены путем подключения 64 светодиодов; однако этот процесс занимает много времени. Сегодня они доступны в компактных формах, как показано на рисунке. Эти компактные модули доступны в разных размерах и во многих цветах. Их можно выбрать по удобству.
Стоимость модуля такая же, как у 64 светодиодов, поэтому любителю работать с ним проще всего. Конфигурация PIN-кода модуля показана на рисунке. PIN-коды должны быть точно такими, как показано на рисунке, чтобы избежать ошибок. Мы подробно обсудим конфигурацию внутренней схемы модуля в описании.
Составные части
Аппаратное обеспечение: ATMEGA8, блок питания (5 В), AVR-ISP PROGRAMMER, конденсатор 100 мкФ (подключен к источнику питания), резистор 1 кОм (8 шт.).
Софт: Atmel studio 6.1, прогисп или flash magic.
Принципиальная схема и работа
Соединения, выполняемые между 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 светодиодного модуля
Схема матричного дисплея 8x8 LED показано на рисунке ниже.
В матрице размещено 64 светодиода. Итак, у нас есть 8 столбцов и 8 строк, как показано на рисунке. В этих строках и столбцах собраны все положительные клеммы в ряду. В каждой строке есть одна общая положительная клемма для всех 8 светодиодов в этой строке. Это показано на рисунке ниже,
Итак, для 8 рядов у нас есть 8 общих положительных выводов, рассмотрим первый ряд. Как видно на рисунке, светодиоды от D1 до D8 имеют общий положительный вывод и выведены из МОДУЛЯ СВЕТОДИОДА как PIN9.
Следует видеть, что не все общие положительные моменты строк не выводятся из МОДУЛЯ СИД должным образом. В каждом случае на общих клеммах наблюдается очень неравномерность. Об этом следует помнить при подключении терминала.
Скажем, если мы хотим, чтобы один или все светодиоды в первом РЯДЕ матрицы были ВКЛЮЧЕНЫ, то мы должны запитать PIN9 МОДУЛЯ СИД МАТРИЦЫ, а не PIN0.
Скажем, если мы хотим, чтобы один или все светодиоды в третьем РЯДЕ матрицы были ВКЛЮЧЕНЫ, мы должны запитать PIN8 МОДУЛЯ СИД МАТРИЦЫ, а не PIN2.
Поэтому, когда мы хотим, чтобы один или все светодиоды в РЯДЕ были ВКЛЮЧЕНЫ, должен быть запитан соответствующий вывод LED MODULE.
Это еще не конец, просто оставив власть, ROWS ничего не дает. Нам нужно заземлить другой конец. Об этом мы поговорим ниже.
Теперь в этом случае мы игнорируем общие положительные строки и сосредотачиваемся на общих отрицательных столбцах.
Таким образом, в этом модуле все отрицательные клеммы первого столбца соединены с PIN13. Это показано на рисунке ниже.
Здесь также наблюдается сбой в ВЫХОДЕ ПИН-кода модуля. Общий минус светодиодов первого столбца выведен на PIN13. Общий минус светодиодов второго столбца выведен на PIN3.
При подключении следует обращать внимание на контакты. Теперь, если какой-либо один или все светодиоды в первом столбце должны быть заземлены, необходимо заземлить КОНТАКТ 13 МАТРИЧНОГО МОДУЛЯ. Таким образом проходят все остальные семь общих отрицательных столбцов. Когда оба корпуса собраны вместе, мы сталкиваемся со схемой, показанной ниже,
Схема выше представляет собой полную внутреннюю схему светодиодного МОДУЛЯ. Скажем, если мы хотим включить светодиод D10 в матрице, нам нужно запитать PIN14 модуля и заземлить PIN3 на модуле. При этом D10 включится. Это показано на рисунке ниже. Это нужно сначала проверить, чтобы МАТРИЦА все знала по порядку.
Скажем, если мы хотим включить D1, нам нужно запитать PIN9 матрицы и заземлить PIN13. При этом загорится светодиод D1. Текущее направление для этого случая показано на рисунке ниже.
Теперь перейдем к сложной части, представьте, что мы хотим включить и D1, и D10 одновременно. Таким образом, мы запитываем оба PIN9, PIN14 и заземляем оба PIN13, PIN3. При этом у нас будут D2 и D9, а также D1 и D10. Это потому, что у них общие клеммы. Поэтому, если мы хотим повернуть светодиоды по диагонали, мы будем вынуждены включать все светодиоды по пути. Это показано на рисунке ниже.
Поэтому, чтобы устранить эту проблему, мы будем включать только один светодиод за раз. Скажем, при t = 0 м SEC светодиод D1 горит. При t = 1 м SEC светодиод D1 отключается, а светодиод D2 включается. Опять же, при t = 2 м сек. Светодиод D2 выключается, а светодиод D1 включается. Это продолжается.
Уловка в том, что человеческий глаз не может уловить частоту более 30 Гц. То есть, если светодиод постоянно горит и гаснет с частотой 30 Гц или более. Глаз видит, что светодиод постоянно включен. Тем не менее, это не так. Светодиод будет постоянно включаться и выключаться. Этот метод называется мультиплексированием.
Используя мультиплексирование, мы будем поворачивать только одну строку за раз, а 8 строк будут непрерывно циклически перемещаться. Это визуализируется невооруженным глазом как полностью включенная матрица.
Теперь предположим, что мы хотим отобразить «A» на матрице.
Как было сказано, мы сразу же включим одну строку, При t = 0 м SEC, PIN09 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
При t = 1 м SEC, PIN14 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКОЕ))
При t = 2 м SEC, PIN08 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
При t = 3 м SEC, PIN12 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКИЙ)
При t = 4 м SEC, PIN01 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКОЕ))
При t = 5 м SEC, PIN07 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКОЕ))
При t = 6 м сек., PIN02 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКОЕ)
При t = 7 м SEC, PIN05 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
На этой скорости дисплей будет постоянно отображать символ «A». Это показано на рисунке.
Вот как все символы отображаются на дисплее. После правильного подключения схемы, как показано на принципиальной схеме. Мы можем напрямую дать контроллеру инструкции для выполнения мультиплексирования в упорядоченном виде для отображения имени.