Автомат світлових ефектів на мікроконтролері AVR
Огляд схемних рішень світлової сигнальної індикації, будова мікроконтролера ATMEGA8, огляд алгоритмів, схемних та програмних рішень. Алгоритм роботи мікропроцесорного пристрою сигналізації світлодіодного індикатора. Компілятор мови асемблер для AVR.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 01.02.2015 |
Размер файла | 5,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Зміст
1. Будова мікроконтролера ATMEGA8, огляд алгоритмів, схемних та програмних рішень поставленої задачі
1.1 Огляд схемних рішень світлової сигнальної індикації
1.2 Будова вибраного мікроконтролера
2. Розробка схем структурної, принципової та алгоритму роботи програми
3. Розробка програми на мові програмування ASSEMBLER
4. Розробка програми на мові програмування C
5. Моделювання в PROTEUS VSM
Висновки
Перелік посилань
Додатки
1. Будова мікроконтролера ATMEGA8, огляд алгоритмів, схемних та програмних рішень поставленої задачі
1.1 Огляд схемних рішень світлової сигнальної індикації
Застосування мікроконтролерів в автоматах світлових ефектів дозволяє значно збільшити їх функціональні можливості в порівнянні з аналогічними пристроями, виконаними на цифрових логічних мікросхемах.
Рисунок 1.1 - Мікропроцесорний пристрій автомата світлових ефектів
Кількість реалізованих різноманітних світлових ефектів обмежується лише фантазією розробника і об'ємом пам'яті мікроконтролера. Крім того, число і вид світлових ефектів можна змінювати для кожного конкретного випадку, підправляючи лише програмне забезпечення [3].
Принципова схема пристрою показана на рис. 1.1. Його основа - мікроконтролер DD1, тактову частоту якого задає кварцовий резонатор ZQ1 на частоту 10000 кГц. Мікроконтролер DD1 через регістр DD2 управляє ключами на транзисторах VT1 - VT8. Відкриваючись, ці транзистори подають напругу живлення на гірлянди світлодіодів. Усього таких гірлянд вісім, і в кожній з них по вісім світлодіодів - HL2 - HL9, HL10 - НL17 і т. д.
Транзистор VT1 подає живлення на гірлянду світлодіодів HL2 - HL9, VT2 - на гірлянду HL10 - HL17 і т. д. Управляє транзисторами регістр DD2. При високому рівні на виході, наприклад 1, з'єднаний з ним через струмообмежуючі резистор R11 транзистор VT1 закритий, при низькому рівні - відкритий.
Резистори R2- R9 обмежують струм через світлодіоди. Який з них в кожній з гірлянд горітиме залежить від рівнів на лініях порту Р 1.0 - Р 1.7 мікроконтролера DD1. При високому рівні всі з'єднані з цією лінією порту (через відповідні струмообмежуючі резистори) світлодіоди не горять, а при низькому горить світлодіод в тій гірлянді, на яку подано напругу живлення.
У пристрої застосована послідовна, так звана динамічна подача напруги на гірлянди Світлодіод HL1 сигналізує про наявність напруги живлення і режимах роботи пристрою, конденсатори С 2 - С 4 - блокувальні.
Після подачі напруги живлення на вхід RST (вивод 1) мікроконтролера DD1 через RC- ланцюг C1R16 надходить високий рівень, який формує сигнал початкової установки. При ініціалізації на всіх лініях порту Р 1 встановлюються високі логічні рівні, які записуються в регістр DD2. Тому на його виходах також високі рівні, транзистори VT1 - VT8 закриті.
У програмі мікроконтролера закладені дванадцять варіантів світлових ефектів, їх опису наведені в таблиці. Номер виконуваного світлового ефекту задають вимикачами SA1 - SA4. Розімкнуті контакти відповідають "1", а замкнуті - "О". Кнопками SB1 - SB5 встановлюють режими роботи пристрою.
При натисканні на кнопку SB1 "Старт / стоп " включають або вимикають ефект, встановлений вимикачами. Кнопка SB2 " Дозвіл " дозволяє або забороняє виконання комбінації світлових ефектів. При натисканні на дану кнопку пристрій отримує дозвіл на виконання комбінації незалежно від положень вимикачів SA1 - SA4, при цьому мигає світлодіод HL1. Для запуску комбінації ефектів слід натиснути на кнопку SB1.
Принципова схема пристрою показана на малюнку. Його основа - мікроконтролер DD1, тактову частоту якого задає кварцовий резонатор ZQ1на частоту 10000 кГц. Мікроконтролер DD1 через регістр DD2 управляє ключами на транзисторах VT1 - VT8. Відкриваючись, ці транзистори подають напругу живлення на гірлянди світлодіодів. Усього таких гірлянд вісім, і в кожній з них по вісім світлодіодів - VD2 - VD9, VD10 - VD17 і т.д.
Транзистор VT1 подає живлення на гірлянду світлодіодів HL2 - HL9, VT2 - на гірлянду VD10 - VD17 і т. д. Управляє транзисторами регістр DD2. При високому рівні на виході, наприклад 1, з'єднаний з ним через струмообмежуючі резистор R11 транзистор VT1 закритий, при низькому рівні - відкритий.
Резистори R2- R9 обмежують струм через світлодіоди. Який з них в кожній з гірлянд горітиме залежить від рівнів на лініях порту Р 1.0 - Р 1.7 мікроконтролера DD1. При високому рівні всі з'єднані з цією лінією порту (через відповідні струмообмежуючі резистори) світлодіоди не горять, а при низькому горить світлодіод в тій гірлянді, на яку подано напругу живлення.
У пристрої застосована послідовна, так звана динамічна подача напруги на гірлянди Світлодіод HL1 сигналізує про наявність напруги живлення і режимах роботи пристрою, конденсатори С 2 - С 4 - блокувальні.
Після подачі напруги живлення на вхід RST (вивод 1) мікроконтролера DD1 через RC- ланцюг C1R16 надходить високий рівень, який формує сигнал початкової установки. При ініціалізації на всіх лініях порту Р 1 встановлюються високі логічні рівні, які записуються в регістр DD2. Тому на його виходах також високі рівні, транзистори VT1 - VT8 закриті, а всі гірлянди знеструмлені.
Рисунок 1.2 - Мікропроцесорний пристрій автомата світлових ефектів
Пристрій (рис. 1.2) виконано на основі мікроконтролера Atmega8L-8 [4]. У Flash-пам'яті мікроконтролера записані 30 світлових ефектів, які відтворюються послідовно. Перемикання програмного блоку світлового ефекту проводиться за допомогою двох кнопок. Натискання кнопки "+" викликає відтворення наступного в програмі світового ефекту, а кнопки "-" - попереднього. Для зручності порядковий номер кожного світлового ефекту відображається на двох 7-сегментних цифрових індикаторах.
Пристрій живиться від постійної напруги в діапазоні 10...15 В. Як джерело живлення можна використовувати стандартний мережевий адаптер з допустимим струмом навантаження 0,2...0,5 А, Конструктивною особливістю представленого перемикача світлових ефектів є використання елементів поверхневого монтажу, що дозволяє знизити масогабаритні показники пристрою.
Мікроконтролер Atmega8L - 8 (DD1) обраний для управління гірляндами з світлодіодів як найбільш доступний за ціною і простий у програмуванні (підтримує внутрісхемний програмування). Генерація світлових ефектів і опитування кнопок управління відбувається за програмою, розташованої в області Flash - пам'яті програм мікроконтролера.
Сама програма займає трохи більше 4 Кбайт. Внутрішній генератор програмно налаштований на частоту 4 МГц, Індикація номера програми здійснюється на двох 7 - сегментних індикаторах із загальним анодом типу CPD- 03011SR1 / A (HG1 і HG2). Керують індикаторами два включених послідовно зсувних регістра на мікросхемах 74НС 595 (DD2 і DD3).
Зсувні регістри DD2 і DD3 управляються що надходять на вхід S1N (вивод 14) кодом. Послідовне включення регістрів дозволяє відображати на світлодіодних індикаторах HG1 і HG2 десятки і одиниці, не вдаючись до динамічної індикації. Резистори R11... R16 піднімають потенціали на входах мікросхем DD2, DD3 для їх правильної роботи. DD2, DD3 - позитивні імпульси, як буферні інверторів використовуються елементи мікросхем DD4, DD5, PD6. Резистори R3... R24 обмежують струм через світлодіодні індикатори. Імпульси позитивної полярності надходять з висновків 23...26 DD1 на бази VT1...VT4, відкриваючи їх. Резистори R30...R33 не допускають перевищення струму в колах управління транзисторами. Кожен з транзисторів комутує відповідну гірлянду світлодіодів. Паралельно гірляндам включені сигнальні світлодіоди HL1...HL4, які индицируют їх стан. Резистори R26...R29 задають струми через світлодіоди. Для плавного запалювання і гасіння гірлянд використовується транзистор VT5 який управляється ШІМ- імпульсами, які надходять на його базу з порту РВ 1 (виведення 13) мікроконтролера. Змінюючи програмно тривалість імпульсів, можна керувати яскравістю гірлянд. Це відбувається тому, що підключення емітерів VT1... VT4 до загального проводу здійснюється через перехід емітер - колектор VT5. Міняючи тривалість комутуючого імпульсу, можна змінювати величину струму, що протікає через VT1...VT4.
У разі зміни програмного коду і при налагодженні нових світлових ефектів світлодіоди HL1...HL4 використовуються як сигнальні. При необхідності перепрограмування мікроконтролера Atmega8L - 8 можна здійснити внутрісхемний по лініях MiSO, MOSI, SCK.
Відразу після подачі живлення на мікроконтролер починає виконуватися програма. У перших рядках програми встановлюється конфігурація портів і оголошуються змінні. Потім задається конфігурація таймера і порту SPI, через який здійснюється управління світлодіодними індикаторами. Далі дозволяються переривання, і в каналі PWM встановлюється максимальна тривалість імпульсів. На початку основної програми створений цикл з нескінченним повторенням і виходом з циклу за умовою. При цьому жоден з світлодіодів HL1...HL4 не світиться.
Перше натискання кнопки SB1 (" +") викликає перехід до першого програмному модулю. У цьому модулі програмно реалізовано запалювання цифри "1" на світлодіодному індикаторі, включення світлодіода HL1 і відповідної (першої) гірлянди з світлодіодів, підключеної до гнізда ХТ 2.
Кожне натискання на кнопку SB1 викликає включення наступного світового ефекту і відображення збільшеного на одиницю номера програмного модуля, що відтворює світловий ефект. А натискання на кнопку SB2 ("-") викликає включення попереднього світового ефекту і відображення на світлодіодному індикаторі номера програмного модуля. Таким чином, за допомогою кнопок SB1 і SB2 можна встановлювати будь-який з запрограмованих світлових ефектів. Придушення брязкоту контактів кнопок реалізовано програмно. Це необхідно, щоб переривання не спрацювало двічі і не виник ефект " перестрибування " через шматок коду. Величина тимчасової затримки вибрана з урахуванням комфортності користування пристроєм і необхідного часу для придушення хаотичних імпульсів брязкоту.
До складу кожної гірлянди входять 18 світлодіодів, включених паралельно. Для гірлянд придатні вітчизняні світлодіоди АЛ 307КМ або АЛ 307БМ, а також імпортні L5013SRT в корпусі діаметром 5 мм. Кожну з гірлянд можна зібрати з світлодіодів одного або різного кольору світіння.
Світлодіоди можуть бути як звичайними, так і підвищеної яскравості, але в останньому випадку, можливо, доведеться підібрати опору резисторів R34...R37. Гірлянди можна скомпонувати у вигляді світлодіодних ламп. У цьому випадку світлодіоди кожної гірлянди зручно розташувати на круглій друкованій платі, креслення якої показаний на, а розташування елементів.
Всі резистори й неполярні конденсатори - для поверхневого монтажу типорозміру 1206 або 0805. Оксидні конденсатори - у корпусі для поверхневого монтажу, типу " D". Сигнальні світлодіоди - для навісного монтажу, будь-якого типу і кольору, в корпусі діаметром 3 мм, наприклад, L3014. Мікросхема DA1 (7805) - стабілізатор з вихідним напругою 5 В. Її монтаж виконують з боку провідників. Мікроконтролер Atmega8L - 8 - у корпусі TQFP, мікросхеми DD2...DD6 - в корпусах SOIC - 14, SOIC -16. Всі транзистори - у корпусі для поверхневого монтажу SOIC -23. В якості вимикача живлення встановлена малогабаритна двосекційна кнопка (з фіксацією) типу MPS700. Якщо зазначеної кнопки немає, просто замкніть перемичкою комутовані струмоведучі доріжки. При монтажі перемичок рекомендується липкою ізоляційною стрічкою заклеїти весь простір під перемичками, щоб не допустити коротких замикань припоєм, розпаяти перемички на позиціях і акуратно прибрати ізоляційну стрічку.
Запропонований автомат світлових ефектів зібраний на мікроконтролері і світлодіодах, які утворюють контур ялинки. У пристрої реалізовані вісім світлових ефектів [5].
Основа пристрою (рис. 1.3) - мікроконтролер DD1, він налаштований для роботи з вбудованим тактовим RC- генератором. Відповідно до керуючої програмою мікроконтролер формує сигнали на лініях порту GPO - GP2, GP5, які надходять на затвори транзисторів VT1 - VT4. При низькому рівні на цих лініях транзистори відкриті і живить напруга надходить на відповідні двоколірні світлодіоди HL1 - HL28, які розміщені на друкованій платі. Всі резистори (R1- R56) - струмообмежуючі, їх підбіркою можна змінювати яскравість світіння світлодіодів. Живлення мікроконтролера і світлодіодів стабілізовано інтегральним стабілізатором DA1.
Рисунок 1.3 - Мікропроцесорний пристрій автомата світлових ефектів
Рисунок 1.4 - Мікропроцесорний пристрій автомата світлових ефектів
У пристрої реалізовані вісім світлових ефектів, які змінюються в автоматичному режимі:
- Плавне запалювання і згасання всіх світлодіодів червоного кольору світіння;
- Плавне запалювання і згасання всіх світлодіодів зеленого кольору світіння;
- Почергове перемикання кольорів нижньої і верхньої частин ялинки;
- Спалахи світлодіодів червоного кольору світіння з плавним збільшенням частоти;
- Спалахи світлодіодів зеленого кольору світіння з плавним збільшенням частоти;
- Почергова зміна кольору світіння;
- Почергове запалювання нижньої і верхньої частин ялинки червоним кольором;
- Почергове запалювання нижньої і верхньої частин ялинки зеленим кольором.
Автомат, описаний у статті, крім своєї основної функції - включення- виключення чотирьох навантажень по числу ударів в долоні, може управляти будь-яким пристроєм світлових ефектів [6].
У більшості пристроїв світлових ефектів застосовують генератор, частота якого регулюється змінним резистором. Швидкість перемикання ламп або гірлянд при цьому не збігається з темпом музики, і доводиться вручну перенастроювати генератор під кожну мелодію. Запропонований акустичний автомат (рис.1.4) дозволяє перемикати гірлянди відповідно до темпом музики. За відсутності звуку лампи перемикаються з мінімальною частотою, яка встановлюється підбором резистора R11.
Чутливість автомата регулюється підлаштування резистором R8 так, щоб він реагував на музику, але не перемикав канали комутації навантажень.
Практика показує, що крім задіяного четвертого каналу можна використовувати другий чи третій, а від першого взагалі відмовитися, оскільки при різких збільшеннях гучності звуку можливе його спрацьовування.
З мікрофона ВМ 1 сигнал надходить на вхід підсилювача - обмежувача, виконаного на мікросхемі К 538УН 1А. Після посилення сигнал детектується діодами VD5, VD6 і надходить на базу транзистора VT1. У його колекторний ланцюг включений резисторний оптрон U1, який і керує генератор пристрої світлових ефектів. Із збільшенням гучності звуку відкривається транзистор VT1, вихідний опір оптрона зменшується, що призводить до підвищення швидкості перемикання гірлянд.
Транзистор Vt1 відкриваючись повністю, запускається мультивибратор на елементах DD3.3, DD3.4, який формує імпульс низького рівня тривалістю близько 0,1с (визначається опором резистора R3 і ємністю конденсатора C2).
По фронту цього імпульсу запускається другий мультивибратор на елементах DD3.1, DD3.2, який також формує імпульс низького рівня тривалістю приблизно 1.5с. Протягом цього часу (визначається опором резистора R1 і ємністю конденсатора C1) мікросхема DD1 вважає імпульси, відповідні числу ударів. Наприклад, їх було чотири. На виході 4 лічильника - дешифратора DD1, встановиться напруга високого рівня.
Після закінчення четирехсекундного імпульсу на керуючому вході мікросхеми DD2 (висновок 14) низький логічний рівень зміниться високим.
На виході четвертого (зверху за схемою) логічного елемента мікросхеми DD2 також встановиться напруга високого рівня. Воно надходить на вхід R лічильника - дешифратора DD1, обнуляючи його, і, одночасно, перемикає тригер DD5.2. Відкрився транзистор VT5 управляє електромагнітним реле К 4, яке своїми контактами (на схемі не показані) підключає відповідне навантаження. Світлодіод HL4 сигналізує про включення четвертого каналу автомата.
Диференціюються ланцюг C3R6 встановлює всі тригери в початковий стан при включенні живлення автомата.
Блок А 1 можна використовувати окремо тільки для управління пристроєм світлових ефектів. Якщо в цьому немає необхідності, замість оптрона U1 в колекторний ланцюг транзистора VT1 включають резистор опором 10 кОм.
Рисунок 1.5 - Мікропроцесорний пристрій автомата світлових ефектів
На схемі (рис. 1.5) перших трьох елементах 2І-НЕ мікросхеми DD1 зібраний тактовий генератор, частоту якого можна змінювати за допомогою резистора R1 [7]. Тактові імульси вважає лічильник DD2. Перемикачі SA1- SA4 дозволяють "вимикати" з рахунку деякі розряди, що задає основну програму. Далі сигнал з лічильника йде на зсувний регістр DD3, виходи якого через силові ключі комутують навантаження. Вимикач SA5 дозволяє інвертувати малюнок, SA6 і SA7 задають автоматичну зміну напрямку і реверс.
В якості керуючих ключів використані тиристори КУ 202М, без радіатора вони можуть комутувати навантаження до 200Вт, що більш ніж достатньо для наших цілей. Якщо ж потрібно управляти чимось потужним типу ксенонових прожекторів, то можна встановити тиристори на радіатори, і тоді вони забезпечать потужність вже близько 2КВт.
Діодний міст VD5 - VD9 можна виключити, але тоді лампи працюватимуть вполнакала. Можна замість тиристорів поставити також сімістори, але я вважаю це надмірністю і обійшовся таки доданими мостом.
Для живлення електроніки потрібно стабілізовану напругу +5 В. Однак для впевненоuj відкривання тиристорів потрібно напруга трохи вище, близько 9 вольт. Використано звичайний накальний трансформатор. У цьому випадку напруга на згладжуючому конденсаторі приблизно 9 вольт, а для живлення мікросхем я встановив стабілізатор КР 142ЕН 5.
Рисунок 1.6 - Мікропроцесорний пристрій автомата світлових ефектів
Запропонований годинник (рис. 1.6) відрізняються від класичних стрілочних або з цифровою індикацією тим, що індикація часу здійснюється за допомогою світлодіодів (60 шт.), які встановлюють на підставці циферблата у формі кола чи овалу. " Вартові " світлодіоди відрізняються від "хвилинних "розміром (а при бажанні і кольором) [8]. Поточну годину відображається миготінням з частотою 1 Гц. Хвилини индицируются числом запалених поспіль світлодіодів, починаючи з початкової однохвилинного позначки. Кожна наступна хвилина додається пробігаючи проти годинникової стрілки. На останній, 59 хвилині всі запалені світлодіоди хвилин гаснуть за годинниковою стрілкою, починаючи з однохвилинного позначки і закінчуючи п'ятьдесят дев'ятий. Гасіння відбувається послідовно, кожну секунду вимикається один світлодіод. У зоні циферблата від чотирьох годин до восьми імітується рух маятника. Він являє собою біжить зліва направо і в зворотному напрямку вогонь з двох світлодіодів. Період коливань маятника становить, як і в механічних годинниках, одну секунду. Кожне крайнє положення маятника супроводжується звуковим сигналом, схожим на хід справжніх "ходиків".
Схема годин показана на рис. 1.6. Основа пристрою - мікроконтролер AT90S8535 (DD2). Критеріями при його виборі послужили наявність необхідного числа ліній введення / виводу і максимальний струм навантаження, що підключається до окремої лінії. Порти А і С використовуються для управління матрицею світлодіодів HL1 - HL60.
Оскільки в годинах встановлено велике число світлодіодів, для їх включення і виключення застосовано динамічне управління. Лінії порту А через транзистори VT1 - VT8 управляють включенням певного стовпця. Кожен стовпець включається на 2,4 мс, тому частота оновлення складає
1 / (2,4 * 10-3 * 8) = 52 Гц.
Світлодіоди, запалювані в кожен момент часу, визначаються комбінацією сигналів на виході порту С. Резистори R3 і R4 задають струм через "годинникові " світлодіоди (приблизно 20 мА), а резистори R5 - R10 - через " хвилинні " (приблизно 10 мА). Резистори R11 - R18 обмежують струм в ланцюгах баз транзисторів VT1 - VT8.
Функція відліку часу покладено на спеціалізовану мікросхему DS1307 фірми DALLAS SEMICONDUCTOR. Зв'язок між нею і мікроконтролером організована по інтерфейсу I2C. Резистори R1 і R2 " підтягують " шини SCL і SDA мікросхеми DD1 до лінії живлення.
Кнопка SB 1 призначена для коригування часу. При короткочасному натисканні на неї до поточного часу додається одна хвилина з одночасним скиданням секунд в нуль, при тривалому натисканні (більше однієї секунди) - з кожною секундою відбувається поповнення хвилин. Процес зміни встановлюваного часу відразу ж відображається на циферблаті. Акустичний сигнал " ходиків " формується за допомогою пьезоізлучателя НА 1. Через роз'єм ХР 1 пристрій підключають до програматора при програмуванні і подають напруга живлення +5 В при використанні годин. Конденсатори С 1 і С 2 служать для згладжування пульсацій напруги живлення, що виникають при роботі пристрою.
"Часовий" кварцовий резонатор ZQ1 є частотозадающіх при відліку часу. Від нього залежить точність ходу годинника. Літієва батарея GB1 - резервне джерело живлення. Її напруга (UБАТ) повинно знаходитися в межах 2,5... 3,5 В. При зменшенні основного напруги живлення нижче 1,25 * UБАТ запис інформації в мікросхему DD1 блокується. Таким чином, при відключенні годин від мережі виключається випадкове пошкодження інформації про поточний час. В описі DS1307 зазначено, що при ємності літієвої батареї 35 мА - год і більше термін підтримки роботи мікросхеми складає більше десяти років. Слід зазначити, що в описуваної конструкції використовується тільки інформація про секунди, хвилинах і годинах, в той час як DS1307 дозволяє відраховувати також число місяця, місяць, день тижня і рік з відстеженням високосних років.
Креслення друкованої плати показаний на рис. 3. Для її виготовлення застосований односторонньо фольгований склотекстоліт товщиною 1 мм.
Зовнішній вигляд змонтованої друкованої плати показаний на рис. 4. В авторському варіанті підставу циферблата виконано з ДВП. Лицьова сторона обклеєна декоративним матеріалом. По краю висвердлено отвори для світлодіодів. Діаметр отворів підбирають так, щоб світлодіоди можна було встановити в них з невеликим зусиллям. На тильній стороні циферблата епоксидним клеєм закріплені кронштейни для підвішування, три гвинти для кріплення плати і звуковипромінювач НА 1. З?єднання проводять проводами МГТФ 0,2 мм або іншими гнучкими монтажними в ізоляції. У пристрої застосовані резистори МЛТ, С 2 - 23, оксидний конденсатор К 50- 35 або імпортний, конденсатори С 2 - С 4 - К 10 -17. Транзистори КТ 315Б можна замінити на інші серій КТ 315, КТ 3102 з будь-яким буквеним індексом.
Кварцовий резонатор ZQ1 - РК - 206 або аналогічний, кварцовий резонатор ZQ2 - HC - 49U, НА 1 - ЗП- 1, ЗП- 3, кнопка SB1 - DTS- 32.
Світлодіоди КІПД 35В -К можна замінити іншими з серії КІПД 35, а КІПД 24В -К - якими з серії КІПД 24. Слід мати на увазі, що остання буква означає колір світіння (К - червоний, Л - зелений, Ж - жовтий), а передостання - яскравість.
Гучність звукового сигналу можна зменшити, встановивши послідовно з п?єзоівипромінюачем резистор опором 0,1... 20кОм. Режим маятника можна вимкнути, подавши на лінію порту РВ 4 (висновок 5 DD2) низький рівень, для чого цей висновок з'єднують із загальним проводом. Після складання пристрою і програмування мікроконтролера необхідно скоригувати час, на дисплеї на циферблаті, за сигналами точного часу.
Рисунок 1.7 - Мікропроцесорний пристрій автомата світлових ефектів
Автомат перемикає чотири гірлянди світлодіодів, які створюють один з шести можливих світлових ефектів. Схема пристрою наведена на рис 1.7 [9].
На елементах DD1.2 DD1.3 зібраний генератор тактових імпульсів. Частоту генератора, а отже, і швидкість обертання " променів" регулюють змінним резистором R1. На триггерах мікросхем DD3, DD4 зібраний зсувний регістр. За допомогою вузла управління регістром, зібраного на елементах DD1.1, DD2.1 - DD2.3, і кнопки SB1 можна задавати одну з шести можливих послідовностей включення гірлянд. Вибір залежить від тривалості утримання кнопки в натиснутому стані.
Сигнали високого рівня з виходів тригерів зсувного регістру управляють транзисторами VT1 - VT4, коммутирующими гірлянди. Кожна складається з двох, конструктивно протилежно розташованих лінійок світлодіодів, які включаються одночасно. Пристрій починає працювати відразу після подачі живлення.
Автомат світлових ефектів живлять від батареї напругою 9 В, наприклад, "Крона", "Корунд" або аналогічної імпортної. У ньому застосовані постійні резистори С2 - 23, змінний - СПЗ- 46М, оксидний конденсатор - імпортний або К 50 -35. Вказані на схемі мікросхеми можна замінити аналогами з серії К 176, світлодіоди - будь-якими.
Всі деталі пристрою, за винятком батареї живлення, розміщені на платі з односторонньо фольгиро - ванного склотекстоліти товщиною 1,5... 2 мм.
Входи невикористовуваних елементів мікросхем DD1, DD2 (виводи 12, 13) з'єднані з плюсовим виводом живлення, а невикористовувані настановні входи тригерів мікросхем DD3, DD4 - із загальним проводом. Зовнішній вигляд зібраного автомата показаний на рис. 3.
Для обмеження cnheve перезарядки конденсатора С 1, що протікає через захисні діоди елемента DD1.2, рекомендуємо між точкою з'єднання лівого за схемою виводу резистора R1 з мінусовим виводом конденсатора С 1 і входами елемента DD1.2 (виводами 1,2) включити резистор опором 10...30кОм.
1.2 Будова вибраного мікроконтролера
мікроконтролер світлодіодний алгоритм асемблер
В основі ядра AVR лежить розширена RІSC архітектура, що поєднує розвинутий набір команд і 32 регістри загального призначення. Усі 32 регістри безпосередньо підключені до арифметико-логічного пристрою (АЛП), що дає доступ до будь-яких двох регістрів за один машинний цикл.
Подібна архітектура забезпечує десятикратний виграш в ефективності коду в порівнянні із традиційними CІSC мікроконтролерами [9].
AT90S2313 пропонує наступні можливості:
· 2кб завантажуваної флеш пам'яті; 128 байт EEPROM;
· 15 ліній вводу/виводу загального призначення;
· 32 робочих регістри; налаштовувані таймери/лічильники з режимом співпадання;
· зовнішні й внутрішні переривання;
· програмований універсальний послідовний порт;
· програмований сторожовий таймер із вбудованим генератором;
· SPІ послідовний порт для завантаження програм;
· два програмно змінні режими низького енергоспоживання.
Холостий режим (Іdle Mode) відключає ЦПУ, залишаючи в робочому стані регістри, таймери/лічильники, SPІ порт і систему переривань.
Економічний режим (Power Down Mode) зберігає вміст регістрів, але відключає генератор, забороняючи функціонування всіх вбудованих пристроїв до зовнішнього переривання або апаратного скидання.
Мікросхеми виготовляються з використанням технології енергонезалежної пам'яті високої щільності фірми Atmel. Завантажувана флеш пам'ять на кристалі може бути перепрограмована прямо в системі через послідовний інтерфейс SPІ або доступним програматором енергонезалежної пам'яті. Поєднуючи в одному кристалі вдосконалений 8-бітовий RІSC процесор з, завантажуваною флеш пам'яттю, AT90S2313 є потужним мікроконтролером, який дозволяє створювати досить гнучкі й ефективні за вартістю обладнання.
AT90S2313 підтримується повною системою розробки, що включає в себе макроасемблер, програмний відладчик/симулятор, внутрішньосхемний емулятор і відладочний комплект.
Рисунок 1.8 - Опис виводів мікроконтролера AT90S2313
Умовні позначення на рисунку 1.8: VCC - вивід джерела живлення; GND - земля.
Port B (PB7..PB0) - порт B є 8-бітовим двонаправленим портом вводу/виводу. Для виводів порту передбачені внутрішні підтягуючі резистори (вибираються для кожного біта). Виводи PB0 і PB1 також є позитивним (AІN0) і негативним (AІN1) входами вбудованого аналогового компаратора. Вихідні буфери порту B можуть споживати струм до 20мА й безпосередньо управляти світлодіодними індикаторами. Якщо виводи PB0..PB7 використовуються як входи й ззовні встановлюються в низький стан, вони є джерелами струму, якщо включені внутрішні підтягуючі резистори. Крім того, порт B обслуговує деякі спеціальні функції.
Port D (PD6..PD0) - порт D є 7-бітовим двонаправленим портом із внутрішніми підтягуючими резисторами. Вихідні буфери порту D можуть споживати струм до 20мА. Якщо входи встановлені в низький стан, виводи порту D є джерелами струму, якщо задіяні підтягуючі резистори. Крім того, порт D обслуговує деякі спеціальні функції.
RESET - вхід скидання. При втриманні на вході низького рівня протягом двох машинних циклів (якщо генератор працює), здійснює скид.
XTAL1 - вхід інвертуючого підсилювача генератора й вхід зовнішнього тактового сигналу.
XTAL2 - Вихід інвертуючого підсилювача генератора.
XTAL1 і XTAL2 є входом і виходом інвертуючого підсилювача, який можна використовувати для генератора тактових імпульсів. Можна використовувати як кварцові, так і керамічні резонатори. При підключенні зовнішнього тактового сигналу вивод XTAL2 залишається непідключеним, а XTAL1 підключається до виходу зовнішнього генератора.
Рисунок 1.9 - Схема підключення кварцового генератора
Рисунок 1.10 - Схема підключення зовнішнього тактового сигналу
Регістровий файл швидкого доступу містить 32 8-розрядних регістри загального призначення, доступ до яких здійснюється за один машинний цикл. Тому за один машинний цикл виконується одна операція АЛП. Два операнда вибираються з реєстрового файлу, виконується операція, результат її записується в реєстровий файл - усе за один машинний цикл.
Шість із 32 регістрів можна використовувати як три 16-розрядних покажчика в адресному просторі даних, що дає можливість використовувати високоефективну адресну арифметику (16-розрядні регістри X, Y і Z). Один із трьох адресних покажчиків (регістр Z) можна використовувати для адресації таблиць у пам'яті програм. Це X-, Y- і Z- регістри.
АЛП підтримує арифметичні й логічні операції з регістрами, з константами й регістрами. Операції над окремими регістрами також виконуються в АЛП.
Крім регістрових операцій, для роботи з регістровим файлом можуть використовуватися доступні режими адресації, оскільки регістровий файл займає адреси $00-$1F в області даних, звертатися до яких можна як до комірок пам'яті.
Простір введення складається з 64 адрес для периферійних функцій процесора, таких як керуючі регістри, таймери/лічильники й інші. Доступ до простору вводу/виводу може здійснюватися безпосередньо, як до комірок пам'яті розташованим після реєстрового файлу ($20-$5F).
Процесори AVR побудовані по гарвардській архітектурі з роздільними областями пам'яті програм і даних. Доступ до пам'яті програм здійснюється за допомогою однорівневого буфера. Під час виконання команди, наступна вибирається з пам'яті програм. Подібна концепція дає можливість виконувати по одній команді за кожний машинний цикл. Пам'ять програм - це внутрішньосистемна завантажувана флеш-память.
За допомогою команд відносних переходів і виклику підпрограм здійснюється доступ до всього адресного простору. Більша частина команд
AVR має розмір 16- розрядів, одне слово. Кожна адреса в пам'яті програм містить одну 16- або 32- розрядну команду.
При обробці переривань і виклику підпрограм адреса повернення запам'ятовується в стеці. Стек розміщається в пам'яті даних загального призначення, відповідно розмір стека обмежений тільки розміром доступної пам'яті даних і її використанням у програмі. Усі програми користувача повинні ініціалізувати покажчик стека (SP) у програмі, виконуваної після скидання (перше ніж викликаються підпрограми й дозволяються переривання). 8- розрядний покажчик стека доступний для читання/запису в області вводу/виводу.
Доступ до 128 байтів статичного ОЗУ, регістровому файлу й регістрам вводу/виводу здійснюється за допомогою п'яти доступних режимів адресації підтримуваних архітектурою AVR.
Гнучкий модуль переривань має власний керуючий регістр у просторі вводу/виводу, і прапор глобального дозволу переривань у регістрі стану.
Кожному перериванню призначений свій вектор у початковій області пам'яті програм. Різні переривання мають пріоритет відповідно до розташування їх векторів. По молодших адресах розташовані вектори з більшим пріоритетом.
Усі команди, що оперують регістрами прямо адресуються до кожного з регістрів за один машинний цикл. Єдине виключення - п'ять команд, що оперують із константами SBCІ, SUBІ, CPІ, ANDІ, ORІ й команда LDІ, що завантажує регістр константою. Ці команди працюють тільки із другою половиною реєстрового файлу - R16..R31. Команди SBC, SUB, CP, AND і OR, також як і всі інші, можуть бути застосовні до всього реєстрового файлу.
Кожному регістру присвоєна адреса в просторі даних, вони відображаються на перші 32 комірки ОЗУ. Хоча регістровий файл фізично розміщений поза ОЗУ, подібна організація пам'яті дає гнучкий доступ до регістрів. Регістри X, Y і Z можуть використовуватися для індексації будь-якого регістру.
Крім звичайних функцій, регістри R26..R31 мають додаткові функції, ці регістри можна використовувати як адресні покажчики в області пам'яті даних. Ці регістри позначаються як X,Y,Z.
При різних режимах адресації ці регістри можуть використовуватися як фіксована адреса, для адресації з автоінкрементом або з авто декрементом.
АЛП процесора безпосередньо підключений до 32 регістрів загального призначення. За один машинний цикл АЛП робить операції між регістрами реєстрового файлу. Команди АЛП розділені на три основні категорії - арифметичні, логічні й бітові. Деякі мікроконтролери сімейства AVR мають апаратний умножувач в арифметичній частині АЛП.
27 AT90S2313 містить 2кб, завантажуваної флеш пам'яті для зберігання програм. Оскільки всі команди займають одне 16- розрядне слово, флеш пам'ять організована як 1K 16- розрядних слів. Флеш пам'ять витримує не менш 1000 циклів перезапису.
Програмний лічильник має ширину 10 біт і в такий спосіб адресується до 1024 слів програмної флеш-памяти.
Таблиці констант можуть розташовуватися в діапазоні адрес 0-2K. AT90S2313 містить 128 байт енергонезалежної пам'яті, що електрично стирається (EEPROM). EEPROM організована як окрема область даних, кожний байт якої може бути прочитаний і перезаписаний. EEPROM витримує не менш 100000 циклів запису/стирання. Нижче розглянуте й програмування пам'яті даних через SPІ інтерфейс
Таблиця 1.1 - Характеристики мікроконтролера AT90S2313
Рабоча температура |
-55оС … +125 оС |
|
Температура зберігання |
-65оС … +150 оС |
|
Напруга на будь-якому виході окрім RESET |
-1.0V … Vcc+0.5 В |
|
Напруга на будь-якому виході RESET |
-1.0V … 13 В |
|
Максимальна рабоча напруга |
6.6 В |
Таблиця 1.2 - Характеристики мікроконтролера AT90S2313 по постійному струму
Продовження таблиці 1.2
Примітки по мікроконтролеру AT90S2313:
1. В рабочому стані струм через виводи повинен обмежуватися наступними умовами:
- Максимальний струм через вивод - 20 мА (5V), 10 мА (3V);
2. Мінімальна напруга для режима пониженного споживання - 2V.
Таблиця 1.3 - Список регістрів мікроконтролера AT90S2313
Продовження таблиці 1.3
2. Розробка схем структурної, принципової та алгоритму роботи програми
Для забезпечення алгоритму роботи мікропроцесорного пристрою сигналізації семисегментного індикатора була розроблена структурна схема (рисунок 2.1).
На рис 2.1 VD1-VD8 - лінійка світлодіонів для виведення режимів світлосигнальної індикації, SB1, SB2 - кнопки, як засоби керування вказаними режимами, МК - мікроконтролер, в якому задіяні два порти введення/виведення для взаємодії з засобами керування.
Рисунок 2.1 - Структурна схема мікропроцесорного пристрою керування лінійкою світлодіодів
Згідно структурної схеми було розроблена принципова схема мікропроцесорного керування лінійкою світлодіодів. (рисунок 2.2).
Рисунок 2.2 - Схема електрична принципова мікропроцесорного керування лінійкою світлодіодів
Умовні позначення на рисунку 2.2: SB1 - кнока 1; SB2 - кнока 2; R1-R8 - активні опори; VD0- VD7 - світлодіоди.
При подачі живлення всі діоди засвічуються і гаснуть з затримкою в 2 секунди. При натисканні кнопки 1 встановлюеться 2 режим роботи і діоди засвічуються в послідовності VD 0, VD 7, VD 1, VD 6, VD 2, VD 5, VD 3, VD 4. При натисканні кнопки 2 встановлюеться 3 режим роботи і діоди засвічуються в зворотній послідовності.
Алгоритм роботи пристрою виведення сигналізації на лінійку світлодіодів представлений на рис. 2.3.
Рисунок 2.3 Алгоритм роботи пристрою виведення сигналізації на лінійку світлодіод
3. Розробка програми на мові програмування ASSEMBLER
Згідно розробленого алгоритму, було розроблено програму мікропроцесорного пристрою світлової індикації, повний варіант якої представлений в додатку А.
Для розробки програми на мові Assembler скористаємося середовищем AVR Studio 4, так як програмувати будемо мікроконтролер серії AVR ATmega8. Для початку створимо проект, в якому напишемо програму. Для цього: запускаємо AVR Studio 4 > вибираємо New project (рис 3.1) > вибираємо Atmel AVR Assembler (рис 3.2) > записуємо у відповідних полях ім'я проекту та місце розташування > натискаємо кнопку "Next" > вибираємо необхідний мікроконтролер та натискаємо кнопку "Finish"(рис. 3.2)
Рисунок 3.1 - Створення проекту в AVR Studio
Рисунок 3.2 - Вибір типу проекту
Рисунок 3.3 - Вибір типу мікроконтролера
Після закінчення створення проекту з'явиться файл проекту (рис. 3.4),
в якому буде записана програма. Почнемо програму із запуску бібліотеки мікроконтролера та ініціалізації портів для кнопок(вводу) та світлодіодів(виводу). На порту D будуть кнопки, а на порту В світлодіоди.
Рисунок 3.4 - Файл тексту програми
Крім того на рис. 3.5 представлено емулятор периурії вибраного та вказаного при створення проекту мікроконтролера. Даний емулятор буже зручно використовувати при програмування та відладці роботи мікроконтролера.
Рисунок 3.2 - Вибір мікроконтролера для його програмування
За допомогою директиви ".include "…"" відкриваємо бібліотеку програмуємого мікроконтролера, команда "ser" встановлює одиниці всіх бітів регістра, а команда "clr" їх очищує [11-17]. Команда "out" задає
значення регістра в вибраний регістр, в даній ситуації в регістри: PORT(дані порта); DDR(стан порта); PIN(стан виводів).
Через досить часте використання регістрів, присвоїмо їм назви для зручності. Нам необхідно буде 3 регістри: для виводу значень в порт В, для зміщення "1" в необхідний біт.
Підключення заголовного файлу з описом регістрів, констант тощо:
include "m8mega.inc"
Приведений фрагмент програми відповідає за призначення імен регістрів.
def temp = r16
Фрагмент програми, який відповідає за ініціалізацію стека представлений нижче.
ldi r31,low(ramend) out spl,r31
Налаштування портів вводу виводу забезпечується наступним чином:
ldi temp, 0x00
out DDRD, temp ldi temp, 0xff out DDRB, temp out PortD, temp
Перед початком роботи всі світло діоди вмикаються та після затримки гаснуть. Це реалізується фрагментом програми, який представлений нижче.
ldi r16,0b11111111
out portb,r16
rcall fff
ldi r16,0b00000000
out portb,r16
Фрагмент програми, який відповідає за перевірку стану кнопки наведений нижче. Считуєм і перевіряєм нульовий розряд, якщо кнопка не натиснута, то програма буде зациклена в даному фрагменті і очікувати зміни положення кнопки. Після нажмання кнопки в PIND буде "0", після чого відбувається перехід на програму індикації.
kn1:
ldi r16,0b00000000
out portb,r16
in r17,pind
sbrc r17,0
Програма індикації "режим 2 " в послідовності вимкнення світлодіодів VD0, VD7, VD1, VD6, VD2, VD5, VD3, VD4.
ind1:
ldi r18,0b10000000
out portb,r18
rcall fff
ldi r18,0b00000001
out portb,r18
rcall fff
ldi r18,0b01000000
out portb,r18
rcall fff
ldi r18,0b00000010
out portb,r18
rcall fff
ldi r18,0b00100000
out portb,r18
rcall fff
ldi r18,0b00000100
out portb,r18
rcall fff
ldi r18,0b00010000
out portb,r18
rcall fff
ldi r18,0b0001000
out portb,r18
rcall fff
rjmp loop
Програма індикації "режим 3" в послідовності вимкнення світлодіодів VD0, VD4, VD3, VD5, VD2, VD6, VD1, VD7, VD0.
ldi r18,0b0001000
out portb,r18
rcall fff
ldi r18, 0b00010000
out portb,r18
rcall fff
ldi r18, 0b00000100
out portb,r18
rcall fff
ldi r18, 0b00100000
out portb,r18
rcall fff
ldi r18, 0b00000010
out portb,r18
rcall fff
ldi r18, 0b01000000
out portb,r18
rcall fff
ldi r18, 0b00000001
out portb,r18
rcall fff
ldi r18, 0b10000000
out portb,r18
rcall fff
rjmp loop
Програма перевірки та перевірки, яка перевіряє стан кнопки 1 та 2, після якої можна обновити чи перейти на інший режим без закінчення циклу включення діодів
fff:
in r17,pind
sbrc r17,0
rjmp kn1
in r17,pind
sbrc r17,1
rjmp kn2
ldi r20, 50
in r17,pind
sbrc r17,0
rjmp kn1
in r17,pind
sbrc r17,1
rjmp kn2
ldi r21, 50
in r17,pind
sbrc r17,0
rjmp kn1
in r17,pind
sbrc r17,1
rjmp kn2
4. Розробка програми на мові програмування C
Для розробки програми на С використаємо IDE CodeVisionAVR.
CodeVisionAVR - інтегроване середовище розробки програмного забезпечення для мікроконтролерів сімейства Atmel AVR [18].
CodeVisionAVR включає в себе наступні компоненти:
· компілятор С - подібного мови для AVR;
· компілятор мови асемблер для AVR;
· генератор початкового коду програми, що дозволяє зробити ініціалізацію периферійних пристроїв;
· модуль взаємодії з отладочной платою STK - 500;
· модуль взаємодії з програматором;
· редактор вихідного коду з підсвічуванням синтаксису;
· термінал.
Вихідними файлами CodeVisionAVR є:
· HEX, BIN або ROM- файл для завантаження в мікроконтролер допомогою програматора;
· COFF - файл, що містить інформацію для відладчика;
· OBJ - файл, в якому зберігається проміжний код компіляції, так званий об'єктний код;
CodeVisionAVR є комерційним програмним забезпеченням. Існує безкоштовна ознайомча версія з обмеженням ряду можливостей, зокрема, розмір програмного коду обмежений 4-ма кілобайтами і не включений ряд бібліотек.
Компілятор С, що входить до складу CodeVisionAVR, має деякі відмінності від AVR- GCC (WinAVR), у тому числі власний синтаксис, набір підтримуваних серій мікроконтролерів (останні версії підтримують в тому числі серію ATXMega), а також генерує відрізняється за швидкодією вихідний код.
Згідно розробленого алгоритму, було розроблено на мові С програму мікропроцесорного пристрою світлової індикації, повний варіант якої представлений в додатку Б.
Рисунок 4.1 - Вид вікна під час створення проекту
Для розробки програми на мові С скористаємося середовищем
CodeVisionAVR. Для початку створимо проект, в якому напишемо програму: запускаємо CodeVisionAVR > на панелі "меню" вибираємо вкладку "File" > "New" > ставимо галочку навпроти "Project" > "Ok" > "Yes" > вибираємо вкладку "Project information" > в полі "Project name" записуємо назву свого проекту та копіюємо її, вибираємо вкладку "File" > "Save" > вставляємо назву, вибираємо папку створення та зберігання проекту > "Ok" > знову вибираємо вкладку "File" > вибираємо "Generate, Save and Exit" > вставляємо скопійовану назву проекта в кожному вікні у відповідну стрічку та тиснемо "Сохранить"(рис. 4.1).
Тепер можна написати саму програму, завдяки створеному шаблону це буде набагато простіше та швидше ніж в AVR Studio Assembler.
#include <90s2313.h> #include <delay.h>
Програма void vuvod забезпечує вивдененя буферної змінної на порт. void main(void)
Головний цикл: while (1)
{
Спочатку виконується режим 1
delay_ms(100);
PORTB=0b11111111;
delay_ms(100);
PORTB=0b00000000;
Цикл, який перевіряє чи нажата кнопка 1 і чи нажата кнопка 2, якщо так, то відбувається одна із програм в циклі, режим 2 чи режим 3
if (PIND.0==1)
if (PIND.1==1)
Цикл, який перевіряє чи не нажата кнопка 1. Якщо кнопка нажата, то тіло циклу не виконується.
while(PIND.0==0)
Цикл, який перевіряє чи не нажата кнопка 1. Якщо кнопка нажата, то тіло циклу не виконується.
while(PIND.1==0)
Режим 2, який виводиться на світлові діоди.
PORTB=0b01111111;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00111111
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2) goto label2;
PORTB=0b00011111;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00001111;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00000111;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00000011;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00000001;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00000000;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
Режим 3, який виводиться на світлові діоди.
PORTB=0b01111110;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00111100;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00011000;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00000000;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00011000;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b00111100;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b01111110;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
PORTB=0b11111111;
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
Первірка кнопок і затримка реалізовуеться за допомогою
if (zatr_perev_kn() == 1)goto label1;
else if (zatr_perev_kn() == 2)goto label2;
int zatr_perev_kn()
{
int count;
for(count=0; count<100; count++)
{
delay_ms(10);
if(PIND.0 == 1) return 1;
else if(PIND.1 == 1) return 2;
else return 0;
}
5. Моделювання в PROTEUS VSM
Для перевірки правильності роботи програми необхідно змоделювати принципову схему, і програма-емулятор Proteus VSM v.7.6 дуже добре підходить. В середовищі Proteus можна моделювати різні принципові схеми, навіть багато каскадні.
Пакет являє собою систему схемотехнічного моделювання, що базується на основі моделей електронних компонентів прийнятих в PSpice. Відмінною рисою пакета PROTEUS VSM є можливість моделювання роботи програмованих пристроїв: мікроконтролерів, мікропроцесорів, DSP і інш.
Бібліотека компонентів містить довідкові дані. Додатково в пакет PROTEUS VSM входить система проектування друкованих плат. Пакет Proteus складається з двох частин, двох підпрограм: ISIS - програма синтезу та моделювання безпосередньо електронних схем і ARES - програма розробки друкованих плат. Разом з програмою встановлюється набір демонстраційних проектів для ознайомлення.
Пакет є комерційним. Безкоштовна ознайомча версія характеризується повною функціональністю, але не має можливості збереження файлів.
Примітною особливістю є те, що в ARES можна побачити 3D -модель друкованої плати, що дозволяє розробнику оцінити свій пристрій ще на стадії розробки.
Перед моделюванням зберемо спрощену принципову схему роботи мікроконтролера. Для цього запустимо Proteus та виберемо необхідні для схеми елементи(рис. 5.1): зліва під "картою" схеми на панелі натискаємо на кнопку "Р" та в з'явившемуся вікні в області введення набираємо назви елементів на англійській мові й в області "Results" вибираємо необхідний елемент двічі клацаючи на ньому.
Рисунок 5.1 - Вибір елементів в Proteus
Вибравши всі потрібні елементи закриваємо вікно "Pick Devices" та складаємо нашу схему. Готова схема представлена на рис. 5.2.
Тепер для того, щоб схема працювала необхідно задати мікроконтролеру hex-файл написаної програми: викликаємо контекстне меню мікроконтролера та вибираємо "Edit Properties" або клацаємо на мікроконтролер та натискаємо комбінацію клавіш "Ctrl+E"; в з'явившемуся вікні вибираємо робочу частоту мікроконтролера(1МГц) та шлях до hex-файлу програми та натискаємо "Ok". Тепер запустимо модуляцію зібраної та запрограмованої схеми, для цього натиснемо на кнопку "Play"
Далі запустимо програму і переконаємося у тому що вона працює. На рисунку 5.2 показано що при на тисканні кнопки 1 світлодіод засвітився. На рисунку 5.3 третій, отже все працює.
Рисунок 5.1 - Результат моделювання мікропроцесорного пристрою керування лінійкою світло діодів
Рисунок 5.2 - Результат моделювання мікропроцесорного пристрою керування лінійкою світло діодів
Висновки
В даній роботі було розглянуто теоретичні основи щодо будови мікроконтролера на прикладі ATmega8 та основні принципи по його програмуванню.
В другій частині даної роботи ми розробили структурну схему пристрою, який забезпечував керування лінійки світлодіодів відповідно зовнішнього керування. За допомогою даної структурної схеми, була створена принципова схема пристрою, основною частиною якої став програмований мікроконтролера.
Задля порівняння було створено дві програми, які мали однакову структуру роботи, також наведеної як схеми, але написані в різних середовищах, таких як AVR Studio та CodeVision AVR. В результаті при проведені емуляції вони себе показали однаково. Але для виконання такої простої функції пристрою краще буде використати програму на мові
Подобные документы
Функції та система команд мікроконтролера PIC16F84A, його технічні характеристики й організація пам'яті. Розробка керуючого автомату на мікроконтролері для пристрою світлових ефектів, побудова його електричної схеми та створення програмного забезпечення.
курсовая работа [255,0 K], добавлен 03.12.2013Висновок про доцільність розробки світлодіодного годинника. Годинникові механізми, класифікація годинників. Обґрунтування схеми пристрою. Вибір мікроконтролера та огляд його архітектури. Вибір додаткових пристроїв. Розробка програмного забезпечення.
дипломная работа [3,0 M], добавлен 23.09.2014Розробка термометра на базі мікроконтролера Atmega 8535. Визначення температури через аналогово-цифрове перетворення. Принципова схема пристрою. Варіанти з'єднання ліній портів з сегментами індикатора. Алгоритм роботи мікроконтролера у пристрої.
курсовая работа [1,8 M], добавлен 11.08.2012Функціональна схема мікроконтролера ATMega8. Розробка робота на базі мікроконтролера ATMega8 з можливістю керування електродвигунами за допомогою програми. Функціональна і принципова схеми пристрою з вибором додаткових елементів, алгоритм його роботи.
курсовая работа [1,3 M], добавлен 08.10.2012Схема інтелектуального давача, побудованого на базі мікропроцесорного пристрою. Побудова контролера клавіатури та семисегментного індикатора. Ввід інформації з клавіатури. Вивід інформації на восьмисегментний індикатор. Робота аналого-цифрового пристрою.
курсовая работа [707,6 K], добавлен 05.02.2013Розробка автономного недорогого універсального охоронного пристрою, виконаного на сучасній елементній базі, призначеного для цілодобової охорони об'єктів різного призначення. Принцип роботи охоронної сигналізації. Вибір мікроконтролера, елементної бази.
дипломная работа [356,8 K], добавлен 24.08.2014Розробка сигналізації для 10 квартир багатоквартирної будівлі. Опис пристрою. Основні характеристики і аналіз мікроконтролерів. Вибір інших елементів пристрою. Вибір середи програмування. Програмування мікроконтролеру. Фінальне налаштування та тестування.
курсовая работа [1,0 M], добавлен 31.05.2016Докладний опис складових електричної схеми. Характеристика мікроконтролера PIC16F877. Рідкокристалічний індикатор МТ12864А. Призначення виводів рідкокристалічного індикатора. Цифро-аналоговий перетворювач MCP 4921. Алгоритм роботи цифрового генератора.
курсовая работа [1,5 M], добавлен 20.09.2011Визначення основних технічних характеристик та режимів роботи мікроконтролера для подальшого застосування у пристроях управління. Системи переривань та режими роботи. Будова мікроконтролера, модулі синхронізації. Вбудовані низькочастотні генератори.
курсовая работа [1,2 M], добавлен 10.12.2013Доцільність розробки світлодіодного годинника. Історія годинника, годинникові механізми. Сонячні, водяні, пісочні, вогняні, механічні та електронні годинники. Вибір та обґрунтування схеми пристрою. Вибір мікроконтролера. Розробка програмного забезпечення.
дипломная работа [3,1 M], добавлен 11.07.2014