Олимпиада по программированию микроконтроллеров апрель 2007

Задания на олимпиаду апрель 2007

Задание 1. Устройство управления электродвигателем

Максимальное количество балов:30

Реализовать программу для устройства управления электродвигателем. Пользователь задает частоту вращения, которая должна поддерживается устройством на постоянном уровне и не зависеть от внешних нагрузок.

Требования к выполнению:

Управление двигателем и, соответственно, установка частоты вращения выполняется с помощью регулирования подаваемой мощности через ШИМ (широтно-импульсную модуляцию). Реальная скорость вращения измеряется датчиком оборотов. Программа должна регулировать мощность подаваемой энергии таким образом, чтобы частота вращения оставалась заданной и не зависела от внешних воздействий на двигатель (торможение или ускорение).

Частота задается пользователем с цифровой клавиатуры: «0» – «9» - ввод числа, кнопка «#» – зафиксировать вводимое значение и установить как заданную частоту, «*» – «СТОП», т.е. выполняется обнуление буфера ввода и задание текущей частоты в 0 (двигатель останавливается).

На цифровом индикаторе отображается одно из значений, в зависимости от режима:

Режим 1 – отображение измеренной частоты вращения, засвечена крайняя левая десятичная точка на цифровом индикаторе;

Режим 2 – отображение заданной частоты вращения, засвечены две крайние левые точки на цифровом индикаторе;

Режим 3 – отображение и ввод нового значения, точки погашены.

Режим отображения последовательно выбирается одиночными нажатиями кнопки 1. Частота вводится и задается только в режиме отображения вводимого значения. Частота задается и отображается в «об/мин». Диапазон ввода от 0 («СТОП») до 9999 (максимальные обороты).

Частота вращения контролируется и регулируется во всех режимах.

Уровень мощности, которая подается на вентилятор в процессе регулировки, отображается при помощи светодиодной линейки. На ней засвечивается «столбик» из светодиодов, длина которого пропорциональна уровню мощности (0 – все светодиоды погашены, макс. уровень – все светодиоды засвечены, ½ макс. уровня – ½ часть светодиодов засвечена и т.д.)

Работа регулятора считается стабильной, если в процессе регулирования частота вращения уходит от заданной не более чем на 100 об/мин. Проверка стабильности работы выполняется в диапазоне 200 – 6000 об/мин.

Начальное состояние:

Начальное состояние –задана частота 2000 об/мин, двигатель вращается, режим отображения текущей частоты вращения.

Задание 2. Регулятор тона

Максимальное количество балов: 20

Реализовать программу для синтезатора звукового тона. Частота задается вращением энкодера.

Требования к выполнению:

Программа постоянно генерирует звук заданной частоты на динамике. Заданная частота отображается на цифровом индикаторе.

Управление частотой выполняется вращением энкодера. Шаг изменения частоты 200 Гц.

Частота звука должна меняться в диапазоне от 500Гц до 5000Гц. Допускается отличие реальной частоты звука от заданной не более, чем на 200Гц.

Начальное состояние:

Задана начальная частота 1000 Гц.

Задание 3. Терморегулятор

Максимальное количество балов: 25

Программа для устройства терморегуляции: регулировка скорости вращения вентилятора в зависимости от температуры.

Требования к выполнению:

Программа должна обеспечивать управление скоростью вращения вентилятора в зависимости от температуры.

Установка частоты вращения выполняется с помощью регулирования подаваемой мощности через ШИМ. Реальная частота вращения отслеживается по датчику вращения.

Температура измеряется датчиком температуры(с i2c выходом). Скорость вращения вентилятора произвольная, но должна изменяться в сторону увеличения при нарастании температуры и в сторону уменьшения при падении температуры.

Необходимо обеспечить вращение вентилятора без остановок как для малых температур, так и в случае внешнего воздействия на вентилятор.

Дисплей имеет два режима индикации:

1. Режим индикации температуры в градусах. Отображается один знак после запятой.

2. Режим индикации частоты вращения в оборотах в минуту.

При нажатии на кнопку 1 режим индикации переключается.

Начальное состояние:

Начальный режим индикации – индикация температуры.

Примечание:

Температуру датчика изменять в большую сторону прикосновением и удерживанием пальца на датчике, в меньшую – путем дальнейшего самоохлаждения.

Задание 4. Контролер съема данных

Максимальное количество балов: 20

Программа для устройства автоматизации съема данных. Программа получает накопленные данные по COM-порту, анализирует их и выдает результат.

Требования к выполнению:

Через последовательный порт COM1 (скорость 2400, 8 бит, без четности, 1 стоп бит) на стенд поступает текст – поток символов. Передаваться могут любые символы (с кодами 0…255, кодировка ASCII), кроме символа с кодом 12. Символ с кодом 12 означает конец текста.

Программа должна выделить из текста десятичные числа, и вычислить их сумму. Числа отделены справа и слева как минимум одним разделительным символом. Разделительные символы – символы с кодом меньше 33, кроме символа с кодом 12).

Используются целые числа, положительные и отрицательные. Диапазон чисел, встречающихся в тексте, а также их сумма находится в диапазоне: 32768…+32767

После получения символа с кодом 12, программа должна вывести в последовательный порт сумму полученных чисел (в текстовом десятичном виде), а также символы перевода строки (коды 13 и 10). Затем ждать новую порцию текста.

Размер текста не ограничен.

Начальное состояние:

При запуске программа выдает в COM-порт строку «ready» (5 символов) и ожидает порцию текста. Для каждой порции текста начальная сумма равно 0.

Примечание: Коды символов-цифр в таблице ASCII: «0» = 48, «1» = 49 … «9» = 57

Задание 5. Часы с настройкой

Максимальное количество балов: 15

Программа управляет работой и настройкой простых наручных часов.

