 |
Форум за електроника Български форум за електроника, ремонти, схеми, документация
|
| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
dreadx Опитен потребител

Регистриран на: 27 Мар 2005 Мнения: 413 Местожителство: Sofia
|
Пуснато на: Вто Май 24, 2005 10:15 Заглавие: |
|
|
| Преди много време направих за една дипломна работа на приятел такова нещо за звънец. Програмирах в един PIC данните от стандартните мелодии за Правец-8 и останалите електронни звънци които намерих, направени с броячи и EPROM (те мелодиите са съвместими) и ги play-нах с една програма от 15 реда, която беше преразказана за PIC-а програмата на асемблер от Правец-8 за генериране на звук по нота и продължителност. Естествено нищо от това не си пазя, но няма да е проблем за никой програмист на PIC да ти го напише, стига да не те мързи да изровиш някакви стари списания с музикални програми за Правец-8 от които да вземеш мелодии. |
|
| Върнете се в началото |
|
 |
инж.Васил Сапунджиев Опитен потребител

Регистриран на: 08 Апр 2005 Мнения: 292
|
Пуснато на: Вто Май 24, 2005 10:25 Заглавие: |
|
|
До сега правих програма, за да извадя честотите на тоновете от основната гама. Принципът е, че тонът Ла има честота 440Хц. Всеки тон има копие в следващата остава с два пъти по-висока честота, т.е. горно Ла има честота 880Хц. В една октава се знае, че има 8 тона и четири полутона, като в мажорните гами полутонове няма между трета и четвърта степен и седма и осма. За До-мажор това са тоновете Ми и Фа, и Си и До. Ето какво се получи.
274 До; 310 Ре; 346 Ми; 364 Фа; 400 Сол; 440 Ла; 512 Си; 548 До
Технически решения има много и най-разнообразни. Един възможен вариант е, да заредиш един EPROM с числа, и да го адресираш последователно. Дали това ще го направиш с брояч и тактов генератор или с микроконтролер, няма значение. На изхода трябва да има дешифратор, който да разпознава кода на съответната нота и да задейства един общ генератор за всички тонове като му променя честотата, или отделен генератор за всеки тон, което е по-добрия вариант.
За продължителността на нотите трябва да въведеш единица време, например за четъртинка нота. Тогава кодът на половинка нота ще трябва да го повториш в две последователни клетки от паметта, а за цяла нота – в четири клетки. Ако имаш осмини и щестнайсетинки – ноти, ти трябват повече клетки, като при шестайсетинки трябва да представяш една цяла нота с 16 клетки с едно и също съдържание.
Микропроцесорите могат да правят чудеса. Можеш директно да синтезираш честотите по програмен път, т.е. генераторът и дешифраторът да ти отпаднат, но програмата за това е сложна и зависи от това, към кой контролер се ориентираш, защото програмирането им е различно. |
|
| Върнете се в началото |
|
 |
slav4o.com Опитен потребител

Регистриран на: 04 Юли 2004 Мнения: 2970 Местожителство: Велико Търново
|
Пуснато на: Вто Май 24, 2005 14:05 Заглавие: |
|
|
Mалко допълнение, мисля че ще е по-добре една клетка за тона и една за продължителността, така за всички ноти по 2 клетки от паметта, а дори във втората клетка има място за още опции като сила на звука даже, или тембър...  |
|
| Върнете се в началото |
|
 |
инж.Васил Сапунджиев Опитен потребител

Регистриран на: 08 Апр 2005 Мнения: 292
|
Пуснато на: Вто Май 24, 2005 14:50 Заглавие: |
|
|
| Това, което предлагаш е по-интелигентния подход, който изисква непременно синтез на звук по програмен път. Аз предложих възможно най-простия вариант и най-лесен за осмисляне от начинаещ. Той позволява адресиране с прост брояч. Варианти много! |
|
| Върнете се в началото |
|
 |
dreadx Опитен потребител

