Разработка программы воспроизведения мелодии
Микропроцессорные системы
Пояснительная записка к курсовому проекту по теме:
«Разработка программы воспроизведения мелодии»
Содержание
введение 3
Техническое задание 5
Введение 6
1 Основание для разработки 6
2 Назначение разработки 6
3 Требования к разработке 6
3.1 Требования к функциональным характеристикам 6
3.2 Нижний уровень 7
3.3 Верхний уровень 9
3.4 Требования к надежности 10
3.5 Требования к информационной и программной совместимости 11
3.6 Требования к условиям эксплуатации 13
3.7 Требования к составу и параметрам технических средств 13
4 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ 14
5 РАЗРАБОТКА ФУНКЦИОНАЛЬНОЙ СХЕМЫ 15
6 Технико-экономические показатели 16
7 Этапы и стадии проектирования 16
8 Описание стенда SDK 1.1. 17
9 Принцип формирования звука 20
10 Описание программы 21
10.1 Режим начальной инициализации 21
10.2 Основной режим работы 23
Приложение 1 28
Приложение 2 29
ВВЕДЕНИЕ
Данная разработка является электронной моделью «Музыкальной шкатулки».
Первые музыкальные шкатулки появились в Женеве (Швейцария) в 1796 году. Этот уникальный для того времени механизм был изобретен часовым мастером Антуаном Фавром, который положил начало двухвековой истории этих удивительных инструментов.
На сегодняшний день, в эру компьютерных технологий, появилась возможность создавать разработки, имитирующие работу музыкальной шкатулки. В этом есть свои недостатки, потому что нет возможности рассмотреть внешнюю красоту шкатулки, а также почувствовать всю полноту звучания воспроизводимых мелодий. Но имеется и достоинство, в том что возможно самому создавать любые мелодии для воспроизведения.
Механизмы, воспроизводящие музыку по программе, появились до механизмов - калькуляторов, поэтому я рискнул бы назвать музыкантов самыми первыми программистами. Впрочем, и в письменном наследии древних культур, пожалуй, нотные записи как описание временного процесса, ближе всего к текстам программ. И в той и в другой форме есть блоки, условия, циклы и метки, только далеко не все программисты и музыканты знают об этих параллелях. Но если помнить о них, уже нельзя удивляться тому, что, создавая самые первые ЭВМ, инженеры заставляли их воспроизводить мелодии. Музыканты не могли относить машинную музыку к настоящей, возможно, потому, что в ней не было ничего, кроме “мертвых” звуков. Да и сам машинный звук, являвшийся на первых шагах простым меандром, был крайне далек от звучания акустических инструментов. Видимо, поэтому следующим этапом развития музыкальных компьютерных технологий стали исследования и разработки методов синтеза звука.
Инженеры обратились к анализу спектров акустических инструментов и к алгоритмам синтеза электронных тембров. Вначале расчет звуковых колебаний выполнялся центральным процессором, но, как правило, не в реальном времени. Поэтому на первых ЭВМ создание музыкального произведения было очень утомительным процессом. Надо было закодировать ноты и назначить тембры, затем запустить программу для расчета звуковой волны и подождать несколько часов, чтобы послушать результат.
Необходимость в разработке данного устройства возникла, т.к. в настоящее время очень востребовано воспроизведение музыки не через музыкальные инструменты, а через электронные устройства. Работа над программой позволяет закрепить знания по учебной дисциплине Микропроцессорные системы.
Целью данной разработки является создание программы, которая будет являться электронной моделью музыкальной шкатулки, воспроизводящей MIDI мелодии, т.к. учебный стенд имеет плоский синтезатор. А также освоение архитектуры и методов проектирования на базе микроконтроллера ADuC812 с ядром MCS–51.
Для разработки музыкальных продуктов программист должен быть музыкантом, акустиком и радистом одновременно или нужна группа, объединяющая таких специалистов и, что очень важно, говорящих на одном языке.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
«ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Факультет автоматики и вычислительной техники
Кафедра ВТ
Руководитель курсового
проекта, преподаватель
________________А.Г.Столяров
Техническое задание
на курсовой проект по дисциплине МПС
на тему «Разработка программы воспроизведения мелодии»
Выполнил
студент группы 8В51 ___________ Д. С. Чебуренко
Руководитель ___________ А. Г. Столяров
(дата)
Томск – 2009
Введение
Система предназначена для воспроизведения мелодий на учебном стенде SDK1.1., основу которого составляет контроллер ADuC812. Важность данной диктуется тем, что в настоящее время очень востребовано воспроизведение музыки не через музыкальные инструменты, а через электронные устройства.
Основание для разработки
Необходимостью для разработки послужило задание по курсовому проекту по предмету «Микропроцессорные системы» на тему: «Программа для воспроизведения мелодий».
Назначение разработки
Разрабатываемое устройство предназначено для управления процессом воспроизведения мелодий и является своеобразной электронной моделью «Музыкальной шкатулки».
Требования к разработке
Требования к функциональным характеристикам
Требования к разрабатываемой программе:
- Принимать данные по последовательному порту и размещать их в ОЗУ микроконтроллера (см. 3.5 Требования к информационной и программной совместимости);
- Выдавать сигналы на ЖКИ о готовности принимать данные по последовательному порту;
- Выдавать сигналы на ЖКИ об окончании передачи данных;
- Сигнализировать о готовности к воспроизведению загруженной мелодии;
- Отображать на ЖКИ и на светодиодах состояние воспроизведения музыки, которую вырабатывает пьезоэлектрический элемент;
- По достижению конца проигрываемой мелодии, отображать на ЖКИ и светодиодах состояние окончания воспроизведения мелодии.
Подробное описание работы системы приведено далее.
Нижний уровень
Разрабатываемое устройство должно работать в двух режимах:
- Режим начальной инициализации системы;
- Основной режим работы.
Устройство начинает работать при включении питания или нажатии на кнопку сброс. При этом начинает работу режим начальной инициализации системы, который включает: настройку работы таймеров-счетчиков, занесение начальных значений в регистры, настройку порта, инициализация дисплея микроконтроллера. В это время на дисплее отображается надпись «WAIT» (см. рис.1).
Рис.1 Внешний вид дисплея при ожидании данных
После этого запускается режим проверки работоспособности системы. В процессе которого производится: проверка исправности клавиатуры и ОЗУ. В ОЗУ записываются данные, а затем считываются. Если чтение исправно, то на дисплее отображается «READ» и должны загореться светодиоды 10101010 (см. рис.2), а если не исправно – загорается верхний и нижний светодиоды, т.е. выдается оповещение об ошибке (см. рис.3).
Рис.2 Режим «READ»
Предусмотреть устранение дребезга контактов при работе с клавиатурой. Устройство не будет принимать данные, если обнаружены ошибки при инициализации. Если при проверке ОЗУ и клавиатуры не выявились ошибки, то устройство переходит в основной режим работы.
В основном режиме работы устройство ожидает прием данных с COM порта. После того, как данные пришли, они размещается в ОЗУ микроконтроллера. Их можно использовать, если на дисплее отображается «READ» (см. рис.2), что говорит о правильности прихода данных. Помимо этого, при приеме данных должно происходить сравнение контрольных сумм, если произошла ошибка, то на светодиоды выводится код 10000001 (рис. 3).
Рис.3 Внешний вид светодиодов при ошибке принятия данных
Программа должна переходить в режим «PLAY» (воспроизведение), при нажатии на клавишу «1» клавиатуры. При этом на дисплее отображается надпись «PLAY» и загораются соответствующие светодиоды (см. рис.4).
Рис.4 Режим «PLAY»
После завершения воспроизведения мелодии, на экране ЖКИ отображается надпись «STOP» и загораются соответствующие светодиоды (см. рис.5).
Рис.5 Режим «STOP»
Если есть необходимость прослушать мелодию еще раз, тогда необходимо нажать на клавишу «1». Программа переходит в режим «PLAY».
Верхний уровень
Интерфейс программы выглядит следующим образом:
Рис.6 Окно программы верхнего уровня
Создание подключения СOM порта осуществляется по нажатию кнопки “Connect". Соответственно удаление подключения по нажатию кнопки “Disconnect”.
Загрузка данных может осуществляться двумя способами:
- Загрузка данных из файла;
- Ввод данных вручную.
Должна быть предусмотрена возможность сохранения изменений открытого файла. Для этого необходимо войти в меню File->Open (для открытия) и File->Save (для сохранения). Для выхода должна использоваться команда File->Exit. Передача данных на микроконтроллер должна осуществляться по нажатию кнопки «Send». В главном окне программы должен быть предусмотрен просмотр данных, возможность их редактирования или осуществление очистки поля по нажатию кнопки «Clear».
Верхний уровень должен выполнять следующие задачи:
- создавать подключение к коммутируемому порту;
- обрабатывать данные в соответствии с функциональными требованиями;
- передавать данные через коммутируемый порт по созданному протоколу.
Требования к надежности
Надежность системы управления
- свойство системы правильно
Все количественные характеристики надежности носят вероятностный характер и включают следующие параметры:
- среднее время наработки на отказ;
- вероятность безотказной работы;
- среднее время наработки на сбой;
- среднее время восстановления работоспособности.
Для определения количественных характеристик надежности необходимо воспользоваться прикидочным методом расчета и определить ориентировочное время безотказной работы системы Т, которое складывается из всех t элементов схемы.
Интенсивность отказов у изделий электронной техники и радиоэлектроники в среднем равна i = 0.2 * 10-6 (1/ч) для данной схемы (число элементов n не более 100):
I = n*i = 100 * 0.2 * 10-6 = 20*10-6 (1/ч)
А время безотказной работы определяется как T=1/I, что составляет 50000, т.е. более 5 лет.
С учетом наличия в системе других менее надежных элементов общий показатель надежности должен быть не менее T=10000 часов и гарантированно обеспечивать работоспособность системы не менее 1 года при выполнении правил эксплуатации.
Требования к информационной и программной совместимости
Система должна функционировать под управлением операционной системы Microsoft Windows 95 или совместимой.
Каждая нота должна состоять из 2-х чисел:
- первое число соответствует длительности;
- второе – частоте.
Значение второго числа должно хранится в регистре, из него пользователь должен брать необходимые значения. Должны использоваться 2 таблицы соответствия, т.к. регистры являются 8-ми разрядными, а код частоты - 16-ти разрядным. В первой таблице должны храниться старшие разряды, а во второй – младшие.
Таблица перекодировки:
table1:
DB 0feh ;ля
DB 0feh ;ля#
DB 0feh ;си
DB 0fdh ;до
DB 0fdh ;до#
DB 0fdh ;ре
DB 0fdh ;ре#
DB 0fdh ;ми
DB 0fdh ;фа
DB 0fdh ;фа#
DB 0fch ;соль
DB 0fch ;соль#
table2:
DB 47h
DB 2dh
DB 11h
DB 0f4h
DB 0d5h
DB 0b3h
DB 91h
DB 6bh
DB 4ah
DB 1bh
DB 0efh
DB 0c1h
С верхнего уровня на нижний должен передаваться поток данных, который представлен в виде последовательности пакетов. Каждый пакет имеет следующую структуру:
Заголовок (AC) (1-байт) |
Данные (10-байт) |
Контрольная сумма (1 байт) |
Конец (F0) (1-байт) |
Рис.7 Визуальное представление протокола
Пакет данных начинается с заголовка (АС), который предназначен для определения начала пакета. Если полученный байт равен (АС), то все последующие байты являются данными для воспроизведения мелодии.
Структура данных представляет собой последовательность из пар символов. Первый символ пары отвечает за длительность, второй - за частоту ноты. Количество данных в одном пакете - 10 байт, т.е. пять нот мелодии. Символами могут быть цифры от 0 до 9, а также знаки “:” и “;”.
Контрольная сумма - проверяет надежность передачи данных. Она должна сравнивать все ASCII коды символов данных с помощью логической операции XOR, получая тем самым контрольную сумму, которая в последующем идет на отправление. Подсчет контрольной суммы производится после принятия каждого символа на нижнем уровне. После этого полученные контрольные суммы сравниваются и если результаты равны, то данные приняты правильно.
Конец (F0) - обозначает конец пакета. Во время принятия данных пакета, должно производиться сравнение каждого принятого байта с (F0). Если принятый байт равен (F0), то этот байт является концом пакета данных.
Требования к условиям эксплуатации
Разрабатываемое устройство состоит из нескольких блоков (блока управления, исполнительного блока, контролирующего блока), что обеспечивает его ремонтопригодность и быстрое тестирование. Система управления должна работать в стационарном режиме при соблюдении следующих требований:
- температура окружающего воздуха 0 – 700С;
- относительная влажность воздуха 40 - 80 % (при t=300С);
- атмосферное давление 630 - 800 мм.рт.ст.;
- напряжение питания 220 В, 50 Гц;
- диапазон частот вибрации 1 - 3 Гц.
Требования к составу и параметрам технических средств
Система должна функционировать на микроконтроллере SDK 1.1., подключенном к IBM PC совместимому компьютеру со следующими характеристиками:
- процессор Intel Pentium или совместимый;
- объем свободной оперативной памяти 6 Мб;
- объем свободной памяти на жестком диске 1 Мб;
- стандартный VGA монитор или совместимый;
- стандартная клавиатура;
- манипулятор типа «мышь».
РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ
Структурная схема отображает основные блоки внешних устройств, которые подключаются к МП. Схема представлена на рис. 8.
Рис.8 Структурная схема
Структурная схема устройства состоит из следующих блоков:
- Микропроцессор (МП);
- Блок управления мощностью (БУМ) используется для смены уровня нагрева спиралей конфорок;
- ПЛИС – блок, обеспечивающий интерфейс микроконтроллера с ЖКИ, клавиатурой, светодиодной линейкой;
- Блок ввода (клавиатура) – блок, предназначенный для управления работой устройства;
- Блок индикации:
- ЖКИ – блок, который предназначен для визуального отображения параметров работы устройства.
- Светодиодная линейка – блок, предназначенный для отображения параметров работы устройства на светодиодах.
Принципиальная схема устройства представлена в Приложении 1.
РАЗРАБОТКА ФУНКЦИОНАЛЬНОЙ СХЕМЫ
Функциональная схема отображает основные узлы микропроцессора (МП) и внешних устройств, которые предполагается подключить к МП, а так же количество передаваемых бит. Схема представлена на рис. 9.
Рис.9 Функциональная схема
Функциональная схема отображает принцип работы данного устройства. На данной схеме отображены основные блоки микроконтроллера и основные блоки, обеспечивающие интерфейс контроллера с устройствами ввода/вывода.
В данной разработке
применяется микроконтроллер
Три внутренние двунаправленные шины связывают между собой все основные узлы и устройства, шина адреса позволяет контролеру программно обращаться к каждому из устройств, шина данных передает устройствам необходимые данные, а шина управления позволяет управлять подключенными устройствами.
Программируемые 16-битные таймер/счетчики используются в качестве таймеров или счетчиков внешних событий, при работе устройства в основном режиме работы.
Датчик – устройство,
которое принимает и
Для адресации устройств ввода/вывода, в данной системе используется дешифратор адреса, который адресует регистры, хранящие данные, поступающие с датчиков и контролера. Регистры подключены к шине ША (шина адреса), ШД (шина данных) получают или передают данные , при этом регистры, передающие данные на шину имеют три состояния выхода. Если такие регистры адресованы, то передача данных с них на шину разрешена, во всех остальных случаях эти регистры находятся в высокоимпедансном состоянии.
Последовательный интерфейс RS232 служит для обеспе6чения связи устройства с ЭВМ, и обеспечивает передачу данных с контроллера на ЭВМ
Технико-экономические показатели
Данный продукт распространяется абсолютно бесплатно, поэтому для него не нужно рассчитывать технико-экономические показатели.
Этапы и стадии проектирования
Таблица 1
Стадии разработки |
Содержание работ |
Сроки |
Результат |
1. Системный анализ |
Разработка и утверждение |
15.01-15.02 |
Техническое задание |
2. Проектирование |
Создание алгоритмов работы программы |
15.02-15.03 |
Глава в пояснительную записку |
3. Реализация и тестирование |
Разработка программы, тестирование |
15.03-15.04 |
Готовая программная реализация |
4. Документирование |
Окончательное оформление пояснительной записки |
15.04-27.04 |
Пояснительная записка |
Описание стенда SDK 1.1.
В состав учебного стенда SDK 1.1 входят:
• микроконтроллер ADuC812BS;
• внешняя EEPROM объемом 256 байт;
• клавиатура АК1604A-WWB фирмы ACCORD;
• ЖКИ WH1602B-YGK-CP фирмы Winstar Display;
• часы реального времени PCF8583;
• 128К внешней SRAM с возможностью расширения до 512К;
• набор сигнальных светодиодов (8 шт.).
Структура стенда с описанием его блоков представлена на рис. 10 и в таблице 2.
Рис. 10 Структура стенда
Таблица 2
Элемент |
Описание |
LCD |
Жидкокристаллический |
KEYBOARD |
Матричная клавиатура АК1604А-WWB |
Z1 |
Звуковой пьезокерамический |
SW2 |
Кнопка сброса RESET |
J4 |
Разъем питания 10-14В типа «JACK», полярность неважна |
JDP1 |
Разъем последовательного |
J1 |
Выводы каналов АЦП и ЦАП |
SW1 |
Переключатель каналов ЦАП/АЦП |
J3 |
16 линий параллельного порта |
SW3 |
Набор переключателей, замыкающих выводы J3 на корпус |
J2 |
Выводы JTAG-интерфейса ПЛИС MAX |
JP1 |
Перемычка, замыкающая вывод PSEN микроконтроллера AduC812 на корпус |
JP3 |
Разъемы подключения внешней батареи
питания часов реального |
D9-D16 |
Набор сигнальных светодиодов |
Процессор ADuC812 является клоном Intel 8051 со встроенной периферией. Основные характеристики:
• рабочая частота 11.0592МГц;
• 8- канальный 12-битный АЦП со скоростью выборок 200К/С;
• два 12-битных ЦАП (код-напряжение);
• внутренний температурный сенсор;
• 640 байт программируемого FLASH/ЕЕ со страничной организацией (256 страниц по 4 байта);
• 256 байт внутренней памяти данных;
• 16Мб адресное пространство;
• режим управления питанием;
• асинхронный последовательный ввод-вывод;
• I2C интерфейс;
• три 16-битных таймера/счетчика и таймер WatchDog.
Принцип формирования звука
Для управления динамиком в программе использованы таймер и регистр ПЛИС ENA (адрес 080004h). 2-4 биты регистр ENA управляют величиной напряжения на динамике, т.е. позволяют задавать громкость звука. Для формирования звука генерируются прямоугольные импульсы с заданным периодом.
Рис. 11 Формирование звука
В программе в функцию Sound для простоты передается значение не периода, а половины периода. Таймер настраивается на частоту 10кГц, т.е. прерывания от таймера приходят с интервалом 0.1 мс. Для генерирования прямоугольных импульсов сначала на динамик подается напряжение и удерживается в течение времени равного половине периода звука (см. рис. 11). Потом в течение такого же промежутка времени на динамике удерживается нулевое напряжение. Исходя из этого, для вычисления частоты генерируемого звука может быть применена следующая формула: Частота = (частота переполнения таймера)/(2*T).
Таким образом, звук с самым высоким тоном будет иметь частоту 10кГц/2=5кГц, звук с самим низким тоном будет обладать частой 10кГц/2*65536 =0.07Гц.
Длительность ноты задается в 10 мс. Минимальное время звучания будет 10мс,
максимальное время звучания 655.36 с.
10 Описание программы
Проектируемое устройство должно работать в следующих режимах (рис 12):
- режим начальной инициализации системы;
- основной режим работы.
Рис. 12 Алгоритм главной программы
10.1 Режим начальной инициализации
Предназначен для установки в исходное состояние внутренних переменных (Рис 13): занесения начальных значений в регистры (блок 1), настройки работы таймеров-счетчиков (блок 2), настройки порта на соответствующую скорость с компьютером (блок 3), инициализации дисплея микроконтроллера (блок 4), вывод на ЖКИ сообщение о готовности принятия данных (блок 5).
Рис.13 Алгоритм режима начальной инициализации
10.2 Основной режим работы
Переход в основной режим работы должно осуществляется автоматически после инициализации и вывода сообщения “WAIT” на ЖКИ. В это время, микроконтроллер находится в состоянии ожидания данных (рис. 14). При срабатывании прерывания от порта, принятый байт анализируется. Если он равен «ACh», это означает начало пакета, тогда должен быть выставлен флаг R равный «1», который означает, что все последующие байты являются кодами символов, которые необходимо сохранять в памяти. Если принятый байт равен «F0h» (это означает конец пакета), тогда должна быть проведена проверка на четность принятых байтов. Если же при передаче данных произошла ошибка, то на светодиоды выводится код 10000001.
Если данные приняты правильно, выполняется проверка все ли данные пришли, т.е. принятый байт равен «51h». Если да, то это означает конец принятия данных, на ЖКИ должно появиться сообщение об окончании принятия данных «READ». Если же не все данные еще пришли, то должен быть произведен переход к следующему символу.
Рис.14 Алгоритм передачи и записи данных
После принятия данных, необходимо воспроизвести мелодию. Для этого следует нажать на клавишу «1». При этом программа должна перейти в режим воспроизведения – PLAY, на ЖКИ высвечивается «PLAY» и загораются светодиоды. Во время проигрывания мелодии нажатие любых клавиш должно игнорироваться. По окончанию воспроизведения, можно заново проиграть эту мелодию, для этого необходимо нажать клавишу «1».