Требования к выполнению:

Постоянно при работе программы считается время (часы, минуты, секунды). Точность хода – 5%

Часы имеют три режима индикации/работы. Режим индикации циклически переключается в момент нажатия кнопки 1:

1. Режим индикации времени. Два левых знакоместа цифрового индикатора отображают текущее значение счётчика часов, два правых знакоместа – текущее значение счётчика минут. Точка посередине мигает с частотой 1 Гц.

2. Режим настройки минут. Два левых знакоместа отображают значение счётчика часов, два правых знакоместа - значение счётчика минут. Индикатор счётчика минут мигает с частотой 1Гц. В момент нажатия кнопки 2 текущее значение минут увеличивается на 1, счетчик секунд обнуляется. При переполнении счётчик минут обнуляется.

3. Режим настройки часов. Два левых знакоместа отображают значение счётчика часов, два правых знакоместа - значение счётчика минут. Индикатор счётчика часов мигает с частотой 1Гц. В момент нажатия кнопки 2 текущее значение часов увеличивается на 1. При переполнении счётчик часов обнуляется.

4. Возможна реализация режима автоповтора при настройке часов и минут Начальное состояние:

При включении начальное состояние часов: 12:00, режим индикации времени

Задание 6. Телеграф с памятью

Максимальное количество балов: 15

Реализовать устройство-телеграф, для передачи сообщений азбукой Морзе, с возможностью повтора переданной информации

Требования к выполнению:

Телеграф работает в двух режимах: передачи и повтора.

В режиме передачи выполняется передача сообщения и его запоминание. Телеграфист нажатим «ключа» (нажатим кнопки енкодера) формирует сообщение азбукой Морзе. Сообщение состоит из комбинаций «точек» (кратковременное нажатие) и «тире» (длительное нажатие), а также из пауз различной длительности).

Во время нажатия и удержания ключа программа включает любой из единичных светодиодов стенда и издаёт звук на динамике.

Программа должна обеспечивать запоминание последовательности «точек», «тире» и пауз. Первая пауза (после старта записи, до первого нажатия ключа) не записывается. Программа должна запоминать минимум 20 первых «точек» или «тире».

Режим повтора включается кнопкой 2. После однократного нажатия кнопки 2 программа воспроизводит записанную последовательность, при этом выполняется звуковая и световая индикация (такая же, как в режиме передачи).

При повторной передаче должен воспроизводится «почерк» телеграфиста, т.е. длительности «точек», «тире» и пауз должны точно повторяться.

По окончанию повтора записанное сообщение стирается, активизируется режим передачи.

Максимальная длительность сигнала и паузы 5 сек, более длинные сигналы и паузы усекаются до этого значения.

Начальное состояние:

Режим передачи, память повтора пустая

Критерии оценки:

Выполнить заданные требования.

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

Задание 7. Автомагнитола

Максимальное количество балов: 20

Реализовать интерфейс управления автомобильным CD-плеером.

Требования к выполнению:

Программа реализует управление воспроизведением Audio-CD, с отображением информации о ходе воспроизведения.

Управления выполняется кнопками на цифровой клавиатуре. Цифры «1», «2», «3» соответствуют клавишам плеера “play” (играть), “stop” (стоп), “pause” (пауза). Кнопка 1 и кнопка 2 – клавишам “next”(следующий) и “prev”(предыдущий). “play” – начало или продолжение проигрывания текущего трека. При достижении конца – автоматический переход на следующий трек без паузы. “stop” – останов, текущий трек перематывается на начало. “pause” – пауза. “next” – Кратковременное нажатие переход на следующий трек. При долговременном нажатии – перемотка текущего трека вперед (скорость перемотки – 20 сек трека за 1 сек удержания кнопки). “prev” – Кратковременное нажатие: если время от начала трека до 10 сек, то переход на предыдущий трек, в другом случае – перемотка на начало трека.

При долговременном нажатии – перемотка текущего трека назад (скорость перемотки – 20 секунд трека за 1 секунду удержания кнопки).

При долговременном нажатии кнопки “next” или “prev”, в режиме перемотки трека, переход на следующий или предыдущий трек не выполняется.

На цифровом индикаторе постоянно отображается время от начала воспроизведения трека (минуты – 2 знака, секунды – 2 знака, между ними светится разделительная точка). При переключении треков на индикаторе кратковременно (1 сек) отображается номер трека.

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

Дополнительно выполняется имитация вращения CD-диска вентилятором, а также воспроизведения звука динамиком. Вентилятор вращается в режимах воспроизведения и паузы. Остановка вентилятора производится только в режиме «stop». В режиме перемотки вентилятор ускоряется. В режиме воспроизведения трека динамиком генерируется звук с частотой 1000…2000Гц.

Начальное состояние:

Трек №1, режим «стоп»

Конфигурация «тестового» диска:

Количество треков: 7. Длительность треков:

1) 1:05

2) 3:15

3) 5:45

4) 7:00

5) 4:13

6) 12:47

7) 10:00

Задание 8. Программа наименьшего размера

Максимальное количество балов: 5 … 20

Написать программу наименьшего размера, реализующую ввод цифр и их отображение

Требования к выполнению:

Программа должна обеспечить ввод цифр с цифровой клавиатуры: .от 0 до 8.

Введенная цифра отображается на светодиодной линейке позиционном коде, при этом все младшие биты индикатора должны быть включены (одновременно светится один светодиод). При каждом новом вводе изменять отображение на введенное.

Цифра 0 должна выключать все индикаторы. На остальные символы «#», «*», и «9» программа не реагирует.

Начальное состояние:

Введено число 0

Авторы заданий Бойко А. Белоокий П. Столярчук П. сотрудники ЧМП "Оупен Систем"

10.03.2009 15:30