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

Завдання 1.

Максимальна кількість балів: 10

Ви – розробник ігор для комп’ютерних приставок (роль приставки відіграє стенд "EV8031"). Ваша задача - реалізувати на приставці програму-гру «Жучок», в яку гравці будуть грати за такими правилами: 1. З початку гри жучок пересувається по ігровому полю безперервно. 2. Зміна напрямку руху жучка реалізується з клавіатури за допомогою чотирьох заданих клавіш. 3. При випаданні жучка з ігрового поля гра припиняється (вважається програною). 4. Мета гри – максимально довго забезпечувати пересування жучка на ігровому полі (тривалість гри реєструється і відображується на елементах індикації приставки).

Вимоги до виконання завдання 1. Ігровим полем являється матричний індикатор (5х7). Жучок на ігровому полі відображується 1 точкою, яка світиться і пересувається. Швидкість переміщення жучка не змінюється і повинна попадати в діапазон 1,5-2 точки в секунду. Напрямки руху жучка: вверх, вниз, вліво, вправо. Зміна напрямку руху здійснюється за допомогою клавіш: 2 (вверх), 8 (вниз), 4 (вліво), 6 (вправо). Під час гри на статичному індикаторі відображається таймер гри: кількість секунд від початку гри (у десятковому вигляді, зміна раз в секунду). Нова гра починається при натисканні клавіші «*», рестарт гри повинен відбуватися незалежно від того, завершена попередня гра чи ні. З початку гри програма входить в початковій стан (жучок починає рух з нижнього правого кута індикатора вверх), таймер гри починає відлік з нуля. Випаданням жучка з ігрового поля вважається ситуація, коли точка, яка імітує жучка, за напрямком руху виходить за межі індикатора (повинна переміститися на точку індикатора, що не існує). При цьому на матричному індикаторі засвічуються всі точки, таймер гри зупиняється. На індикаторі відображається час гри (зареєстрований час останньої гри повинен зберігатися до початку наступної гри). Жучок повинен бути позбавлений “інерційності”. Наприклад: в момент часу t1 жучок перемістився на одну позицію в певному напрямку і в момент часу t2 мало відбутися повторне переміщення жучка. Якщо між моментами t1 і t2 відбулося натискання кнопки зміни напрямку руху, то в момент часу t2 жучок повинен переміститися на одну позицію в новому напрямку. Реакція на кнопку повинна виникати у момент натискання незалежно від подальшого її стану (утримання кнопки у натиснутому стані або зняття утримання кнопки). У момент відпуску кнопки змін не повинно відбуватися. В програмі повинне бути передбачено придушення брязкоту клавіатури. Автоповтор при утриманні кнопки відключений. Можливість натискання двох кнопок одночасно не враховувати (вважати неприпустимою).

Обладнання. Програма використовує: - матричний індикатор 5х7 HG1 на платі розширення (в якості ігрового поля); - статичний індикатор на 4 розряди HG1(для відображення показників таймера гри); - матричну клавіатуру 3х4 (для управління грою).

Завдання 2.

Максимальна кількість балів: 10

Реалізувати програму – графічний редактор. Вимоги до виконання завдання 2. Програма повинна дозволяти сформувати на матричному індикаторі довільне зображення за допомогою дискретних кнопок і клавіатури. Виконувані функції: 1. встановлення початкового стану: - всі точки матричного індикатора, окрім позиції курсору, “погашені”, - початкова позиція курсору - верхній лівий кут - курсором є точка, що мигає з частотою 0.5-2 Гц (в подальшому мерехтіння буде ознакою курсору на будь-якій позиції, що допоможе його відрізняти від точок малюнку, які світяться); 2. переміщення курсору: - по вертикалі вверх - кнопка "2", - по вертикалі вниз - кнопка "8", - по горизонталі вліво - кнопка "4", - по горизонталі вправо - кнопка "6"; 3. блокування виходу курсору за межі індикатора: при досягненні курсором крайової точки індикатора в певному напрямку він повинен припиняти рух в цьому напрямку, “впираючись” в край індикатора; 4. зміна стану крапки в положенні курсору: - "засвітити" крапку - кнопка SW16, - "погасити" крапку - кнопка SW15, - інвертувати крапку - кнопка "5"; 5. циклічна прокрутка зображення: - прокрутка по вертикалі вверх - кнопка "1", - прокрутка по вертикалі вниз - кнопка "7", - прокрутка по горизонталі вліво - кнопка "3", - прокрутка по горизонталі вправо - кнопка "9"; 6. звукова індикація як реакція на натиснення кнопки. Реакція на кнопку повинна виникати у момент натискання незалежно від подальшого її стану (утримання кнопки у натиснутому стані або зняття утримання кнопки). У момент відпуску кнопки змін не повинно відбуватися. В програмі повинне бути передбачено придушення брязкоту клавіатури. Автоповтор при утриманні кнопки відключений. Можливість натискання двох кнопок одночасно не враховувати (вважати неприпустимою).

