Розробка програми для ОМК
Розглянута розробка програми для ОМК яка реалізує 8 звукових ефектів в діапазоні від 600Гц – 18кГц, а також структуру даного мікроконтролера, системи його команд за допомогою документації фірми-виробника, та рекомендацій, щодо правильного застосування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.04.2014 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Мета роботи.
Метою даної курсової роботи є розробка програми для ОМК яка реалізує 8 звукових ефектів в діапазоні від 600Гц - 18кГц.
Даний курсовий проект реалізується на 8-розрядному мікроконтролері фірми Atmel серії AT90S8535. Для вдалого застосування ОМК та правильної розробки пристрою ми повинні вивчити структуру даного мікроконтролера, системи його команд з допомогою документації фірми-виробника. Тому у наступному пункті роботи наведені деякі теоретичні відомості про мікроконтролері фірми Atmel серії AT90S8535.
ЗМІСТ
ВСТУП
РОЗДІЛ 1. ОПИС МІКРОКОНТРОЛЛЕРА
1.1 Опис мікроконтроллера AT90S8535
1.2 Опис входів та виходів мікросхеми
1.3 Ядро мікроконтроллерів AVR
1.4 Flash - пам'ять
1.5 АЛП - Арифметко-Логічний пристрій
1.6 UART
1.7 Покажчик стека
1.8 EEPROM пам'ять даних
1.9 Таймери/лічильники
1.10 Кварцевий генератор
РОЗДІЛ 2. СТВОРЕННЯ ПРОГРАМИ
2.1 Представлення алгоритмів та блок-схем
РОЗДІЛ 3. Створення електроної схеми в PROTEUS
Висновок
Список літератури
ДОДАТОК А
ДОДАТОК Б
ДОДАТОК В
ВСТУП
Розвиток мікроелектроніки і широке вживання її виробів в промисловому виробництві, в пристроях і системах управління найрізноманітнішими об'єктами і процесами є в даний час одним з основних напрямів науково-технічного прогресу.
Використання мікроконтроллерів у виробах виробничого і культурно-побутового призначення не лише приводить до підвищення техніко-економічних показників виробів (вартості, надійності, споживаної потужності, габаритних розмірів) і дозволяє багато разів скоротити терміни розробки і відсунути терміни морального старіння виробів, але і додає їм принципово нові споживчі якості такі як розширені функціональні можливості, модифікація, адаптивність і т. д.
За останні роки в мікроелектроніці бурхливий розвиток отримав напрям, пов'язаний з випуском однокристальних мікроконтроллерів, які призначені для «інтелектуалізації» устаткування різного призначення. До теперішнього часу більше двох третин світового ринку мікропроцесорних засобів складають саме однокристальні мікроконтроллери.
Темою мого курсового проекту було розроблення програми для ОМК, яка реалізує 8 звукових ефектів в діапазоні частот 600Гц - 18 кГц.
В наш час широко використовуються різні види мікроконтролерів. Для виконання курсового проекта я використовував мікроконтролер AT90 S8535.
РОЗДІЛ 1. ОПИС МІКРОКОНТРОЛЛЕРА
1.1 Опис мікроконтроллера AT90S8535
Найбільш багатою периферією зі всіх Сlassic AVR володіє той, що з'явився в січні 1999 року мікроконтроллер AT90S8535. Він має додатково до перерахованих вузлів 10-розрядний АЦП з мультиплексором на 8 каналів і третій 8-розрядний таймер. Цей таймер має режими порівняння і широко-імпульсного модулятора, але головна його особливість полягає в тому, що він може працювати в асинхронному від всієї системи режимі, використовуючи додатковий зовнішній годинний кварц частотою 32,768 кГц, що дозволяє вести відлік реального часу в мікропроцесорній системі в астрономічних одиницях. розробка ОМК звуковий ефект
В своїй курсовій роботі для управління пристроєм був вибраний високопродуктивний мікроконтроллер RISC-архітектури серії AVR фірми Atmel AT90S8535. Він володіє вбудованою пам'яттю програм об'ємом 4096 слів і пам'яттю даних 512 байт. Будь-яка його команда виконується за 1 такт процесора. Тактова частота 8 Мгц [5].
Мал. 2. Блок-схема мікроконтроллера AT90S8535.
1.2 Опис входів та виходів мікросхеми
Мал. 3. Зображення розташування виводів.
VCC Напруга живлення.
GND Загальний провід.
Port A (PA7..PA0) Port A является 8-битовым двунаправленным портом ввода - вывода. Виводи порта можуть забезпечити внутрішні переміщені регістри (обраний для кожного біта). Порт буфера вивода можуть завантажити 20mA і можуть керувати світлодіодной скидкой. Виводи PA0 до PA7 використовуються як входи і на зовні низько розміщені,Вони будуть пропускати електричний струм, якщо переміщені на верх внутрішні резистори будуть активовані.
Port B (PB7..PB0) Port B є 8-бітовим двунаправленим портом ввода - вивода.Виводи порта можуть забезпечити внутрішні переміщені регістри. Порт буфера вивода можуть завантажити 20mA, Вивода порта, які назовні розташовані низько, передають електричний струм, якщо переміщені на верх внутрішні резистори будуть активовані.
Port C (PC7..PC0) Port B є 8-бітовим двунаправленим портом ввода - вивода.Виводи порта можуть забезпечити внутрішні переміщені регістри . Порт буфера вивода можуть завантажити 20mA, Вивода порта, які назовні розташовані низько, передають електричний струм, якщо переміщені на верх внутрішні резистори будуть активовані. Два виводи Port C можуть альтернативно використовуватися як генератор для Timer/Counter2.
Port D (PD7..PD0) Port D є 8-бітовим двунаправленим портом ввода - вивода.Виводи порта можуть забезпечити внутрішні переміщені регістри . Порт буфера вивода можуть завантажити 20mA, Вивода порта, які назовні розташовані низько, передають електричний струм, якщо переміщені на верх внутрішні резистори будуть активовані.
RESET Ввод скидання. Зовнішній сброс згенерований низьким рівнем на виводі СБРОСА. Сбросить імпульси більш ніж 50, навіть якщо тактовий генератор не будет працювати.
XTAL1 Вхід на підсилювач генератора інвертування і вхід на внутрішній тактовий генератор операційного каналу.
XTAL2 Вихід від підсилювача генератора інвертування.
AVCC AVCC - вивід поставки напруги для Порта A і Конвертор A/D. Якщо АЦП не використовується, даний вивід повинен бути підключений з VCC. Якщо АЦП використовується, даний вивід повинен бути підключений з VCC через фільтр нижніх частот.
AREF AREF - аналоговий ввод довідкової інформації для Конвертора A/D. Для операцій АЦП напруга в діапазоні 2V до AVCC должно повино бути використано до даного вивода.
AGND Аналогова земля. Якщо у плати є окрема аналогова площина землі, даний вивід повинен бути підключений з цією площиною землі. Інакше, підєднатися з заземленням
AT90S8535 є 8-ми розрядними мікроконтроллерами CMOS з низьким рівнем енергоспоживання, заснованими на вдосконаленій AVR RISC архітектурі. Завдяки виконанню високопродуктивних інструкцій за один період тактового сигналу, AT90S8535 досягають продуктивності, що наближається до рівня 1 MIPS на Мгц, забезпечуючи розробникові можливість оптимізувати рівень енергоспоживання відповідно до необхідної обчислювальної продуктивності.
1.3 Ядро мікроконтроллерів AVR
Мал. 1. Блок-схема мікропроцесорного ядра мікроконтроллерів AVR.
Ядро AVR містить потужний набір інструкцій і 32 регістра загального призначення. Всi 32 регістри безпосередньо підключено до арифметико - логічному пристрою (АЛП), що забезпечує доступ до двох незалежних регістрів при виконанні однієї інструкції за один такт. В результаті, дана архітектура має вищу ефективність коди, при підвищенні пропускної спроможності, аж до 10 разів, в порівнянні із стандартними мікроконтроллерами CISC.
Ядро містить 32 регістри загального призначення (РЗП) R0- R31:
R0 |
R8 |
R16 |
R24 |
||
R1 |
R9 |
R17 |
R25 |
||
R2 |
R10 |
R18 |
R26 |
X |
|
R3 |
R11 |
R19 |
R27 |
||
R4 |
R12 |
R20 |
R28 |
Y |
|
R5 |
R13 |
R21 |
R29 |
||
R6 |
R14 |
R22 |
R30 |
Z |
|
R7 |
R15 |
R23 |
R31 |
Всі РЗП діляться на дві групи: Low- і high-регістрі (R0- R15 і R16- R31 відповідно). Лише регістри групи High можуть бути використані в командах, що використовують як другий операнд 8-ми бітову константу. Тут регістр R0 виділений особливо, оскільки лише він може бути використаний командою LPM (завантаження байта з пам'яті програм за адресою в покажчику Z).
Для непрямої адресації останні шість регістрів (R26- R31), об'єднані в пари, можуть використовуватися як 16-ти бітові покажчики X, Y, Z в командах завантаження/збереження операндів. Дані покажчики можуть бути пост інкрементірованими або предекрементірованими. А крім того, при роботі з покажчиками Y і Z можливе використання 6-ти бітового змішення, що корисно при роботі із структурами даних.
Більшість команд процесора виконуються за один такт задаючого генератора. Команди переходу, в разі виконання умови переходу, вимагають один додатковий такт. Всі команди завантаження/збереження, що використовують режими непрямої адресації, команди збереження/відновлення регістра стека і 16-ти бітові арифметичні операції виконуються за два такти задаючого генератора. Найтривалішими є команди виклику підпрограм, команди завантаження/збереження байта по абсолютній 16-ти бітовій адресі, команда читання байта з пам'яті програм і команда зупинки процесора - 3 такта, а на виконання команд повернення з підпрограми або переривання потрібне всі 4 такта.
Майже всі команди кодуються 16-у бітами. Є лише чотири команди, для кодування яких потрібно 32 біта (2 слова) програмної пам'яті: дві команди завантаження/збереження байта по абсолютній16-ти бітовій адресі і команди далекого переходу і виклику підпрограми (у мікроконтроллерах тих, що мають розмір пам'яті програм більш 8К).
AT90S8535 мають:
- 8 Кбайт Flash - пам'яті з підтримкою внутрісистемного програмування;
- 512 байт EEPROM, 512 байт SRAM, 32 лінії I/О загального призначення;
- 32 робочих регістра загального призначення:
- контроллер реального часу (RTC);
- три універсальних таймера/ лічильника з режимами порівняння;
- програмований послідовний UART;
- 8-ми канальний, 10-ти розрядний АЦП;
- ограмований стежачий таймер з вбудованим тактовим генератором і програмований послідовний порт SPI для завантаження програм в Flash пам'ять, а також, три програмно вибираних режиму економії енергоспоживання. Режим чекання «Idle» зупиняє CPU, але залишає функціонувати SRAM, таймери/лічильники, SPI порт і систему переривань. Режим економії енергоспоживання «Power Down» зберігає значення регістрів, але зупиняє тактовий генератор, відключаючи всі останні функції мікроконтроллера, аж до наступного зовнішнього переривання, або до апаратної ініціалізації. У режимі економії енергоспоживання «Save», тактовий генератор таймера продовжує працювати, забезпечуючи користувачеві функції таймера, в той час, як остання частина пристрою знаходиться в стані спокою. Пристрої виробляються з вживанням технології незалежної пам'яті з високою щільністю розміщення, розробленою в корпорації Atmel.
1.4 Flash - пам'ять
Вбудована Flash-пам'ять з підтримкою внутрісистемного програмування забезпечує можливість перепрограмування програмної коди у складі системи, за допомогою SPI послідовного інтерфейсу, або за допомогою стандартного програматора незалежної пам'яті. Завдяки поєднанню вдосконалене 8-ми розрядного RISC CPU з Flash- пам'яттю з підтримкою внутрісистемного програмування на одному кристалі вийшли високопродуктивні мікроконтроллери AT90S8535, що забезпечують гнучке і економічне-високоефективне рішення для багатьох додатків вбудовуваних систем управління.
АЛП підтримує арифметичні і логічні операції між регістрами або між константою і регістром. Єдині дії регістра можуть також виконуватися в АЛП. Після арифметичної операції, Регістр Статусу оновлений, щоб відобразити інформацію про результат дії.
Хід виконання програми забезпечений умовним і безумовним переходом і командами звернення, здатний безпосередньо звертаються до цілого адресного простору. Більшість команд AVR мають один 16-розрядний формат слова. Кожна програмна адреса пам'яті містить 16- або 32-розрядну команду.
Протягом переривань і звернень до підпрограми, лічильник (ПК) Команд адреси повертається в стек. Стек фактично розміщений в загальних даних SRAM, і тому стековий розмір тільки обмежений повним SRAM-розміром. Всі призначені для користувача програми повинні ініціалізувати SP в “Встановленій рутині” (перед підпрограмами). Покажчик вершини (SP) стека для читання/запису доступний у I/O простір. Дані SRAM можуть легко бути доступні через п'ять іншої адресації метода підтримки в архітектурі AVR. Інтервали пам'яті в архітектурі AVR - всі карти лінійного і регулярного розподілу пам'яті.
Всі переривання мають окремий вектор переривання в таблиці Interrupt Vector. Переривання мають пріоритет відповідно до їх позиції вектора переривання. Нижча адреса вектора переривання - вищий пріоритет.
1.5 АЛП - Арифметко-Логічний пристрій
Високопродуктивний АЛП AVR діє в прямому зв'язку з усіма 32 регістрами загального призначення. В межах єдиного циклу годинника, арифметичні операції між регістрами загального призначення або між регістром і безпосереднім виконавцем. Дії АЛП діляться на три головні категорії -арифметичний, логічний і побітові функції. Деякі виконання архітектури також забезпечують могутню підтримку як signed/unsigned множення, так і дробового формату.
АVR AT90S8535 підтримуються повним набором програм і пакетів для розробки, включаючи: компілятори З, макроасемблери, отладчики/ симулятори програм, внутрішньосхемні емулятори і набори для макетування.
1.6 UART
Можливо, зв'язок через асинхронний послідовний порт відходить в минуле, проте складно знайти контролер, UART, що не має у складі своєї периферії. Тому ховати його, думаю, рано. Раз так, то буде нелишнім сказати пару слів про те, як воно працює. Опис конкретної реалізації послідовного порту є в datasheet на кожен контроллер, тому опишу загальне для всіх.
UART можна розділити на приймач (Receiver) і передавач (Transmitter).
До складу UART входять: тактовий генератор зв'язку (бодрейт-генератор), керуючі регістри, регістри статуса, буфери і регістри зсуву приймача і передавача. Бодрейт-генератор задає тактову частоту приймача для даної швидкості зв'язку. Регістри керування, задають режим роботи послідовного порту і його переривань. У статусному регістрі встановлюються прапори по різних подіях. У буфер приймача потрапляє прийнятий символ, в буфер передавача поміщають передаваний. Регістр зсуву передавача - це обойма, з якої в послідовний порт вистрілюються біти передаваного символу (кадру). Регістр зсуву приймача по біту нагромаджує ті, що приймаються з порту біти. По різних подіях встановлюються прапори і генеруються переривання (завершення прийому/відправки кадру, звільнення буфера, різні помилки).
UART - повнодуплексний інтерфейс, тобто приймач і передавач можуть працювати одночасно, незалежно один від одного. За кожним з них закріплений порт - одна ніжка контроллера. Порт приймача позначають RX, передавача - TX. Послідовною установкою рівнів на цих портах відносно загального дроту ("землі") і передається інформація. За умовчанням передавач встановлює на лінії одиничний рівень. Передача починається посилкою біта з нульовим рівнем (старт-біта), потім йдуть біти даних молодшим бітом вперед (низький рівень - "0", високий рівень - "1"), завершується посилка передачею одного або двох бітів з одиничним рівнем (стоп-бітів). Електричний сигнал кадру посилки виглядає так:
Мал. 4. Електричний сигнал кадру посилки.
Перед початком зв'язку між двома пристроями необхідно набудувати їх приймачі на однакову швидкість зв'язку і формат кадру. Швидкість зв'язку або бодрейт (baudrate) вимірюється в бодах - число передаваних біт в секунду (включаючи старт і стопи-біти). Задається ця швидкість в бодрейт-генераторі діленням системної частоти на коефіцієнт, що задається. Типовий діапазон швидкостей: 2400 . 115200 бод. Формат кадру визначає число стоп-бітів (1 або 2), число біт даних (8 або 9), а також призначення дев'ятого біта даних. Все це залежить від типа контроллера.
Приймач і передавач тактуються, як правило, з 16-кратною частотою відносно бодрейта. Це потрібно для семплірованія сигналу. Приймач, зловивши падаючий фронт старт-біта, відлічує декілька тактів і наступні три такти прочитує (семпліруєт) порт RX. Це якраз середина старт-біта. Якщо більшість значень семплов - "0", старт-біт вважається таким, що відбувся, інакше приймач приймає його за шум і чекає наступного падаючого фронту. Після вдалого визначення старт-біта, приймач точно також семпліруєт серединки бітів даних і по більшості семплов вважає біт "0" або "1", записуючи їх в сдвіговий регістр. Стопи-біти теж семпліруются, і якщо рівень стоп-біта не "1" - UART визначає помилку кадру і встановлює відповідний прапор в регістрі, що управляє.
Мал. 5. Зображення Старт-біта UART.
Оскільки бодрейт встановлюється діленням системної частоти, при перенесенні програми на пристрій з іншим кварцевим резонатором, необхідно змінити відповідні налаштування UART.
1.7 Покажчик стека
Стек переважно використовується для зберігання тимчасових даних, для зберігання місцевих змінних і для зберігання адрес повернення після переривань і звернень до підпрограми. Регістр покажчика стека завжди указує на вершину стека. Відзначте, що стек здійснюється, як зростання від вищих розташувань пам'яті, щоб знизити розташування пам'яті. Це має на увазі, що команда PUSH зменшує покажчик стека.
Покажчик стека указує на область SRAM стека даних, де підпрограма і переривання стеку розташовані. Цей стековий простір в даних SRAM повинен бути визначений програмою перед тим, як будь-які звернення до підпрограми виконуватимуться або коли переривання дозволені. Покажчик стека повинен бути встановлений, щоб вказати вище 0x60.
Покажчик Вершини стека AVR здійснюється як двох 8-розрядного регістра в просторі I/O. Номер бітів, часто використовуваних, - залежність виконання. Відзначте, що простір даних в чийомусь виконані AVR архітектури - це так мало, тільки SPL потрібен. У цьому випадку, регістр SPH не буде присутній.
Мал. 6. Зображення роботи покажчика стека.
1.8 EEPROM пам'ять даних.
AT90S1200 містить 64 байти електричнознищуємої енергонезалежної пам'яті (EEPROM). EEPROM організована як окрема область даних, кожен байт якої може бути прочитаний і перезаписаний. EEPROM витримує не менш як 100000 циклів запису/зтирання. Доступ до енергонезалежної пам'яті даних задається регістром адреси, регістром даних і керуючим регістром.
1.9 Таймери/лічильники
AT90S8535 має три универсальних Таймера/лічильника - два 8-бітових T/Cs і один 16-разрядний T/C. Timer/Counter2 може довільно бути асинхроно синхронізований від exter-генератора nal. Даний генератор оптимізований для використання з кристалом годинників на 32.768 кГц, представленні для використання Timer/Counter2 як Годинник реального часу. Таймер/лічильника 0 і 1 мають індивідуальний вибір предмасштабування від того ж самого 10-бітового таймера предмасштабування. У Timer/Counter2 є свій власний дільник частоти. Таймери/лічильники можуть використовуватися як таймер з внутрішнім часом тактового генератора або як лічильник з зовнішнім підключенням виводу - це викликає підрахунок.
8-бітовий Timer/Counter0 може обирати джерело тактового генератора від CK, предмасштабування CK або зовнішні виводи. Крім того, це може бути зупинено як описано в спецификації для Регістра Керування Timer/Counter0 (TCCR0). Прапорець стану переповнення знайдені в Регістрі Прапора переривання Таймера/лічильника (TIFR). Керуючі сигнали знайдені в Регістрі Керування Timer/Counter0 (TCCR0). Переривання допускає/відключає параметри настройки для Timer/Counter0 знайдені в Регістрі Маски переривання Таймера/лічильника (TIMSK). Коли Timer/Counter0 зовнішньо синхронізований, зовнішній сигнал синхронізований з частотою генератора центрального процесора. Виконання вибірки зовнішнього таймера, мінімальний час між двома переходами зовнішнього таймера повинно бути в крайньому разі одним внутрішнім центральним процессором період тактового генератора. Сигнал зовнішнього таймера вибраний по зростаючому краю внутрішнього центрального процессора тактовий генератор. 8-бітовий Timer/Counter0 показує високу дозволяючу спроможність і використання високої точності з більш низькими можливостями передмасштабування. Точно так як високі можливості передмасштабування виконує корисне Timer/Counter0 для більш низьких функцій швидкості або точних функцій синхронизації з infre-діями quent.
Мал. 7. Блок-схема 8-бітового Timer/Counter0
16-розрядний Timer/Counter1 може обирати джерело тактового генератора від CK, передмасштабування CK або exter-вивід nal. Крім того, це може бути остановлено как описано в спецификації для Регістра Керування Timer/Counter1 (TCCR1A і TCCR1B). Різні прапорці стану і керуючі сигнали знайдені в Регістрі Керуванння Timer/Counter1 (TCCR1A і TCCR1B). Переривання enable/dis - можливі параметри настройки для Timer/Counter1 знайдені в Регістрі Маски переривання Таймера/лічильника (TIMSK).
Коли Timer/Counter1 зовнішньо синхронізований, зовнішній сигнал синхронізований з частотою генератора центрального процесора. Виконання ввибірки зовнішнього таймера, мінімальний час між двома переходами зовнішнього таймера повинно бути в крайньому разі одним внутрішнім центральним процессором період тактового генератора. Сигнал зовнішнього таймера обраний по зростаючому краю внутрішнього центрального процессора тактового генератора.
16-розрядний Timer/Counter1 показує високою дозволяючою спроможністю і використання високої точності з більш низькими можливостями передмасштабування. Точно так як високі можливості передмасштабування роблять корисним Timer/Counter1 для більш низьких функцій швидкості або точних функцій синхронизації з нечастими діями.
Мал. 8. Блок-схема 16-розрядного Timer/Counter1.
8-бітовий Timer/Counter2 може обирати джерело тактового генератора від PCK2 або передмасштабованого PCK2. Це також може бути зупинено як описано в специфікації для Регістра Керування Таймера/лічильника (TCCR2).
Різні прапорці стану знайдені в Регістрі Прапорця переривання Таймера/лічильника (TIFR). Керуючі сигнали знайдені в Регістрі Керування Таймера/лічильника (TCCR2). Переривання допускає/відключає параметрам налаштування, a знайдений в Регістрі Маски переривання Таймера/лічильника (TIMSK). Цей модуль показує з високою дозволяючою можливістю і використання високої точності з нижче перед можливості caling. Точно так як високі можливості передмасштабування роблять цей модуль корисним більш низькі функції швидкості або точні функції синхронізації з нечастими діями. Функція Output Compare Випуску включає додаткову очистку від лічильника, порівнюють циновку і дію на Випуску Порівняння вивода, PD7 (OC2), порівнюють відповідності. Повідомлення PORT D7 не встановлюєзначення OC2 в перед назначене значення.
Мал. 9. Блок-схема 8-бітового Timer/Counter2
1.10 Кварцевий генератор
XTAL1 й XTAL2 є входом і виходом інвертуючого підсилювача, який можна використати для генератора тактових імпульсів. Можна використовувати як кварцеві, так і керамічні резонатори. При підключенні зовнішнього тактового сигналу вивід XTAL2 залишається непідключеним, а XTAL1 підключається до виходу зовнішнього генератора.
РОЗДІЛ 2. СТВОРЕННЯ ПРОГРАМИ
2.1 Представлення алгоритмів та блок-схем
Створення програмного забезпечення є дуже важливим етапом даної роботи, його слід розглядати у розрізі абстрагування від апаратної реалізації, бо необхідно розділити, що робитиме принципова схема, а що робитиме програмне забезпечення. Тому програма має взяти на себе якомога більше функцій, а на апаратну частину відводиться роль додаткового інструменту, який лише допомагає її правильно працювати.
Зважаючи на це, слід представити структуру програми та алгоритми, що використовуються у ній для реалізації завдання.
На попередньому етапі вибору засобів розробки було вирішено, що програма має бути написана на мові програмування С, що дає більше варіантів створення програми, адже С - мова більш високого рівня, ніж асемблер.
Враховуючи це, оскільки переривання не потрібні для роботи схеми, то усі дії можна розмістити у циклі головної функції програми main. Такий підхід дозволяє одразу перевіряти сигнали, які подаються на мікроконтролер та реагувати на них. Реакція відбувається в залежності від того, які кнопки натиснуті, а перевірка кнопок, які натиснені, відбуватиметься в декількох умовних операторах.
Як зрозуміло з завдання, необхідно організувати все так, щоб ОМК відслідковував положення кнопок, і в залежності від того, які кнопки натиснуті, генерував звукові сигнали різної частоти або сигнали, частота яких поступово змінюється у часі. Сигнали від мікроконтролера подаються на цифро-аналоговий перетворювач, а вже від нього потрапляють на пристрій виведення звуку, завдяки якому можна чути звуковий сигнал.
Зважаючи на все вище зазначене, наведемо алгоритм, за яким здійснюється робота програми.
- Настроїти роботу порту на вивід;
- Зчитати стан кнопок на порті;
- Виділити біти, які необхідні і використовуються для генерації сигналу;
По черзі перевіряти, які можливі варіанти натиснених кнопок і, в залежності від результату генерувати імпульси, що мають реалізовувати звуковий ефект.
Самі блоки, що відповідають за генерацію сигналів також знаходяться у головному циклі. Перехід на них відбувається одразу після знаходження стану кнопок. Генерація імпульсів відбувається декількома шляхами:
- за допомогою виводу в порт сигналів і підпрограми затримки (період постійний);
- те ж саме але довжина затримки постійно змінюється;
- на основі виводу у порт значень з масиву з постійною затримкою;
- те ж саме, але виводиться сума;
- накладанням 2 ефектів отримуємо новий ефект.
РОЗДІЛ 3. Створення електроної схеми в PROTEUS
PROTEUS VSM -- пакет программ для автоматизированного проектирования электронных схем. Разработка Labcenter Electronics (Великобритания).
Пакет представляет собой систему схемотехнического моделирования, базирующуюся на основе моделей электронных компонентов принятых в PSpice. Отличительной чертой пакета PROTEUS VSM является возможность моделирования работы программируемых устройств: микроконтроллеров, микропроцессоров, DSP и проч. Библиотека компонентов содержит справочные данные. Дополнительно в пакет PROTEUS VSM входит система проектирования печатных плат.
Пакет является коммерческим. Бесплатная ознакомительная версия характеризуется полной функциональностью, но не имеет возможности сохранения файлов.
Короткий опис пристроїв
Для написання курсової роботи ми використали такі пристрої:
Мал. 10. Зображення мікроконтролера AT90S8535.
Мікроконтролер: AT90S8535 - 8-розрядний мікроконтролер малопотужного Cmos, заснований на AVR. Виконуючи могутні інструкції в єдиному машинному циклі AT90S8535 досягає продуктивності, що наближається до 1 мільйона команд в секунду за Мгц, що дозволяє спроектувати систему так, щоб оптимізувати енергетичне споживання проти обробки швидкості.
ЦАП.
Мал. 11. Зображення DAC0808.
ЦАП - це пристрій, який перетворює цифровий сигнал аналоговий. Сигнал що виходить від мікроконтроллера подається на ЦАП , для перетворення смгналу з цифрового на аналоговий.
Мал. 12. Зображення підсилювача сигналів.
Підсилювач в даній яхемі використовується для підсилення аналового сигналу, який подається на підсилювач від ЦАП.
Мал. 13. Зображення пристрою для вивода звкових сигналів.
Пристрій за допомогою якого відтворюємо звук.
Висновок
Під час виконання курсового проекту було виконано всі стадії розробки типового технічного проекту:
Побудова технічного завдання на основі наявних критеріїв до розробки курсового проекту та вимог викладача.
Побудова ескізного проекту (попередня розробка принципової схеми приладу, коду програми, тестування).
Створення технічного проекту (побудова схеми,програмування мікроконтролеру та інсталяція контролера на схему прилада, вдосконалення роботи приладу).
Розробка технічної документації у вигляді звіту з курсової роботи та публікації в її рамках програмного коду з найбільш необхідними коментарями до нього.
При виконанні роботи було створене відповідне апаратне забезпечення, що вимагало базових знань з фізики, здобутих нами раніше в процесі навчання. При проектуванні апаратного забезпечення були здобуті нові та закріплені старі знання в цій галузі.
Для виконання даного курсового проекту з ряду однокристальних мікроконтроллерів, я обрав мікроконтроллер фірми Atmel AT90S8535.
З допомогою даного контролера був створений пристрій призначений для виводу 8 звукових сигналів в діапазоні від 600 Гц до 18 кГц. Даний пристрій має практичне застосування і може використовуватися для встановлення сигналізації. До того ж створена принципова програма при необхідності може бути використана при вивченні базових принципів роботи ОМК даного типу.
ДОДАТОК А.
Зображення елетронної схеми пристрою.
ДОДАТОК Б.
Блок-схема алгоритму роботи пристою:
Размещено на http://www.allbest.ru/
ДОДАТОК В.
Лістинг програми:
#include<io8535v.h>
#include<macros.h>
void delay(int us)
{
int c1,c2;
for(c1=0;c1<us;c1++)
for(c2=0;c2<10;c2++)
NOP();
}
void main()
{
char d;
int i,j;
char s[50]={144,160,175,189,203,215,226,235,243,249,253,255,255,253,249,243,235,226,215,203,189,175,160,144,128,112,97,81,67,54,41,30,21,13,7,3,1,1,3,7,13,21,30,41,53,66,81,96,112,128};
DDRC=0xFF;
while(1)
{
d=PINB;
d=d&0x07;
if(d==0b00000110)
{
PORTC=0xFF;
delay(100);
PORTC=0;
delay(100);
}
else if(d==0b00000101)
{
for(i=1;i<400;i++)
{
PORTC=0xFF;
delay(400-i);
PORTC=0;
delay(i);
}
}
else if(d==0b00000011)
{
for(i=1;i<50;i++)
{
PORTC=s[i];
delay(100);
}
}
else if(d==0b00000100)
{
for(i=0, j=0;i<50;i++,j=j+2)
{
PORTC=s[i]+s[j]/2;
delay(100);
}
}
else if(d==0b00000001)
{
for(i=0;i<10;i++)
{
PORTC=0xFF;
delay(100);
PORTC=0;
delay(100);
}
for(i=0;i<10;i++)
{
PORTC=0xFF;
delay(400);
PORTC=0;
delay(400);
}
}
else if(d==0b00000000)
{
for(i=0;i<255;i++)
{
PORTC=i;
delay(100);
}
for(i=255;i>0;i--)
{
PORTC=i;
delay(100);
}
}
else
{
PORTC=0;
}
}
}
Размещено на Allbest.ru
Подобные документы
Огляд Windows 95/98: загальні відомості, аналіз файлової системи. Розробка програми, що виконує всі основні функції файлового менеджера та може використовуватись як повноцінний програмний продукт даного типу. Установка та умови застосування програми.
курсовая работа [360,6 K], добавлен 17.10.2013Короткий опис мікроконтролера ATmega6450, його особливості та опис виводів. Розробка принципової схеми стенду. Написання програми на мові СІ при використанні програмного середовища CodeVisionAVR. Перепрограмування мікроконтролера ATmega6450 сімейства AVR.
курсовая работа [491,2 K], добавлен 15.05.2013Принципи роботи команд мікросхеми 24LC08: читання, запису даних. Опис і блок-схеми програми і підпрограм, що обслуговує пристрій. Вибір середовища програмування і розробка програми, яка забезпечує можливість демонстрації команд. Проведення тестування.
курсовая работа [114,2 K], добавлен 08.12.2011Розробка програми-емулятора для заданої навчальної електронної обчислювальної машини, яка в спрощеному виді відображає структуру реальної машини. Формати представлення інформації та команд. Програмування формул. Циклічна програма з розгалуженням.
курсовая работа [88,4 K], добавлен 27.08.2012Обґрунтування вибору автоматизованої системи для створення конструкторської документації. Проектування 3D моделі і креслення деталі в системі SolidWorks. Розробка API програми. Призначення деталі "прес-форма". Розробка керуючої програми для устаткування.
курсовая работа [3,3 M], добавлен 16.12.2013Дослідження можливостей та властивостей мікроконтролера ATtiny13, його архітектури. Розробка програми, що керує роботою мікропроцесора. Моделювання роботи системи кодового захисту з однією кнопкою. Організація пам’яті та розподіл адресного простору.
курсовая работа [1,0 M], добавлен 01.06.2013Обробка масивів формалізованих записів, їх застосування у базах даних підприємств для пошуку інформації про об’єкт. Вимоги до програмного продукту і документації; його структура і функціональна схема. Посібник користувача, умови виконання програми.
курсовая работа [391,0 K], добавлен 13.10.2012Загальна характеристика методів проектування та документації додатків. Розробка інтерфейсу програми для медичного діагностичного центру. Вибір архітектури. Описання логічної структури програми. Розробка структури бази даних проекту, полів таблиць.
курсовая работа [2,0 M], добавлен 21.08.2015Сутність та характерні особливості системного програмування. Історія розвитку комп'ютерних ігор. Створення програми, що реалізує гру "Lines" в середовищі С++ за допомогою автоматного підходу, її правила. Розробка і опис структурної і функціональної схем.
курсовая работа [610,4 K], добавлен 12.02.2014Розробка структурної та принципипової схеми мікропроцесорної системи, їх структура и головні елементи. Розробка програми мікропроцесора, а також пристрою для блоку воду-виводу, схеми дешифратора. Інтерфейс і закономірності зв’язку в комп’ютером.
курсовая работа [639,9 K], добавлен 09.09.2015