ГлавнаяРегистрацияВход Сайт Сокола Сергея Среда, 01.05.2024, 12:42
  Каталог статей Приветствую Вас Гость | RSS

 
 
Главная » Статьи » Мои статьи

Часы/будильник/календарь на AT89C2051
Статью эту я решил написать в приступе ностальгии по тем временам, когда я только начинал заниматься контроллерами (а было это два года назад). Тогда у меня в руках был только контроллер AT89C2051 и цикл статей небезызвестного нынче черниговского автора С.М. Рюмика "Микроконтроллеры. Шаг n", опубликованный в журнале Радиоаматор за 2004 год.
Вдохновленный идеями о создании простых и функциональных устройств на микроконтроллерах (МК), я закупил их около десятка штук и решил, что буду творить. Тут меня подстерегал первый неприятный сюрприз. Оказывается, если контроллер часто переставлять из программатора в устройство и обратно, то он имеет свойство выходить из строя (то не так подогнул вывод и он отломился, то не той стороной всунул контроллер в панельку и он сгорел, то на программаторе вместо 5 вольт оказалось 7, что также приводит, как оказывается к получению "хладного трупа").
Угробив таким образом 5 микросхем, я задумался о целесообразности использования данного семейства микроконтроллеров, и решив, что выбрасывать деньги на ветер не резон, перешел на платформу AVR, чему теперь очень рад.
Но эти 5 жертв оказались не совсем напрасными, я таки собрал и запрограммировал устройство, которое хочу теперь представить на ваш суд. Кстати, устройство это у меня непрерывно работает эти два года, подтверждая первый закон Ньютона, что тело находится в состоянии покоя или равномерного движения, пока на него не действуют внешние силы:)
Но мы отвлеклись, прошу простить меня за этот экскурс в историю, приступим к делу.
Принципиальная электрическая схема часов представлена ниже

Прошу простить мне некоторые огрехи в схемотехническом решении, сейчас бы я кое-какие вещи сделал по-другому, но, повторюсь, это моя первая самоделка, и я решил привести ее как есть. На все возражения со стороны внимательных читателей могу привести один железный довод: оно же работает!
Внешний вид часов представлен на следующей фотографии