Обладнання. Програма використовує: - матричну клавіатуру 3х4 і кнопки SW15 та SW16; - матричний індикатор 5х7 HG1 на платі розширення.

Завдання 3.

Максимальна кількість балів: 10

Реалізувати програму, яка забезпечує вимірювання аналогового сигналу і відображення результату вимірювання на статичному індикаторі.

Вимоги до виконання завдання 3. Вимірювання аналогового сигналу і виведення результату виконується з періодом, тривалість якого повинна бути в діапазоні від 1 до 2 сек. Кожне виміряне значення програма відображує на статичному індикаторі HG1 в десятковому вигляді (значення від 0 до 255). При обертанні змінного резистора від мінімуму до максимуму результат повинен змінюватися від 0 до 255.

Обладнання. Програма використовує: - АЦП, побудований на базі мікросхеми 8-розрядного ЦАП (DD2) і компаратора DA1-2; - джерело вимірюваної вхідної напруги – дільник напруги на змінному резисторі R19; - статичний індикатор на 4 розряди HG1 (для відображення результатів вимірювань).

Завдання 4.

Максимальна кількість балів: 10

Реалізувати програму, яка забезпечує вимірювання аналогового сигналу і передачу результатів вимірювання через інтерфейс RS-232 на інший стенд з одночасним відображенням значення, що надходить з іншого стенда, на статичному індикаторі.

Вимоги до виконання завдання 4. Необхідно написати програму, яка б одночасно запускалася на двох стендах, зв’язаних через інтерфейс RS-232. Програма повинна забезпечувати роботу стендів в однаковому режимі і обмін даними між стендами. Даними для обміну є результати вимірювання аналогового сигналу. Вимірювання аналогового сигналу виконується з періодом, тривалість якого повинна бути в діапазоні від 1 до 2 сек. Кожен результат вимірювань програма відсилає через інтерфейс RS-232 на інший стенд, який відображує отримане значення на статичному індикаторі HG1 в десятковому вигляді (значення від 0 до 255). При обертанні змінного резистора від мінімуму до максимуму результат повинен змінюватися від 0 до 255.

Коментар до завдання 4. Завдання 4 з узагальненої точки зору є подібним до завдання 3, але має суттєві відмінності: - для виконання завдання використовується два однакових стенда "EV8031", з’єднаних через інтерфейс RS-232; - розроблена програма запускається одночасно на обох стендах; - результати вимірювань відображуються не на власному статичному індикаторі стенда, а на статичному індикаторі іншого стенда.

Обладнання. Програма використовує на двох стендах одночасно: - АЦП, побудований на базі мікросхеми 8-розрядного ЦАП (DD2) і компаратора DA1-2; - джерело вимірюваної вхідної напруги – дільник напруги на змінному резисторі R19; - статичний індикатор на 4 розряди HG1 (для відображення результатів вимірювань) - інтерфейс RS-232 (з’єднуючий шлейф команди повинні підготувати самостійно, про що сповіщалося при реєстрації).

Завдання 5.

Максимальна кількість балів: 10

Реалізувати програму, яка забезпечує вимірювання аналогового сигналу і передачу результатів вимірювання через інтерфейс RS-232 на інший стенд з одночасним відображенням значення, що надходить з іншого стенда, на статичному індикаторі.

Вимоги до виконання завдання 5. Необхідно написати програму, яка б одночасно запускалася на двох стендах, зв’язаних через інтерфейс RS-485. Програма повинна забезпечувати роботу стендів в однаковому режимі і обмін даними між стендами. Даними для обміну є результати вимірювання аналогового сигналу. Вимірювання аналогового сигналу виконується з періодом, тривалість якого повинна бути в діапазоні від 1 до 2 сек. Кожен результат вимірювань програма відсилає через інтерфейс RS-485 на інший стенд, який відображує отримане значення на статичному індикаторі HG1 в десятковому вигляді (значення від 0 до 255). При обертанні змінного резистора від мінімуму до максимуму результат повинен змінюватися від 0 до 255.

Коментар до завдання 5. Завдання 5 є повним аналогом завдання 4 з єдиною відмінністю: замість інтерфейсу RS-232 використовується інтерфейс RS-485.

Обладнання. Програма на двох стендах одночасно використовує: - АЦП, побудований на базі мікросхеми 8-розрядного ЦАП (DD2) і компаратора DA1-2; - джерело вимірюваної вхідної напруги – дільник напруги на змінному резисторі R19; - статичний індикатор на 4 розряди HG1 (для відображення результатів вимірювань) - інтерфейс RS-485 (з’єднуючий шлейф команди повинні підготувати самостійно, про що сповіщалося при реєстрації).

10.12.2008 13:35