Понравилась мне идея бинарных часов и решил сделать проект себе на будущее. Сразу решил, что отображаться и устанавливаться будут только минуты и часы. Так как эти часы буду делать только на показ или на подарок. Не буду углубляться в подробности, программа довольно простая. Приведу схему и краткие характеристики заложенные в эти часы. На схеме не ставил ограничительные резисторы на светодиоды. Понятное дело, что если собирать эти часы в железе, то нужно перед каждым светодиодом поставить ограничивающий резистор где-то на 200 Ом. В конце статьи можно скачать проект в Протеусе и программу на WinAVR.
Схема
На схеме оставил осциллограф специально. Т.к. был замечен такой баг. Если отключить осциллограф от ножек DS1302, то в Протеусе время не считывается с DS1302. Хотя в железе все работает нормально.
Нажимая на кнопку VIEW светодиоды будут загораться отображая текущее время. Время отображается в течении около 5 секунд, а потом светодиоды гаснут и микроконтроллер уходит в спящий режим. Нажимая на кнопку SET мы кнопками HOURS и MINUTES можем устанавливать часы и минуты. Второе нажатие на SET установит выбранное время и через 5 сек светодиоды погаснут и микроконтроллер заснет.
Реализовано все на внешних прерываниях INT0, INT1 и прерывании по переполнению Таймера/счетчика.
Программа также может использоваться в качестве примера настройки спящего режима.
Честно говоря, лучше реализовать такие часы на таймере в асинхронном режиме. Просто у меня была готовая библиотека для DS1302 и поэтому решил попробовать сделать быстро на ней (во всем виновата лень). Если собирать готовое устройство на этой микросхеме, то цена увеличится на стоимость микросхемы DS1302, где-то 2 дол. и все. Все детали в любом случае должны поместиться в корпус от наручных часов.