Часы на PIC16F877A

Представляю вашему вниманию мой вариант электронных часов на микроконтроллере PIC16F877A.

Принципиальная схема часов

На рисунке 1 изображена принципиальная схема часов. Ядром схемы является микроконтроллер PIC16F877A. Микроконтроллер работает по алгоритму, изображенному на рисунке 2. Стоить отметить, что алгоритм весьма условный и отображает два основных цикла работы прибора, это:

  1. Цикл настойки (настройка секунд, минут и часов);
  2. Цикл отображения часов (работа часов).

Алгоритм работы часов

Код программы написан на языке ассемблер, смотреть листинг 16F877ATEMP.ASM.

Данные часы собраны на демонстрационной (отладочной) плате фирмы Microchip PICDEM 2 PLUS. Схему демонстрационной платы PICDEM 2 PLUS можно найти на сайте [1].

Полный цикл внутрисхемного программирования и отладки микроконтроллера PIC16F877A был осуществлён при помощи MPLAB IDE v8.15 (интегрированная среде разработки), компилятор MPASM v5.22 (входит в MPLAB IDE v8.15) и MPLAB ICD 2 (внутрисхемный отладчик — «Дебагер»). Для тех, кто не располагает средствами приведёнными выше, а имеет свою программу для работы с *.HEX файлами и иной программатор, можно в соответствующем проекте найти файл 16F877ATEMP.HEX. Техническую спецификацию микроконтроллера можно найти на сайте [1] и [2].

Микроконтроллер DD1 имеет функциональные выводы RC4, RC5 и RD2 – RD7, которые служат для ввода и вывода информации. Тактовыми кнопками SB1 «Выбор» и SB2 «Ввод» происходит настройка часов. Стоит отметить, что микроконтроллер различает три состояния тактовой кнопки (смотреть листинг):

  1. Не нажата;
  2. Нажата кратковременно (менее 2 секунд);
  3. Нажата и удерживается (более 2 секунд). Если кнопка удерживается более 8 секунд, то происходит переполнение счётчика TMR1 и сбой в работе генератора секунд, после чего нужно заново настраивать часы.

Тактовые кнопки SB1 и SB2 подключены к выводам микроконтроллера RC4 и RC5 через токоограничивающие резисторы R4 и R5. В отжатом положении тактовых кнопок SB1 и SB2 резисторы R6 и R7 имитирует низкий логический уровень (пассивное состояние цепи ввода информации). Микроконтроллер DD1 не имеет функции принудительного сброса, вывод для сброса подключен через резистор R1 к положительному потенциалу питания. Стоить отметить, что если вы повторяете мою работу на демонстрационной плате PICDEM 2 PLUS, то там есть тактовая кнопка для сброса микроконтроллера. Для генерации тактовой частоты используется кварцевый резонатор QZ1 с ёмкостями C1 и C2. Прибор может эксплуатироваться в диапазоне температур от –20 °С до +70 °С.

Для отображения информации используется жидкокристаллический дисплей HG1. Техническую спецификацию дисплея можно найти на сайте [3]. Он имеет контроллер, в котором реализована функция знакогенерации. Отображает две строки по шестнадцать символов в каждой. Управление дисплеем осуществляется через выводы микроконтроллера RD2 – RD7. Загрузка данных происходи полубайтами, через выводы RD4 – RD7. «Защёлка» — RD3. Выбор регистра сигнала формируем на выводе RD2. Резисторами R2 и R3 устанавливаем контрастность дисплея HG1. Стоит отметить, что данный дисплей HG1 имеет светодиодную жёлто-зелёную подсветку на схеме выводы A LED (15) и K LED (16) можно подключить через токоограничивающий резистор к питанию после стабилизации.

Для точного счёта времени модулем TMR1 был использован внешний тактовый генератор на базе кварцевого резонатора QZ2 с ёмкостями C3 и C4. Кварцевый резонатор QZ2 с ёмкостями C3 и C4 подключен к выводам T1OSO и T1OSI. Точность хода времени 1 секунда. Максимальное значение подсчитанного времени 23 часа 59 минут 59 секунд, далее происходит обнуление и подсчёт времени начинается заново.

Прибор запитывается от переменного или постоянного источника напряжения, подключаемого к разъему X1. Номинальное напряжение источника питания 9 – 15 В. Номинальный ток источника питания 0.5 А. Для стабилизации питания используется обычная схема из диодного моста VD1, линейного стабилизатора DA1, фильтрующих конденсаторов C5 – C9.

После включения прибора (подключению к источнику питания) происходит переход в основной режим работы, где на дисплее HG1 виден ход часов (до настройки виден отсчёт секунд). Для настройки часов нужно перейти в режим настройки секунд, для этого нужно нажать любую тактовую кнопку SB1 «Выбор» или SB2 «Ввод». После нажатия кнопки на дисплее HG1 отображаются часы и взятые в прямоугольные скобки секунды. После нажатия тактовой кнопки SB2 «Ввод» происходит инкриминирование регистра секунд и на дисплее HG1 видно приращение секунд на единицу. Для перехода к настройки минут нужно кратковременно нажать тактовую кнопку SB1 «Выбор»,на дисплее HG1 будут видны часы у которых минуты взяты в квадратные скобки. А аналогичным образом настраиваются минуты как и секунды. Далее происходит переход к настройки часов, а затем и секунд, вот такой цикл. Для выхода из режима настройки нужно удерживать более 2 секунд тактовую кнопку SB1 «Выбор».

В данном устройстве можно заменить следующие детали. Микроконтроллер DD1 из серии PIC16F877A-I/P-xxx с рабочей тактовой частотой 20 МГц в корпусе DIP40. Дисплей HG1 подойдет любой из серии WH1602x. Стабилизатор напряжения DA1 отечественный КР142ЕН5А (5 В, 1.5 А). Диодный мост VD1 на рабочее напряжение не меньше 25 В и ток не меньше 0.5 А. Разъём питания X1 аналогичный указанному на схеме с центральным контактом d=2.1 мм. Неполярные конденсаторы С5, С8 и С9 номиналом 0.01 – 0.47 µF x 50 V. Электролитические конденсаторы С6 и С7 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме.

Фото часов

Думаю, что часы на PIC16F877A послужат для Вас отправной точкой для создания более сложного прибора, например, часов с несколькими будильниками, таймерами или коммутаторами нагрузки и т.д. Желаю удачи!

Ссылки в интернете

Название сайтов

Адреса

[1]

Microchip Technology Inc. — a Leading Provider of Microcontroller and Analog Semiconductors

http://www.microchip.com/

[2]

ООО Микро-Чип — микроконтроллеры и источники питания

http://www.microchip.ru/

[3]

Winstar Display Co., Ltd.

http://www.winstar.com.tw/main.php

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 МК PIC 8-бит PIC16F877 1
DA1 Линейный регулятор L7805AB 1
VD1 Диодный мост 2W10 1
С1-С4 Конденсатор 33 пФ 4
С5, С8, С9 Конденсатор 0.1 мкФ 3
С6 Электролитический конденсатор 220 мкФ 25 В 1
С7 Электролитический конденсатор 220 мкФ 10 В 1
R1, R3 Резистор 10 кОм 2
R2 Резистор 300 Ом 1
R4, R5 Резистор 470 Ом 2
R6, R7 Резистор 4.7 кОм 2
QZ1 Кварцевый резонатор 20 МГц 1
QZ2 Кварцевый резонатор 32.768 кГц 1
HG1 LCD-дисплей WH1602A-YYK-CT 1
SB1, SB2 Тактовая кнопка SWT-20-7 2
X1 Разьем для блока питания DS-261B 1