62929 (588861), страница 2
Текст из файла (страница 2)
- устойчивость к изменениям напряжения и температуры, долговечность;
- отсутствие нагрева компонентов;
- низкое энергопотребление.
2.2 Разработка структурной схемы устройства и функциональной спецификации
Рассмотрим структуру разрабатываемого устройства (Рис. 2.1).
Функциональная спецификация:
-
Входы:
а. 16 кнопок управления и регулировки часами;
b. Источник бесперебойного стабильного электропитания часов.
МИКРО
КОНТРОЛЛЕР
ИСТОЧНИК
ПИТАНИЯ
Звуковой
излучатель
Кварцевый
резонатор
ЖК-
индикатор



Кнопки
управления
и
регулировки
Рисунок 2.1 – Структурная схема многофункциональных астрономических часов
-
Выходы:
а. Двухрядный шестнадцатиразрядный ЖК индикатор;
b. Звуковой излучатель.
-
Функции:
а. 16 таймеров;
b. Таймеры могут показывать Земное, Марсианское, Юпитерское, сидерическое время, Лунных фаз, времени перемещения большого красного пятна Юпитера и т.д. Одновременное отображение 24 часового и Юлианского времен на десятичном дисплее.
с. Выполнение функций будильника;
d. Осуществление бесперебойного электропитания для осуществления стабильности хода часов (должен иметь встроенный источник питания).
2.3 Аппаратные средства микроконтроллеров серии PIC16F877A
Общее описание:
PIC16F877A 8-разрядные КМОП микроконтроллеры с Flash памятью.
Основные характеристики:
Высокопроизводительный RISC-процессор:
Всего 35 простых для изучения инструкции
Все инструкции исполняются за один такт (200 нс), кроме инструкций перехода, выполняемых за два такта; минимальная длительность такта 200 нс
14 битовые команды
8 - битовые данные
Вход внешних прерываний
8-уровневый аппаратный стек
Прямой, косвенный и относительный режимы адресации для данных и инструкций
Периферия:
22 линий ввода/вывода с индивидуальным контролем направления
Сильноточные схемы портов ввода/вывода:
25 мА макс. вытек. ток
25 мА макс. втек. ток
Timer0: 8-разрядный таймер/счетчик
Timer1: 16-разрядный таймер/счетчик
Timer2: 8-разрядный таймер/счетчик
2 ШИМ модуля
Последовательные интерфейсы
3-проводный SPI
I2C Master и Slave режимы
USART (с поддержкой адреса)
5 каналов 10-битного АЦП
2 аналоговых компаратора
Интегрированный программируемый источник опорного напряжения
Особенности микроконтроллера:
Сброс при включении питания (POR)
Таймер включения питания (PWRT) и таймер запуска генератора (OST)
Сброс по снижению напряжения питания (BOR)
Сторожевой таймер (WDT) с собственным встроенным RC-генератором для повышения надежности работы
Режим экономии энергии (SLEEP)
Выбор источника тактового сигнала
Программирование на плате через последовательный порт (ICSPT) (с использованием двух выводов)
Отладка на плате через последовательный порт (ICD) (с использованием двух выводов)
Возможность самопрограммирования
Программируемая защита кода
1000 циклов записи/стирания FLASH памяти программы
100 000 циклов записи/стирания памяти данных ЭСППЗУ
Период хранения данных ЭСППЗУ > 40 лет
Технология КМОП:
Экономичная, высокоскоростная технология КМОП
Полностью статическая архитектура
Широкий рабочий диапазон напряжений питания - от 2,0В до 5,5В
Промышленный и расширенный температурный диапазоны
Низкое потребление энергии
Совместимость:
Полная совместимость по выводам с семействами микроконтроллеров (только 28-выводными): PIC16CXXX; PIC16FXXX
Рисунок 2.2 – Структурная схема микроконтроллера PIC16F877A
Рисунок 2.3 – Расположение выводов микроконтроллера PIC16F877A
Рисунок 2.4 – Общий вид микроконтроллера PIC16F877A
Основные технические характеристики микроконтроллера PIC16F877A приведены в Приложении А.
2.4 Разработка функциональной схемы устройства
После выбора микроконтроллера мы можем приступить к разработке функциональной схемы (Рис. 2.5).
+ 12 В
С
Блок
питания
Усилитель




Кнопки
управления и
регулировки















