Устройство состоит из трёх функциональных узлов: платы клавиатуры и двух плат реле времени № 1 и № 2, которые идентичны по схеме, конструкции и алгоритму работы. Фактически каждая плата представляет собой независимое 4канальное реле времени, которое разработано на базе микроконтроллера семейства AVR ATTINY231320PU и двухстрочного знакосинтезирующего жидкокристаллического индикатора DV16232 FBLYH/R Data Vision. Принципиальная схема платы реле времени №1 представлена на рисунке 1.

Принципиальная схема платы клавиатуры представлена на рисунке 2.

Интерфейс устройства включает в себя элементы управления платы клавиатуры (см. рис. 2), клавиатуру (кнопки S1…S7), светодиоды HL1, HL2, а также элементы контроля и управления реле времени № 1, № 2 (см. рис. 1) – индикаторы DV16232 FBLYH/R и светодиоды HL1.
Кнопки S6, S7 (кнопки без фиксации) на плате подключают клавиатуру устройства (кнопки S1…S5) либо к реле времени № 1, либо к реле времени № 2. В начальном состоянии после подачи питания на устройство включается светодиод HL2 «Р1», кнопки S1…S5 подключены к реле времени № 1 – в этом случае можно задать его параметры. При нажатии на кнопку S7 включается светодиод HL1, светодиод HL2 выключается. Кнопки S1…S5 при этом подключены к реле времени № 2 – соответственно, в этом случае можно задать параметры данного реле. Соединители Х1 счётчиков № 1 и № 2 подключаются соответственно к соединителям Х2, Х3 платы клавиатуры.
Пусть клавиатура (кнопки S1…S5) подключена к реле времени №1. Рассмотрим алгоритм его работы. В устройстве предусмотрены следующие функции: счёт реального времени, индикация текущего времени в 24часовом формате в режиме часы – минуты – секунды, установка текущего времени и его корректировка, установка четырёх интервалов времени, в течение которых нагрузки, подключённые к соединителю Х1, управляются в соответствии с заранее запрограммированным алгоритмом. В реле времени № 1 имеются 4 независимых канала № 1…№ 4, соответственно, количество подключаемых (управляемых) нагрузок равно 4, а во всём устройстве – 8.
Сигнал управления по каждому каналу (лог. 1 или лог. 0) определяется в каждом конкретном случае типом силового ключа (транзистор, симистор, твёрдотельное реле и пр.) или даже конкретной нагрузкой, поэтому условно примем, что при инициализации во все каналы выходного регистра DD2 загружается лог. 1. После этого пользователь устанавливает нужную конфигурацию.
Окончание любого интервала является началом следующего. Границы интервалов в рамках 24часового формата также программируются. Проще говоря, в устройстве можно запрограммировать 3 будильника, в момент срабатывания которых включаются или выключаются 4 нагрузки, подключённые к устройству. Время включения каждого будильника может быть установлено в 24часовом формате в режиме часы – минуты, т.е. в данном формате можно установить любое время срабатывания для каждого будильника или границы 3 интервалов. Например, интервал №1 00:00–6:00; интервал № 2 6:00–12:00; интервал № 3 12:00–24:00.
На дисплее ЖКиндикатора HG1 можно одновременно наблюдать текущее время и границы одного из трёх интервалов, а также состояние 4 нагрузок (лог. 1 или лог. 0.) в данном интервале. Если текущее время совпало с началом какоголибо интервала, включается звуковая сигнализация длительностью 60 с с частотой повторения 2 Гц и в регистр DD2 загружается байт управления нагрузками для данного интервала времени.
Кнопки клавиатуры имеют следующее назначение:
- S1 (Р) – выбор режима работы устройства в замкнутом цикле («Интервал 1», «Интервал 2», «Интервал 3»): после подачи питания устройство сразу переходит в режим «Интервал 1»; каждое нажатие данной кнопки переводит устройство в следующий режим; после интервала 3 следует интервал 1;
- S2 (▲) – увеличение на единицу значения каждого разряда при установке текущего времени часов и временны¢х интервалов, а также принудительное выключение звукового и светового сигналов в начале каждого интервала: инкремент происходит в разрядах временны¢х значений, в разрядах отображения состояния нагрузок происходит изменение состояния лог. 1 на лог. 0 и наоборот;
- S3 (◀) – выбор разряда: при установке значений во всех указанных режимах у выбранного разряда устанавливается курсор; при каждом нажатии на данную кнопку курсор сдвигается на один разряд левее;
- S4 (▶) – выбор разряда: при установке значений во всех указанных режимах у выбранного разряда устанавливается курсор; при каждом нажатии на данную кнопку курсор сдвигается на один разряд правее;
- S («Общ. выкл») – экстренное выключение всех нагрузок, подключённых к устройству, установка сигналов уровня лог. 1 во всех каналах.
В каждой строке ЖКиндикатора HG1 отображается 16 символов. Подробное описание индикатора DV16232 FBLYH/R можно найти в [1]. Разряды дисплея индикатора НG1 в устройстве имеют следующее назначение:
- первая строка:
- разряд 1 отображает десятки часов текущего времени;
- разряд 2 отображает единицы часов текущего времени;
- разряд 3 отображает символ «:» с периодом включения 1 с во всех режимах; во время корректировки или установки текущего времени символ «:» включён постоянно;
- разряд 4 отображает десятки минут текущего времени;
- разряд 5 отображает единицы минут текущего времени;
- разряд 6 отображает символ «:» с периодом включения 1 с во всех режимах; во время корректировки или установки текущего времени символ «:» включён постоянно;
- разряд 7 отображает десятки секунд текущего времени;
- разряд 8 отображает единицы секунд текущего времени;
- разряды 9…12 отображают пробел;
- разряды 13…16 отображают состояние нагрузок № 1–4 в текущем выбранном режиме; если разряд отображает «1» – соответствующая нагрузка включена (или будет включена, когда текущее время будет в границах отображаемого интервала), если разряд отображает «0» – соответствующая нагрузка отключена;
- вторая строка:
- разряд 1 отображает текущий режим работы устройства; если устройство работает в режиме «Интервал 1», в данном разряде индицируется «1», при работе в режиме «Интервал 2» индицируется «2», при работе в режиме «Интервал 3» индицируется «3»;
- разряд 2 отображает пробел;
- разряды 3…7 показывают в часах и минутах (значения разделены символом «:») начало интервала в отображаемом режиме работы устройства;
- разряд 8 отображает пробел;
- разряды 9…13 отображают в часах и минутах (значения разделены символом «:») конец интервала в отображаемом режиме работы устройства;
- разряд 14 отображает пробел;
- разряд 15 отображает флаг RAZ, разрешающий включение нагрузок во всех запрограммированных интервалах;
- разряд 16 отображает курсор (во всех режимах сразу после подачи напряжения питания).
После подачи питания устройство переходит в режим «Интервал 1». В первом разряде второй строки дисплея индицируется «1». Только в данном режиме можно устанавливать или корректировать текущее время. Для этого необходимо кнопками S3 или S4 подвести курсор к изменяемым разрядам текущего времени и кнопкой S2 изменить значение разряда. Для установки начального и конечного значений интервалов необходимо проделать аналогичные операции. Текущее время и флаг RAZ отображаются во всех режимах. Для программирования подключаемых нагрузок необходимо подвести курсор к нужному разряду и кнопкой S2 изменить его значение. Каждое нажатие кнопки S2 в данном случае инвертирует предыдущее состояние разряда. После подачи питания при инициализации в разряды 10…15 первой строки заносится «1» (нагрузки отключены). Для разрешения управления нагрузками необходимо флаг RAZ (отображаемый в 15м разряде второй строки на дисплее индикатора) установить в единицу. Для этого кнопками S3 или S4 следует подвести курсор к данному разряду и кнопкой S2 установить нужное значение. Каждое нажатие кнопки S2 в этом случае инвертирует предыдущее состояние данного разряда. Изменение режима работы (перебор программируемых интервалов времени), как уже упоминалось ранее, осуществляется кнопкой S1.
Таким образом, устанавливая показания каждого разряда индикатора, можно оперативно выставить требуемое текущее время, границы интервалов и каналы управления нагрузками в данных интервалах. Изменить флаг RAZ можно только в режиме «Интервал 1». Границы интервалов можно перепрограммировать. В приведённом на рисунке 2 примере дисплей индикатора отображает текущее время 12 ч 43 мин. 56 с, в режиме работы «Интервал 3» запрограммировано включение нагрузок 3, 4. Однако нагрузки включены не будут, поскольку флаг RAZ не установлен.
Пьезоэлектрический излучатель ВА1 включается с вывода 7 микроконтроллера DD3. Сигнал с выхода 3 микроконтроллера DD3 через резистор R4 с периодичностью 1 с включает световую полосу HL1 в соответствии с алгоритмом работы устройства. С порта РВ микроконтроллер DD3 управляет ЖКиндикатором HG1 и клавиатурой (кнопки S1…S5) через регистр DD1. Для функционирования клавиатуры также задействован вывод 6 микроконтроллера DD3. Резистор R4 – токоограничительный для световой полосы HL1. Питающее напряжение поступает на плату реле с соединителя Х5. Конденсаторы С4…С6 отфильтровывают пульсации в цепи питания +5 В.
ЖКиндикатор HG1 работает в режиме 4разрядной шины данных. Для передачи данных в ЖКиндикатор HG1 задействована старшая тетрада байта, пересылаемого микроконтроллером в порт РВ1. С вывода 8 микроконтроллера DD1 поступает сигнал, информирующий индикатор о типе передаваемых данных (RS=1 – данные, RS=0 – сигнал). С вывода 9 микроконтроллера DD3 поступает стробсигнал, по перепаду которого из 1 в 0 осуществляется запись данных в индикатор. В чтении данных из индикатора необходимость отсутствует, поэтому вывод 5
(R/W) подключён к общему проводнику. С переменного резистора R3 на вывод 3 индикатора поступает напряжение, уровень которого регулирует контраст формируемого индикатором изображения. В двухстрочном дисплее курсор автоматически сдвигается с первой на вторую строку после достижения 40го знакоместа. Если дисплей содержит в строке 16 символов, то для перехода на вторую строку необходимо снова устанавливать адрес ячейки видеопамяти индикатора (DD RAM). Система команд индикатора HG1 приведена в таблице.

