Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_МиМСУ_новая.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.99 Mб
Скачать
    1. 4.3 Описание работы программы

При включении питания программа микроконтроллера инициализирует его внутренние ресурсы, микросхему часов реального времени и датчик температу­ры, читает информацию из EEPROM. Далее начинается основной программ­ный цикл, в котором выполняются сле­дующие действия:

  1. вывод изображения на индикато­ры в соответствии с текущим пунктом меню (переменная menu_st) или режи­мом отображения (переменная view);

  2. опрос датчика температуры;

  3. проверка будильников и проигры­вание мелодии в течение заданного промежутка времени в случае их сраба­тывания;

  4. опрос состояния кнопок с после­дующим выбором пункта меню (режима отображения, времени/даты, будиль­ников);

  5. при работе с компьютером обра­ботка принятых по USB информацион­ных пакетов, подготовка и отправка ответов;

Процедура intOJsr обработки прерывания от микросхемы часов реального време­ни DD1 выполняет чтение теку­щего времени и включение светодио­дов HL1, HL2. Они выключаются в ос­новном цикле через полсекунды после включения.

Обработка прерываний по переполне­нию таймера (процедура timer0_ovfjsr) заключается в обслуживании несколь­ких программных счетчиков.

По прерыванию по приему UART (uartO_rx_isr) происходит запись приня­того байта в массив rxjnas, а по преры­ванию uartO_tx_isr – передача UART байта из массива tx mas.

Структура ме­ню часов показана в таблице 3.

Таблица 3

Параметр

Показания

HG3

Функции кнопок

SB1

SB2

SB3

SB4

Установка даты и времени

Часы

S-01

1 нажатие

Выход

Больше

Меньше

Минуты (М)

S-02

2 нажатия

Обнуление секунд

S-03

3 нажатия

Число месяца

S-04

4*

День недели

S-05

5*

Месяц (М‘)

S-06

6*

Год

7*

Установка будильников

Номер будильника

S-08

Меньше

Выход

Больше

1 нажатие

Тип будильника

S-09

2 нажатия

Час

S-10

3 нажатия

Минута

S-11

4 нажатия

Число месяца

S-12

5 нажатий

Месяц

S-13

6 нажатий

Режим отображения

Часы, минуты

Секунды

Переход к установке даты и времени

Переход к прочим установкам

1 нажатие

Переход к установке

будильников

Часы, минуты

Температура

2 нажатия

День, месяц

Год

3 нажатия

Часы, минуты

День, месяц

4 нажатия

Прочие установки

Выключить

светодиоды

Соответствуют

действующему

режиму

отображения

Переход к установке

даты и времени

1 нажатие

Переход к установке

режима отображения

Переход к установке

будильников

Пониженная

яркость

2 нажатия

Включить

светодиоды

3 нажатия

Нормальная

яркость

4 нажатия

Уста­навливаемый па­раметр (его выби­рают последова­тельными нажа­тиями на указан­ную в таблице кнопку) всегда на­ходится на инди­каторах HG1, HG2, HG4, HG5 и выде­ляется светящими десятичными точ­ками. Индикатор HG3 показывает номер пункта ме­ню (от 1 до 13).

Возможны сле­дующие режимы работы будильни­ка:

  1. будильник выключен;

  2. ежедневное срабатывание;

  3. срабатыва­ние только по буд­ням;

  4. срабатыва­ние только по вы­ходным;

  5. однократ­ное срабатывание (фактически раз в год).

Сигналом будильника служит мело­дия "Неаполитанская песенка”, вос­производимая через динамическую го­ловку ВА1. Формирование необходи­мых значений звуковой частоты проис­ходит с помощью таймера TIMER 1 мик­роконтроллера, работающего в ре­жиме широтноимпульсного модулято­ра (ШИМ) с точной фазой и частотой.

В этом режиме максимальное значе­ние в счетчике таймера задают числом, записываемым в регистр OCR1A. По достижении содержимым счетчика максимального и минимального значе­ний, состояние выхода РВ1 (ОС1А) мик­роконтролера инвертируется, а счетчик изменяет направление счета на проти­воположное. Таким образом, значение в регистре OCR1A задает необходимую частоту сигнала на выходе РВ1.

Для проигрывания мелодии в про­грамме микроконтроллера организова­ны четыре массива:

note_mas – значения для записи в ре­гистр OCR1A, соответствующие нотам;

long_note_mas – коды длительности нот и пауз;

EE_mus_note – последовательность нот в исполняемой мелодии;

EEjnusJong – последовательность длительностей нот и пауз в

исполняе­мой мелодии.

При воспроизведении мелодии по­следовательно выполняется запись в регистр OCR1A значений из массива note_mas в соответствии с их индек­сами, хранящимися в массиве EE_mus_note. Значения длительности звучания нот и пауз извлекаются из массива EE_mus_long (первый полу­байт – длительность паузы, второй полубайт – длительность звучания ноты) и преобразуются в коды для загрузки в счетчик времени из массива long_note_mas. Воспроизведение ме­лодии прекращается при нажатии на любую кнопку или по истечении уста­новленного промежутка времени.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]