Статистика | |
Онлайн лист | |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 | |
Главная » Статьи » Микроконтроллеры |
Часы на DS1307
Наконец то и в мои руки попала микросхема часов реального времени DS1307. Это маленькая микросхема, требующая минимум обвязки, с которой очень просто работать. Ниже я покажу на примере как сделать часы на основе этой микросхемы, микроконтроллера Atmega16 и среды программирования CodeVisionAVR. Сначала немного о самой микросхеме часов: Назначение выводов: X1,X2 - Входы для подключения часового кварца (32,768кГц) VBat - подключения "+" батарейки 3В (например CR2032) GND - общий SDA - линия данных I2C SCL - тактовая линия I2C SQW/OUT - выход для тактирования внешних устройств Vcc - +5В Схема часов приведена ниже: Мозгом часов является микроконтроллер atmega16, к которому подключена микросхема часов, дисплей с контроллером HD44780, и три кнопки для настройки часов. Теперь надо заставить все это работать. Для того чтобы наша atmega смогла работать с микросхемой часов, нам нужно настроить шину I2C, для этого в генераторе кода нужно перейти на вкладку I2C, выбрать порт к которому будем подключать часы,в моем варианте это PORTB, указать на какие пины будут подключены линии SDA и SCL, и выбрать микросхему часов, для этого перейти на внутреннюю вкладку DS1307 и поставить галочку Enable: В CodeVisionAVR есть готовая библиотека для работы с часами DS1307, что сильно упрощает жизнь. И так что мы можем: void rtc_write(unsigned char address,unsigned char data); - запись данных в микросхему часов, например выбрать 12 или 24 часовой формат времени, выбрать частоту импульсов на выходе OUT и т.д.; void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out); - инициализация микросхемы часов; void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec); - получение времени от микросхемы часов; void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec); - установка значения времени в часы; void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year); - получение даты; void rtc_set_date(unsigned char date,unsigned char month,unsigned char year); - настройка даты. Этих функций нам вполне хватит для того чтобы наши часики заработали. Чтобы несколько раз не писать одно и тоже, привожу исходный код с подробными комментариями:
Свои часы я собрал на плате переходнике soic8-DIP. Меленькая компактная плата, на которой спокойно размещаются все детали: | |
| |
Категория: Микроконтроллеры | Добавил: Naprisar (18.10.2012) | |
Просмотров: 15285 | Комментарии: 10
| Теги: |