ЖК
индикатор
Рисунок 2.5 – Функциональная схема многофункциональных астрономических часов
2.5 Разработка алгоритма управления
Основной алгоритм работы микроконтроллера представлен на рис. 2.6.
Рисунок 2.6 - Алгоритм работы многофункциональных астрономических часов
2.6 Разработка программного обеспечения микроконтроллера
Программа для микроконтроллера написана на языке ассемблера. Сделать ее можно более гибкой, даже ценой увеличения размера кода. Эту программу можно улучшать и улучшать, но, она работает и не слишком беспорядочна. Можно обновлять программу время от времени – удаляя ошибки и добавляя новые возможности.
Программа содержится в Приложении Б.
2.7 Выбор, описание и расчет элементной базы
Стабилизированный блок питания напряжением 5В состоит из стабилизатора напряжения и фильтрующих конденсаторов.
Блок усилителя динамика это усилитель основанный на микросхеме LM386. Динамик любой (например, модема).
Порт PIC программатора предназначенный для перепрограммирования микроконтроллера без разборки часов. Адаптер DB25 в 6 контактный разъем.
Клавиатура от микрокалькулятора или кнопочного телефона.
Использован 16-ти символьный 2-х строчный LCD модуль фирмы Techstar с подсветкой. Эти модули довольно таки стандартны, так что почти любой 16x2 LCD модуль будет работать.
Схема не содержит токовых элементов, кроме стабилизатора напряжения, поэтому поэлементный расчет элементов не производится.
Спецификация элементов устройства приведена в Приложении В.
Следует немного разобраться, как управляются астрономические часы.
Дисплей часов это 2х16 LCD модуль. Первая строка всегда показывает текущий выбранный таймер. Вторая строка используется для показа либо юлианского времени, либо выбора текущего меню.
Рисунок 2.7 – Общий вид дисплея
Шестнадцать таймеров имеют имена TmA, TmB и т.д. вплоть до TmP. Здесь TmA это имя таймера, следующего за текущим временем. Вторая строка показывает то же самое время в юлианском формате (используется в астрономии и других науках). Клавиатура выглядит так (Рисунок 2.8).
Рисунок 2.8 – Клавиатура астрономических часов
Пользовательский интерфейс часов организован в виде различных меню. Нажатие кнопок [DEL] и [TKO] позволит просмотреть пункты меню. При нажатии на [ENT] будет выбран пункт (и произойдет связанное с пунктом действие – откроется другое меню, установка значения и т.д.). выход из меню делается нажатием кнопки [DEL]. Это вызовет открытие предыдущего меню. Ниже приведена диаграмма различных меню часов, с последующим детальным описанием каждого меню (Рисунок 2.9).
Рисунок 2.9 - Главное Меню – Выбор Таймера
Сразу после включения питания часов, мы попадем в меню «Выбор Таймера». В этом режиме можно просмотреть все 16 таймеров, от TmA до TmP (как и с любым меню, используйте кнопки [TKO] и [DEL] для выбора таймеров). Если вы не уверены, в каком меню вы находитесь, нажмите кнопку [ABT] несколько раз, это приведет вас в главное меню.
Установка времени [select timer, ENT]
Если вы хотите изменить что-нибудь в таймере – установить время, установить будильник и т.д., выберете данный таймер и нажмите кнопку [ENT]. Это приведет вас к следующему меню с двумя опциями (Рисунок 2.10).
Рисунок 2.10 - Меню с двумя опциями
Когда опция Adjust Timer видна, вы можете использовать кнопку [0] чтобы поставить таймер на паузу или перезапустить таймер и кнопку [4], для того, чтобы переключить направление таймера (вперед или назад). Это будет воздействовать только на текущий выбранный таймер.
Когда опция Adjust Clock видна, вы можете делать установки для часов, которые влияют на все таймеры. Нажмите кнопку [0] чтобы поставить на паузу или перезапустить часы. Нажатие кнопки [4] вызовет скачок часов вперед на 1 секунду. Таким образом вы можете задать правильное время не перезапуская каждый таймер отдельно.
Установки таймера [select timer, ENT]
Выберите таймер и нажмите кнопку [ENT] дважды (один раз чтобы получить Adjust меню и второй раз, чтобы выбрать опцию Adjust Timer). Появится меню со следующими опциями (Рисунок 2.11).
Рисунок 2.11 – Опции таймера
Если вы выберите опцию Set Timer и нажмете кнопку [ENT], вам будет показан экран, где вы можете ввести новое время. Введите время используя цифровой клавиши. Новое время будет установлено когда вы введете все шесть цифр (HH:MM:SS) или когда вы нажмете кнопку [ENT]. Нажатие кнопки [ABT] в любой момент отменит операцию и время не будет установлено.
Если вы выберите опцию Set Alarm, это позволит вам установить время будильника, звук и действие.
Чтобы настроить таймер на какой ни будь другой, отличный от стандартного земного (24 часа), временной цикл, выберите опцию Set Cycle Lengt. Более детальная информация и примеры длин циклов (например, как заставить таймер считать марсианское время), находятся в разделе How-To, пункт «Установка длинны цикла таймера». Подтвердите установку новой длинны цикла кнопкой [ENT] или отмените операцию нажав кнопку [ABT] в любой момент.
Каждый таймер имеет будильник, связанный с ним. Это меню позволяет вам выбрать между следующими опциями.
Чтобы установить время будильника выберите опцию Alarm Time и нажмите кнопку [ENT]. Как обычно, кнопка [ENT] подтверждает, а кнопка [ABT] отменяет операцию в любой момент.
2.8 Разработка схемы электрической принципиальной
Принципиальная схема многофункциональных астрономических часов в Accel EDA приведена на Рисунке 2.12.