Часы на PIC16F877A

Представляю вашему вниманию мой вариант электронных часов на микроконтроллере 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-битPIC16F8771
    DA1
    Линейный регуляторL7805AB1
    VD1
    Диодный мост2W101
    С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-CT1
    SB1, SB2
    Тактовая кнопкаSWT-20-72
    X1
    Разьем для блока питанияDS-261B1
    Добавить все

    Скачать список элементов (PDF)

    Прикрепленные файлы:

    Добавить комментарий

    Ваш адрес email не будет опубликован.