Воспроизведение нот на PIC микроконтроллере » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Воспроизведение нот на PIC микроконтроллере
    Автор публикации: alex Просмотров: 6893 Добавлен: 1-10-2012, 07:55 Комментарии: 0

         В данной статье мы рассмотрим каким образом можно проигрывать музыкальные ноты при помощи PIC-микроконтроллера. Музыкальные ноты представляют из себя обычные звуковые частоты. И если мы точно знаем частоту определенной ноты, то мы можем запрограммировать микроконтроллер для проигрывания этой ноты через один пин ввода/вывода и звукоизлучатель.
         В данном проекте мы рассмотрим проигрывание популярной композиции Happy Birthday To You при помощи микроконтроллера PIC16F628A и пьезоизлучателя.
         В данной статье мы рассмотрим каким образом можно проигрывать музыкальные ноты при помощи PIC-микроконтроллера. Музыкальные ноты представляют из себя обычные звуковые частоты. И если мы точно знаем частоту определенной ноты, то мы можем запрограммировать микроконтроллер для проигрывания этой ноты через один пин ввода/вывода и звукоизлучатель.
         В данном проекте мы рассмотрим проигрывание популярной композиции Happy Birthday To You при помощи микроконтроллера PIC16F628A и пьезоизлучателя.

    Немного теории
         Итак, как мы выяснили выше, для того, чтобы воспроизвести какую-либо мелодию, необходимо знать звуковые частоты нот. Каждая нота проигрывается с определенной длительностью и между двумя нотами также должна быть определенная длительность паузы. В таблице ниже, приведены частоты нот, начиная с ноты До.
    Таблица сопоставления нот и их частот

         Ноты других октав могут быть получены путем умножения или деления данных частот на 2. Например нота До следующей октавы будет иметь частоту 524 Гц. Частоты всех нот можно найти в данной таблице.
         Звуки нот могут быть сгенерированы прямоугольным сигналом нужной частоты. Т.о. для того, чтобы воспроизвести ноту при помощи микроконтроллера, нам необходимо знать частоту и длительность. Прямоугольный сигнал может быть сгенерирован на выводе МК при помощи переключения вывода с высокого уровня на низкий и наоборот. Также, можно задействовать ШИМ (широтно-импульсную модуляцию). В данном проекте мы выберем первый способ. Схемотехника
         Схема устройства очень проста. Вывод RB0 микроконтроллера PIC16F628A используется для генерирования прямоугольный импульсов заданной частоты. Т.к. выводы микроконтроллера не могут выдерживать ток более чем 25 мА, то пьезоизлучатель нельзя напрямую подсоединять к выводу МК. Поэтому используется npn транзистор BC547. Желательно, еще использовать RC-фильтр, но здесь, для упрощения схемы он не показан.
    Программное обеспечение
         Генерирование аудио-частот реализовать на mikroC Pro очень просто. В нем уже есть встроенная библиотека для работы со звуком. Библиотека содержит две основные функции:
         Sound_Init(char *snd_port, char snd_pin): задает соответствующий вывод микроконтроллера для генерации звука, например:
         Sound_Init(&PORTB,0) задаст пин RB0 для вывода звука.
         Sound_Play(unsigned freq_in_hz, unsigned duration_ms): Генерирует прямоугольный сигнал
         Частоты нот можно задать в массиве или сохранить как постоянный массив в памяти ROM-микроконтроллера. У композиции "Happy birthday to you" не слишком много нот и поэтому мы определим их в integer массив, на mikroC это будет выглядеть так:
    /*                       Hap py  Birth Day   to  you,  Hap py   birth day  to
                             C4   C4   D4   C4   F4   E4   C4   C4   D4   C4   G4 */ 
    unsigned int notes[] = { 262, 262, 294, 262, 349, 330, 262, 262, 294, 262, 392, 
    /*                       you, Hap  py  Birth Day dear  xxxx      Hap  py  birth
                             F4   C4   C4   C5   A4   F4   E4   D4   B4b  B4b  A4 */
                             349, 262, 262, 523, 440, 349, 330, 294, 466, 466, 440,
                              
    /*                       day  to  you
                             F4   G4   F4   */
                             349, 392, 349                         
    };

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

    В архиве исходный код проекта и прошивка

    MusicTune.rar [25,01 Kb] (cкачиваний: 605)

    Комментарии