- •Завдання для студентів заочного відділення
- •Р лабораторная работа №1. Азработка микропроцессорного устройства формирования звука
- •Постановка задачи
- •Предварительные сведения Физические основы музыкального ряда
- •Алгоритм работы программы
- •Выполнение работы.
- •Описание работы программы (листинг 1)
- •Формат кодируемых мелодий
- •Лабораторная работа №2. Разработка микропроцессорного синтезатора мелодий
- •Предварительные сведения
- •Алгоритм работы музыкального синтезатора выполнение работы.
- •Описание работы программы (листинг 2)
- •Iнститут «Комп’ютерних систем та iнформацiйних технолгiй»
Лабораторная работа №2. Разработка микропроцессорного синтезатора мелодий
Задача. Разработать электронное устройство (синтезатор мелодий), предназначенное для воспроизведения простых одноголосых мелодий, записанных в память программ на этапе программирования. Устройство должно иметь семь управляющих кнопок. Каждой из кнопок должна соответствовать своя мелодия. Мелодия воспроизводится при нажатии и удержании кнопки. При отпускании всех кнопок воспроизведение мелодий прекращается
Предварительные сведения
Схема
Неслучайно в условии задачи заложено именно семь кнопок и несколько одноголосых мелодий. Это позволяет использовать для новой задачи схему из предыдущей работы (рис. 1). Представим, что контакты, подключенные к порту PD, — это не датчики, а кнопки управления. Каждая кнопка будет включать одну из заложенных в программу мелодий. Воспроизведение мелодий будет происходить при помощи звуковой части схемы (Rl, VT1, VF1).
Формат кодируемых мелодий
Определимся с методом сохранения мелодии в памяти. Для того, чтобы в памяти можно было хранить данные, нужно сначала эти данные закодировать. Любая мелодия состоит из нот. Каждая нота имеет свой тон (частоту) и длительность звучания. Для того, чтобы закодировать тон ноты, можно просто все ноты пронумеровать по порядку. Удобнее нумеровать, начиная с самого низкого тона. На клавиатуре клавишного инструмента это будет слева направо.
Основы музыкального ряда рассмотрены в предыдущей работе. Рассмотрим кодирование мелодий.
Для экономии памяти удобнее каждую ноту кодировать одним байтом. Три старших бита мы будем использовать для кодирования длительности ноты, а оставшиеся пять битов — для кодирования ее тона. Пятью битами можно закодировать до 32 разных нот, что вполне хватит для разрабатываемого музыкального синтезатора.
Итак, если использовать приведенный выше способ кодирования, то код ноты ля первой октавы длительностью 1/4 в двоичном виде будет равен:
-
Рис. 4. Формат закодированных данных (длительность и частота)
Рассмотрим кодирование мелодий. Для того, чтобы закодировать мелодию, нужна ее нотная запись. Используя нотную запись, мы должны присвоить каждой ноте (табл.2) и каждой музыкальной паузе (табл.3) свой код (рис. 4).
Цепочка таких кодов и будет представлять собой закодированную мелодию. По условиям задачи музыкальный синтезатор должен уметь воспроизводить несколько разных мелодий. Коды всех мелодий мы разместим в программной памяти микроконтроллера.
Для определить конца каждой мелодии используем код 255 (FFh) в качестве признака конца.
Теперь определимся, как микроконтроллер будет находить начало каждой мелодии. Все мелодии имеют разную длину, а в памяти они будут записаны одна за другой. Поэтому адрес начала каждой мелодии зависит от длины всех предыдущих. Удобнее всего просто по факту определить адрес начала каждой мелодии и поместить все адреса в специальную таблицу (массив).
Кроме этой таблицы нам еще понадобится таблица коэффициентов деления для всех 32 нот (табл.2) и таблица, хранящая константы задержки для всех используемых нами музыкальных длительностей (табл.3).