Регистриран на: 27 Мар 2005 Мнения: 413 Местожителство: Sofia
|
Пуснато на: Нед Май 29, 2005 12:50 Заглавие: |
|
|
| Въобще не е сложна програмата за това, просто нямам на удобно книжка за Правец-8 да погледна кода от 15 команди на асемблер, които правят цикъл (по-точно 2 един в друг включени цикъла за да не се влияе продължителността от височината на тона) и така се генерира нота с височина и продължителност. Другото са таблици в паметта с ноти за мелодии и някакво управление на достъпа към тях. В един PIC16F84 се побраха около 12 мелодии. Не съм го правил на някой по-удобен и по-евтин за целта PIC защото беше за дипломна работа на един приятел и за съжаление никъде не си пазя кода, защото тогава нямаше интернет, и записвачки за CD-та, и нищо сигурно като носител, но тръгнете от въпросната програма на асемблер за 6502 и ще видите, че е лесно. |
|
| Върнете се в началото |
|
 |
nankov Опитен потребител

Регистриран на: 12 Яну 2005 Мнения: 347 Местожителство: Хасково
|
Пуснато на: Нед Май 29, 2005 15:18 Заглавие: |
|
|
Милене имам схема и програма за две мелодии на PIC16F84.
Хасково - Орфей 16 Христо Нанков 0898/209341 _________________ Има 101 причини да се гордея че съм Българин |
|
| Върнете се в началото |
|
 |
marinov Опитен потребител


Регистриран на: 20 Апр 2004 Мнения: 130 Местожителство: Русе
|
Пуснато на: Сря Юни 01, 2005 7:42 Заглавие: |
|
|
| Схемата и програмата ги има в книгата на МК за PIC |
|
| Върнете се в началото |
|
 |
инж.Васил Сапунджиев Опитен потребител

Регистриран на: 08 Апр 2005 Мнения: 292
|
Пуснато на: Сря Юни 01, 2005 9:58 Заглавие: |
|
|
Ето по-точни стойности на честотите на тоновете. Оказа се, че разстоянията между тях не са еднакво отдалечени, та се наложи да ги прослушвам многократно. Остава да важи правилото, че всеки тон в по-горната октава е с два пъти по-висока честота и обратно.
До-262; Ре-298; Ми-338; Фа-356; Сол-398; Ла-440; Си-497; До-525;
Най-простият алгоритъм за генериране на честота е, като се осигури цикъл, при който зададено число се сумира само със себе си до възникване на пренос. Колкото е по-голямо число, толкова по-бързо се генерира пренос, т.е. толкова е по-кратък периода. Има обаче една методическа грешка на този алгоритъм, която се проявява при високите честоти. Там с една итерация на цикъла може да се генерира пренос. За това трябва да се предвидят поне 16 итерации за най-високата честота.
Генерираните импулси са тесни и ще предизвикат неприятен звук. За това или на всяка итерация трябва да се инвертира изходът на контролера, или преди усилвателя да се постави тригер с броячен вход, за да се получат симетрични импулси. Честотата обаче ще намалее на поровина. |
|
| Върнете се в началото |
|
 |
slav4o.com Опитен потребител

Регистриран на: 04 Юли 2004 Мнения: 2970 Местожителство: Велико Търново
|
Пуснато на: Пет Юни 03, 2005 16:52 Заглавие: |
|
|
| Един брояч чете от паметта по две клетки (две ИС памети) и от едната като прочете стойността със ЦАП се получава аналогов сигнал, който управлява честотно зависим генератор, а стойността на другата клетка по същия начин със ЦАП се преобразува в напрежение което управлява чакащ мултивибратор който след изсвирване на нотата генерира импулс, който се подава на брояча. Принципно не е сложна идейката ми, дори може да се опитам да направя нещо със 74ХХ, схеми такива бол, не са скъпи. Остава проблема с паметта. |
|
| Върнете се в началото |
|
 |
Milen_haskovo Опитен потребител

Регистриран на: 11 Фев 2005 Мнения: 1404 Местожителство: София/Хасково
|
Пуснато на: Пет Юни 03, 2005 19:43 Заглавие: |
|
|
Паметите аз ги намирам лесно - по старите компютърни платки, по изгорели харддискове и CD-та, автокасетофони... Въпроса ми е дали ще могат да се използват за тази цел? _________________ Както си работеше и спря... |
|
| Върнете се в началото |
|
 |
|
|
Не Можете да пускате нови теми Не Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети
|
|