Konstantinos Bellosstyle
Здесь представлены часы. Это не просто очередные часы, они отображают время в числовом и двоичном форматах. Кроме того, в них есть термометр и гигрометр. Это не простой гигрометр, он также показывает абсолютную влажность (г/м3).
Схема
Микроконтроллер
В основе схемы микроконтроллер PIC16F917 со встроенным тактовым генератором частотой 4 МГц. Также я сделал программатор для последовательного порта, и, таким образом, могу программировать часы, используя DL4YHF WinPic.
Загрузить исходный код в .asm
Часы
Я использовал микросхему часов реального времени Maxim DS1305. Для резервного питания микросхемы используется суперконденсатор емкостью 0.22 Ф. Он прекрасно проработал 4 недели. По этой причине я не ввел возможности ручной установки времени, но вы сами сможете сделать небольшие корректировки. Как только вы нажмете на кнопку, секунды изменятся на 30, не влияя на минуты, часы и все остальное. Подпрограмма находится в строках 1878-1887 "sec30".
Вы устанавливаете время, когда программируете PIC. Вам придется программировать контроллер дважды. Первый раз без строки 91 (goto rdtime), таким образом выполнятся подпрограммы setDS и settime.
Подпрограмма setDS устанавливает управляющий регистр и регистр заряда резервного источника. Подпрограмма settime устанавливает время. После этого, вы добавляете строку 91 (goto rdtime) и перепрограммируете часы заново. Теперь эти подпрограммы больше не выполняются. Микросхема часов реального времени хранит установки и время, как минимум, 28 дней. Подпрограммы DST3 и DST10 предназначены для перевода часов на зимнее/летнее время. Контрольным регистром является flag, 1. Подпрограммы расположены в строках 434-460. В последнее воскресенье марта, в 2:00 часы переводятся на 3:00. В последнее воскресенье октября, в 2:00, часы переводятся на 1:00. Я установил часы реального времени на 12 часовой режим, светодиоды отображают время также в 12 часовом режиме, а дисплей в 24 часовом.
Температура - Влажность
Я использовал цифровой датчик влажности и температуры Sensirion SHT11. Я купил его вместе платой, включающей подтягивающий резистор и разделяющий конденсатор.
Измерения производятся каждые 10 секунд.
Когда значение секунд становится равным 00, 20 и 40, устройство измеряет температуру и высчитывает температуру и абсолютную влажность (г/м3 воздуха).
Когда значение секунд становится равным 10, 30 и 50, устройство измеряет влажность и вычисляет относительную влажность (%).
Контрольным регистром является flag, 0. Контрольная подпрограмма находится в строках 464-714.
Подпрограмма измерения температуры находится в строках 477-514 "measTEMP" и строках 625-714 "measure".
Подпрограмма вычисления температуры находится в строках 1793-1820 "calcTEMP".
Подпрограмма измерения относительной влажности находится в строках 560-590 "measRH" и строках 625-714 "measure".
Подпрограмма определения абсолютной влажности находится в строках 515-555 "measAH".
Подпрограмма вычисления относительной влажности находится в строках 717-1470 "calcRH".
Подпрограмма вычисления абсолютной влажности находится в строках 1473-1728 "calcAH".
LCD дисплей
Я использовал китайский LCD дисплей 24×2 символа с подсветкой, а управлял им с помощью сдвигового регистра TI 74164.
Светодиодный дисплей
Я использовал яркие светодиоды. 7 зеленых с резисторами 8.2 кОм, для секунд, 7 белых с резисторами 5.6 кОм для минут и 5 синих с резисторами 560 Ом для часов. Максимальный ток светодиода не превышает 17 мА, поэтому они подключены без транзисторов.
Печатная плата
Печатная плата разработана в программе DipTrace. Загрузить файлы DipTrace можно здесь.
![]() |
![]() |