Свежие обсуждения
Микроконтроллеры

Как с помощью PIC12C50X воспроизвести мелодию???

1 3

Доброго времени суток!
Стала вот такая задача, нужно с помощью PIC12C50X воспроизвести мелодию причём не одну а скажем
штук 10 не меньше, походил по сети ничего подобного не нашёл, сам с PICами начал разбираться только
недавно вот и решил поинтересоваться у людей знающих
Может кто что подскажет?

 

Какую мелодию Вы хотите воспроивести ? Из какого формата ?
Поподробнее пожалуйста.

 

Само воспроизведение мелодии - последовательное генерирование пачек различной частоты. Отсюда и исходить надо.
Если ставили Proteus, там была демонстраха. Двумя кнопками включались различные светодиоды и звучали различные мелодии. Детально я с программой не разбирался. Но выглядит это примерно так. Ноты (т.е., видимо частота и длительность) записаны в виде последовательности строк выхода из подпрограммы с записью константы в аккумулятор (команда RETLW). Переход на нужную строку осуществляется с помощью команды приращения програмного счётчика. Видимо, для этого используют один из рабочих регистров, который инкрементируют после каждой ноты.
Есть ещё способ воспроизвести заранее оцифрованое аудио. Народ использует для этого ШИМ (в качестве ЦАП), но этого в данном контроллере, кажись нет. Так как памяти оцифрованый звук требует много, используют внешнюю последовательную EEPROM.

 

с чего хоть начать?
как генерировать эти пачки различной частоты?
что-то не встречал я инфы по этому поводу.
слышал что нужно из таблицы длительности и частоты строить уже готовый звук

 

Статья А. Долгий - была в ж. Радио где-то в 2001...2003. Посмотрите на сайте - поиском по Автору. Там по названию ясно будет ...

 

DR.MORRO:
как генерировать эти пачки различной частоты
Допустим, необходимо сгенерировать 1кГц в течении 1с. 1кГц - 1000 Гц, период равен 0,001с - 1000мкс. Соответственно, полупериод - 500мкс. Выставляем на выбранном выводе высокий уровень, и обеспечиваем задержку 500мкс. Меняем уровень на низкий, и опять даём задержку 500мкс. Зацикливаем это дело, но обеспечиваем общую длительность - 1с. Это самый тупой вариант. Можно задействовать механизмы прерываний от таймеров, если необходимо, во время звучания ещё что-то делать.
Меняя константы полупериода и длительности, получаем пачки различных частот.
Да. Забыл уточнить. Программируете-то на Эсемблере?

 

stump: была в ж. Радио где-то в 2001...
Статья была и есть в "Радио" №4 и №5 за 2001 год!
Enjoy!

 

DR.MORRO: с помощью PIC12C50X
Почему именно PIC12? PIC16 не годится? А то у меня готовая программа есть для PIC16F628(A). Там 12 мелодий зашито, а если световые эффекты выкинуть - штук 25-30, думаю, поместится. И никакой внешней EEPROM.

 

PICMANIAC
Да PIC16 впринципе годится, просто задание было дано такое, либо сделать либо вылететь из универа,
если не жалко, то покажи хотябы как ты формируешь звук

 

No problem
Статья в "Радио" №11-2004г. Программа (исходники и прошивки) - на ftp-сервере "Радио" (11-2004). Называется "Поющая елка. Новый вариант".
Обсуждали также здесь:
http://www.pro-radio.ru/controllers/2009/