Представляю вашему вниманию мой вариант электронных часов на микроконтроллере PIC16F877A.
На рисунке 1 изображена принципиальная схема часов. Ядром схемы является микроконтроллер PIC16F877A. Микроконтроллер работает по алгоритму, изображенному на рисунке 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 «Ввод» происходит настройка часов. Стоит отметить, что микроконтроллер различает три состояния тактовой кнопки (смотреть листинг):
- Не нажата;
- Нажата кратковременно (менее 2 секунд);
- Нажата и удерживается (более 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 | |||