Я специально оставил их без корпуса, так сказать, на память о том, как я раньше паял. К сожалению, фотографию обратной стороны привести не могу, стыдно... Ну да ладно, все мы были новичками.
Так сказать, сердцем (да и мозгами) устройства является вышеупомянутый микроконтроллер АТ89С2051 DD1. Питание устройства осуществляется от источника постоянного тока напряжением 4-6 В. Для стабилизации напряжения была применена цепочка, состоящая из стабилитрона VD1 на 3,3 В и резистора R15, задающего рабочий режим стабилитрона. Сопротивление резистора R15 нужно подобрать такой, чтобы ток стабилитрона был около 20 мА. Конденсатор С1 емкостью 0,1 мкФ служит для фильтрации высокочастотных помех. Конденсатор С2 емкостью 0,33 мкФ обеспечивает формирование импульса начального сброса микроконтроллера.
Тактирование микроконтроллера осуществляется от кварцевого резонатора ZQ1 частотой 12 МГц. Конденсаторы С3 и С4 емкостью 30 пФ также входят в частотозадающую цепь.
Индикация времени осуществляется при помощи двух двухразрядных семисегментных индикаторов с общим анодом HG1 и HG2 типа BD-E326RI. Можно использовать любые аналогичные или заменить их на один четырехразрядный с соответствующей переделкой печатной платы, но в то время у меня в наличии были только такие. Все сегменты индикаторов параллельно подключены к порту Р1 микроконтроллера DD1 через токоограничительные резисторы R1-R8.
Динамическая индикация осуществляется через ключи на транзисторах VT1-VT4 структуры p-n-p, например, КТ361. Резисторы R9-R12 задают ток базы транзисторов.
Сигнал будильника образуется при помощи зуммера BZ1, рассчитанного на 3 В и без встроенного генератора. Напряжение на зуммер подается через ключевой транзистор VT5. Резистор R13 задает ток базы транзистора, резистор R14 задает напряжение на зуммере, после недолгих экспериментов я вообще заменил его перемычкой :)
Кнопки SB1 и SB2 служат для управления часами. Кнопка SB1, она же "Установка", она же "левая", служит для установки времени часов, срабатывания будильника и календаря. Кнопка SB2 - "Режим", "правая" служит для изменения режима отображения - часы, календарь, будильник, секунды.
Теперь, когда все элементы описаны, перейдем к описанию работы в целом, как ее видит пользователь. При включении питания На индикаторе появляется надпись "0. 00", при этом точка мигает с периодичностью 1 секунда. При нажатии на левую кнопку надпись приобретает вид "0. 0.0". Точка посреди числа показывает, что именно это число будет изменяться вручную, причем эта точка не мигает. Теперь при нажатии на правую кнопку начнется изменение минут (плюс одна на каждое нажатие, режима непрерывного изменения при нажатой кнопке нет - не хватило памяти). При очередном нажатии на левую кнопку точка сместится к установке часов: ".0. 00". При последующем нажатии мы переходим к календарю, надпись имеет вид "1.  1". Обратите внимание, что при этом мигающая точка исчезает. В календаре слева находится число, справа номер месяца, причем первым по очереди выставляется именно число. При дальнейшем нажатии мы снова видим надпись "0 0.0". Это установка будильника. Отличить ее от часов можно по отсутствующей мигающей точке. Здесь никаких сюрпризов нет, что выставили, во столько и проснулись. После установки минут и часов будильника и последующего нажатия левой кнопки часы переходят в обычный режим, что можно увидеть по оставшейся единственной мигающей точке между часами и минутами. Если в обычном режиме работы нажать на правую кнопку, то осуществляется выбор режима индикации в такой последовательности: календарь - будильник - секунды - часы - и т.д. Для включения будильника необходимо нажать обе кнопки одновременно, при этом индикацией включенного будильника служит горящая точка после последнего разряда, например "12. 35." Сигналом будильника служит прерывистый противный звук частотой около 100 Гц, так что хочется скорее проснуться и выключить это безобразие. Кстати, для прекращения сигнала будильника необходимо нажать любую кнопку.
В таблице для удобства приведен перечень используемых деталей
 Обозначение Номинал
 R1, R2, R3, R4, R5, R6, R7, R8
 220...330 Ом, 0,125 Вт
 R9, R10, R11, R12, R13
 1,5...2,7 кОм, 0,125 Вт
 R14 0...20 Ом, 0,5 Вт
 R15 150...200 Ом, 0,5 Вт
 С1 0,068...0,15 мкФ
 С2 0,1...0,33 мкФ
 С3, С4
 20...39 пФ
 VD1КС133А или 3V3
 ZQ112 МГц
 DD1AT89C2051-24PU
 VT1, VT2, VT3, VT4
КТ361 (или аналогичные структуры
p-n-p с Iкmax > 20 мА)
 HG1, HG2
BD-E326RI (или аналогичные
с общим анодом)
 BZ1Пищалка на 3 В без генератора
 SB1, SB2
Тактовые типоразмера 301

Вот, в принципе и все. Схему, печатную плату в формате DipTrace, прошивку с подробно комментированными исходниками можно скачать здесь. Если у вас возникнут вопросы, задавайте их на форуме или здесь в виде комментариев к статье :)
Удачного конструирования!
Категория: Мои статьи | Добавил: mimino (24.07.2010)
Просмотров: 29329 | Комментарии: 79 | Теги: динамическая индикация, календарь, AT89C2051, будильник, Часы | Рейтинг: 3.8/4
Всего комментариев: 331 2 »
33 avenue17  
0
Я извиняюсь, но, по-моему, Вы допускаете ошибку. Давайте обсудим. Пишите мне в PM, пообщаемся.

32 DavidRaw  
0
Это забавная фраза