Примечание: * – безразличное состояние.
Подробное описание инструкций, а также таблицу знакогенератора индикатора можно найти в интернете или в каталогах фирмыпроизводителя. Следует отметить, что подобные индикаторы со встроенным микроконтроллером – очень гибкие изделия, позволяющие оптимизировать схемотехнический узел базовый микроконтроллер – индикатор и организовывать различные режимы ввода в него информации. Вывод информации из базового микроконтроллера в индикатор легко оформить в виде процедуры. Как видно из схемы, для подключения индикатора задействовано 6 линий порта Р1.
Программное обеспечение микроконтроллера полностью обеспечивает реализацию алгоритма работы электронных часов. Задача «часовой части» программы – формирование точных временны¢х интервалов длительностью 1 с – решена с помощью прерываний от таймера Т/C1 и счётчика на регистре R25 (sek1), который подсчитывает количество прерываний. Когда оно достигает определённого значения, текущее время увеличивается на 1 с.
В памяти данных микроконтроллера по адресам $2…$F организован буфер отображения для вывода информации на дисплей индикатора.
Адресное пространство памяти данных контроллера разбито на следующие функциональные группы:
- $2…$7 – адреса, где хранятся данные о текущем времени в минутах и секундах (регистры R2…R7); эти адреса выводятся на индикатор во всех режимах;
- $80…$83 – адреса, где хранятся данные о времени начала первого или окончания третьего интервала в часах и минутах; эти адреса выводятся на индикатор в режимах «Интервал 1» и «Интервал 3»;
- $84…$87 – адреса, где хранятся данные о времени начала второго интервала в часах и минутах; эти адреса выводятся на индикатор в режимах «Интервал 1» и «Интервал 2»;
- $88…$8B – адреса, где хранятся данные о времени начала третьего интервала; эти адреса выводятся на индикатор в режиме «Интервал 2» и «Интервал 3».
Сразу после подачи питания на выводе 1 микроконтроллера DD1 через RCцепь R2C3 формируется сигнал системного аппаратного сброса микроконтроллера DD3, после чего начинается процесс инициализации программы, в которой настраивается индикатор HG1. При этом происходит очистка его буфера, разрешается отображение курсора. Для уменьшения числа линий ввода, требуемых для записи информации в индикатор, размер шины устанавливается равным 4 бит. В регистр DD2 записываются сигналы уровня лог. 1 (нагрузки выключены). Сразу после инициализации индикатора HG1 на нём индицируется следующее состояние:

Далее начинается отсчёт текущего времени и разрешается работа устройства по приведённому ранее алгоритму. Каждый байт из функциональной группы буфера отображения в подпрограмме обработки прерывания таймера выводится в порт PB микроконтроллера DD3. Номер группы или режим работы записан в регистре R16 (regim). В процессе обработки подпрограммы прерывания происходит опрос клавиатуры. Старшая тетрада выводимого при этом в регистр DD1 байта для клавиатуры представляет собой код «бегущий ноль». После записи данного байта в регистр DD1 микроконтроллер DD3 анализирует сигнал на входе 6 (РD2).
В рамках вышеуказанной подпрограммы при любой нажатой кнопке на входе 6 микроконтроллера присутствует лог. 0. Таким образом, каждая кнопка клавиатуры привязана к своему биту в старшей тетраде байта данных для клавиатуры.
Посредством нажатия на кнопку S1 инкрементируется регистр R16 и тем самым задаётся один из ранее описанных девяти режимов работы. На регистре R21 (KURSOR) реализован счётчик, который определяет сдвиг курсора на дисплее индикатора HG1 в этой же подпрограмме. Посредством нажатия кнопки S3 счётчик инкрементируется, курсор на дисплее индикатора сдвигается на разряд влево. При нажатии на кнопку S4 счётчик декрементируется, курсор на дисплее индикатора сдвигается на разряд вправо. При нажатии на кнопку S2 устанавливается флаг, разрешающий инкрементировать разряд, выбранный кнопками S2, S3. В основной программе происходят отсчёт текущего времени, установка времени включения будильников, сравнение текущего времени с временем срабатывания будильников, включение световых и звуковых сигналов, задание значений текущего времени, будильников и байта нагрузок. Байт нагрузок BTOUT2 выводится в регистр DD2. Разработанная программа на ассемблере занимает почти всю память программ микроконтроллера DD3 – порядка 2 Кбайт. Общий вид реле времени представлен на рисунке 3.

В реле времени использованы резисторы С233Н0.125, но подойдут и любые другие с такой же мощностью рассеивания и погрешностью 5%, резистор R3 типа СП52ВА и любой другой такого же номинала. Конденсаторы С7 типа К5035. Остальные конденсаторы типа К1017. Движковый переключатель SB1 для включения подсветки индикатора HG1 расположен на печатной плате устройства. Конденсаторы С4...С6 расположены у корпусов микросхем DD1…DD3 и между цепью +5 В и общим проводником. Световая полоса HL1 – КВ2300EW красного цвета. В устройстве отсутствуют какие либо настройки и регулировки, кроме регулировки контрастности индикатора HG1 переменным резистором R3, и если монтаж выполнен правильно, то оно начинает работать сразу после подачи напряжения питания. Вращением движка в переменном резисторе R3 выставляется приемлемый контраст изображения индикатора HG1.
Литература
© СТА-ПРЕСС
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

