Плату с узлами A5-A8 изготавливают по чертежу, показанному на рис. 7, а детали на ней располагают согласно рис. 8. На обеих платах позиционные обозначения относящихся к узлам A1-A8 деталей (в том числе разъёмов) снабжены префиксами, совпадающими с номером узла, например, 8DD1. Разъёмы X5, X11 и 1X1-8X1 размещены на сторонах плат, противоположных тем, где установлены остальные детали. Так сделано для удобства их непосредственной стыковки с разъёмами, находящимися на платах светодиодных матриц. Чертёж этих плат (их две одинаковые) приведён на рис. 9. Разъёмы на них установлены на стороне, противоположной светодиодам. На всех платах используются однорядные разъёмы PBS (гнёзда) и PLS (штыри).
Рис. 7.
Рис. 8.
Рис. 9.
Исключение представляют двухрядные X1, X2 (PLD-6) и X10 (PBD-4) на платах управления.
Коды символов, принятые от источника информации, программа микроконтроллера DD1 сохраняет в ОЗУ, а затем анализирует и отыскивает в таблице знакогенератора соответствующие изображению нужного символа коды для вывода на дисплей. Фрагмент знакогенератора, состоящего из десяти блоков по 16 символов, приведён в табл. 2. Каждый символ описывается пятью (по числу колонок матрицы) восьмиразрядными (по числу рядов матрицы) двоичными кодами. Единицы в этих кодах соответствуют включённым светодиодам, нули - выключенным.
Таблица 2
Символ | Код символа, HEX | Адрес в блоке | Дисплейные коды | |
BIN | HEX | |||
@ | 40 | 0 1 2 3 4 | 01111100 10000010 11110010 10010010 01100100 | 7С 80 F2 92 64 |
А | 41 | 5 6 7 8 9 | 01111110 10001000 10001000 10001000 01111110 | 7Е 88 88 88 7Е |
В | 42 | 10 11 12 13 14 | 11111110 10010010 10010010 10010010 01101100 | FE 92 92 92 6С |
С | 43 | 15 16 17 18 19 | 01111100 10000010 10000010 10000010 01000100 | 7С 82 82 82 44 |
Программа переписывает дисплейные коды символа в ячейки ОЗУ, где они временно хранятся перед выводом на дисплей. Аппаратный модуль SPI микроконтроллера поочерёдно вдвигает эти коды в последовательные регистры микросхем 74HC595 тех узлов A1-A8, для которых они предназначены. Отсюда они переносятся в их регистры хранения сигналами, формируемыми на выходе PB2 микроконтроллера.
Общее число колонок светодиодов в восьмиразрядном дисплее - 5x8=40. Обновлять информацию на нём необходимо с частотой не менее 100 Гц, иначе возможно мерцание. Таким образом, на запись информации в одну колонку может быть израсходовано не более 1/100/40=0,00025 с - это 4000 периодов тактовой частоты микроконтроллера, равной 16 МГц. Запросы прерывания программы приблизительно с таким периодом генерирует восьмиразрядный таймер микроконтроллера с предварительным делителем тактовой частоты на 64. Коэффициент пересчёта таймера задан равным 62. Фактическая частота обновления информации получилась равной 16000000/64/62/40=100,8 Гц.
Всякий раз, когда выведенную на дисплей информацию нужно изменить, её источник должен передать в модуль по интерфейсу TWI пакет из адресного и десяти информационных байтов. Адресный байт должен содержать адрес модуля с нулём (признаком записи) в младшем двоичном разряде. Первые восемь информационных байтов содержат коды символов, которые должны быть выведены на дисплей в порядке слева направо. Старшие четыре разряда девятого байта должны содержать число, на 7 единиц большее номера мигающего знакоместа на дисплее (номера отсчитываются от 1 до 8 слева направо). При нулевом значении этого байта мигание выключено. Период мигания задаёт число в десятом байте, каждая его единица соответствует 50 мс.
Модуль дисплея подтверждает источнику получение правильного адреса и следующих за ним девяти информационных байтов. Приём десятого информационного байта не подтверждается, что служит признаком завершения приёма пакета. После этого модуль вновь готов к приёму очередного пакета. До его получения на дисплей выводится ранее полученная информация.
Обработка ошибок приёма в программе микроконтроллера не производится. Если принят код символа, отсутствующего в знакогенераторе, на соответствующее знакоместо будет выведен вопросительный знак в прямоугольной рамке. Команда очистки дисплея не предусмотрена. Вместо неё следует передавать информационный пакет с восемью символами пробела ($20).
Для исключения "зависания” модуля дисплея в его микроконтроллере активирован сторожевой таймер. Если в течение 32 мс подпрограмма управления дисплеем ни разу не была вызвана, происходит принудительная установка микроконтроллера в исходное состояние и выполнение программы начинается заново, как при включении питания.
Внешний вид модуля дисплея без корпуса со стороны светодиодов показан на рис. 10, а со стороны установки микросхем - на рис. 11. Перед первым включением собранной конструкции необходимо установить минимальное значение напряжения Uярк. Узел автоматического регулирования яркости настраивают в зависимости от условий работы дисплея.
Рис. 10.
Рис. 11.
Корпус модуля - от видеопроигрывателя фирмы Philips. Линии SDA и SCL подключены к модулю через переключатель на два направления и два положения. В одном положении информация поступает от любого внешнего источника через установленный на корпусе модуля четырёхконтактный разъём. Во втором - от находящихся в том же корпусе электронных часов, собранных по схеме, изображённой на рис. 12.
Рис. 12.
Часы построены на микроконтроллере ATmega8535-16PU (DD1) и микросхеме DS1307 (DD2) - часах реального времени с интерфейсом I2C. Для связи с микросхемой DD2 микроконтроллер DD1 использует ту же двухпроводную шину, по которой он передаёт информацию в модуль дисплея. Но адреса микросхемы ($D0) и модуля ($A0) на шине разные, что даёт микроконтроллеру часов возможность различать их. Позаботиться о том, чтобы адреса не совпадали, нужно и при соединении модуля дисплея с другими источниками информации.
Во FLASH-память микроконтроллера часов заносят коды из файла MasterDevice.hex, а конфигурацию программируют согласно табл. 3. Как и в табл. 1, состояния разрядов, отличающиеся от установленных изготовителем, выделены цветом.
Таблица 3
Разряд | Знач. | Разряд | Знач. |
S8535C | 1 | BODLEVEL | 1 |
WDTON | 1 | BODEN | 1 |
SPIEN | 0 | SUT1 | 1 |
С КОРТ | 1 | SUT0 | 1 |
EESAVE | 1 | CKSEL3 | 1 |
BOOTSZ1 | 0 | CKSEL2 | 1 |
BOOTSZ0 | 0 | CKSEL1 | 0 |
BOOTRST | 1 | CKSEL0 | 1 |
Примечание.0 - разряд запрограммирован, 1 - разряд не запрограммирован.
В часах имеются семь кнопок управления. Их назначение:
SB1 - установка микроконтроллера в исходное состояние, перезапуск программы;
SB2 - переход в режим установки времени и даты. На дисплей кратковременно выводится надпись "Время". Затем выводится название регистра, содержимое которого предстоит изменить, и записанное в нём значение;
SB3 - переход из режима отображения текущего времени в режим отображения даты. В режиме установки времени и даты - переход к регистру с меньшим адресом, что отображается на дисплее;
SB4 - переход из режима установки времени и даты в режим отображения текущего времени. При нажатии на эту кнопку запускается внутренний генератор часов, счёт секунд начинается с нуля. На дисплей кратковременно выводится надпись "Готово";
SB5 - запись в регистр нового значения, на дисплей кратковременно выводится надпись "Запись";
SB6 - увеличение значения для записи в выбранный регистр, сама запись происходит при нажатии на кнопку SB5;
SB7 - переход из режима отображения даты в режим отображения текущего времени. В режиме установки времени и даты - уменьшение значения для записи в выбранный регистр, сама запись происходит при нажатии на кнопку SB5.
Программы микроконтроллеров модуля дисплея и часов можно скачать здесь
Автор: Н. Салимов, г. Ревда Свердловской обл.