31 Creps  
0
Здравствуйте. У меня просьба к Вам, опубликуйте схему часов с секундами, температурой, регулировка свечения индикатора (день, ночь день-с 07.00 до 20.00 часов, ночь-с 20.00 до 07.00 часов). Спасибо. PS - заходил на сайт через ВК, но не нашёл как написать в личку!?

28 Charli  
0
Привет, а есть возможность изменить прошивку под индикаторы с общ. катодом? Дело в том что есть не плохой дисплей но он как назло с общ катодом. А сам я в програмировании не силен...

29 mimino  
1
Доброго дня!

Попробуйте этот файл http://sokolsp.at.ua/clock.c
Не знаю, сам не проверял, должно работать по идее

30 vrubchenko  
0
Спасибо за быстрый ответ, но вы дали ссылку на файл clock.c
а хотелось бы CLOCK.HEX 
В прочем все равно спасибо, закажу на али нужный дисплей...
Удачи...

27 Серый  
0
При моделировании часиков в Протеусе8 получилось несуразица. При настройки часов в проекте кнопками выскакивают непонятные символы. Хотелось бы знать - БУДУТ ЛИ ОНИ РАБОТАТЬ НА ПЛАТЕ? НЕ ПОЛУЧУ ЛИ Я РАЗОЧАРОВАНИЕ ПОСЛЕ СБОРКИ ЭТИХ ЧАСОВ? ПОЧЕМУ В ПРОТЕУСЕ НЕ ПРОХОДИТ СИМУЛЯЦИЯ? Проект в протеусе на яндексдиске -  https://yadi.sk/d/cAJI8wzc3SKFJp

23 a11exman67  
0
Под какой компилятор писалась программа?

24 mimino  
0
Под IAR V4.02E/DOS

25 a11exman67  
0
А где можно скачать именно эту версию?

26 mimino  
0
Компилятор можно скачать тут: http://sokolsp.at.ua/IAR4.zip
А описание работы с ним можно найти тут (шаг 3): http://sokolsp.at.ua/mikrokontrollery.djvu

22 эдуард  
0
как подключить к часам индикаторы ИН-14 ИН-16 и им подобные?

20 Сергей  
0
Добрый день. Меня также заинтересовала Ваша конструкция часов. Подскажите, какова у них точность хода?
Также хотелось бы как-то реализовать в них защиту от сброса при пропадании напряжения питания. Например, поставить литиевую батарейку, которая подключалась бы при пропадании напряжения и питала только контроллер, чтобы он не сбросил время.

21 mimino  
0
Точность хода именно у тех часов, что я собрал, составляет где-то плюс одну минуту за 4-5 дней. Но ее можно повысить, поточнее подобрав период работы таймера. Насчет батарейки, не уверен, что ее удастся так просто прикрутить. Хотя, если разделить цепи питания контроллера и индикаторов, чтобы сильно не разряжать батарейку, то можно. А лучше для этой цели использовать ионистор. А еще лучше применить специальную микросхему часов реального времени. В ней подобная функциональность уже заложена. И точность хода повыше.

18 Дмитрий  
0
Здравствуйте. Спасибо вам за эту работу. Давно искал простейшие часы на микроконтроллере семейства MCS-51. Сергей можете подсказать, так как я хочу собрать просто часы(без будильника и календаря), как мне нужно изменить схему(убрать,изменить).
p.s. я новичок, сильно не ругайтесь)

19 mimino  
0
Здравствуйте!
Если Вам не нужен будильник, то можно исключить из схемы резистор R4, транзистор VT5 и зуммер BZ1. Календарь реализован программно, поэтом если его убирать, то нужно немного изменить программу. Впрочем, для исключения будильника тоже придется изменить программу.

16 Станислав  
0
Подскажите,какой Програматор использовали?

17 mimino  
0
Я использовал программатор BlowIt. Прочитать о нем можно, например, тут: http://www.junradio.com/blog/mikrokontrollery/2011-11-05-6

1-10 11-18
Имя *:
Email *:
Код *:
 
 
Категории раздела
Мои статьи [20]

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Вход на сайт

Поиск

Посетители

Погода
GISMETEO: Погода по г.Мариуполь

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz