Автор: Пользователь скрыл имя, 17 Марта 2013 в 22:08, курсовая работа
Дана курсова робота виконується з метою більш поглибленого вивчення дисципліни «Мікроконтролери у вимірювальній техніці», набуття навичок самостійного вирішення поставлених задач, більш детального вивчення принципу роботи MCS-51 стенду EV8031, та вдосконалення знань, набутих під час виконання лабораторних робіт.
В курсовій роботі використовуються такі теоретичні відомості, як відомості про вбудований у стенд ЦАП, а також принцип роботи цифрового автомату, необхідні для кращого розуміння поставленої задачі та розроблення шляхів її реалізації на базі MCS-51 стенду EV8031; відомості про апаратні та програмні можливості використовуваного стенду EV8031 та мікроконтролера MCS-51.
В курсовій роботі використовується програмне середовище Keil uVision3.
Вступ………………………………………………………………………….4
1. Теоретична частина:
1.1. Загальні відомості про цифро-аналоговий перетворювач……...…5
1.2. Мікроконтролер 8051…………………………………………….…..8
1.2.1. Програмна архітектура МК 8051……………………………..…..8
1.2.2. Структура внутрішньої пам’яті…………………………….....…10
1.2.3. Система переривань…………………………………….…….….15
1.3. Цифровий автомат…………………………………………….……..21
1.3.1. Що являє собою цифровий автомат……………………….....….21
1.3.2. Структурна схема цифрового автомату…………………..…......23
1.3.3. Синтез цифрового автомату……………………………..…..…..25
2. Практична частина:
2.1. Алгоритм програми для реалізації цифрового автомата………….26
2.2. Алгоритм для підпрограми обробки переривань…………………..28
2.3. Текст програми з коментарями…………………………………......29
Висновки………………………………………………………………...….33
Розглянемо більш докладно резидентну (on-chip) пам'ять мікроконтролера 8051.Резидентні пам'ять складається з двох частин: внутрішнього ОЗУ розміром 128 байт і пам'яті, що виділяється для регістрів спеціальних функцій (Special Function Registers, SFR). Внутрішнє ОЗУ має структуру,показану на рис. 5.
Рис. 5. Структура внутрішньої ОЗУ
Для доступу до даних, розміщених у внутрішньому ОЗП, використовується однобайтова адреса. Архітектура внутрішньої пам'яті даних 8051 дозволяє звертатися до окремих бітам даних у спеціально виділеної області внутрішнього ОЗУ,починаючи з адреси 0x20 і закінчуючи 0x2F. Таким чином, у зазначеному діапазоні адрес можна звертатися до 128-бітовим змінним за допомогою команд бітових операцій SETB і CLR. Бітові змінні нумеруються, починаючи з 0x0 і закінчуючи0x7F. Це не означає, що не можна звертатися до цих осередків пам'яті, як до байтів при звичайних операціях з пам'яттю.
У другому випадку звернення виконується до байту за адресою 0x20, а встановлення відповідних бітів виконується операцією «логічне АБО».
У внутрішньому ОЗП мікроконтролера 8051 виділено 4 банки регістрів загального призначення. При включенні мікроконтролера банком за замовчуванням стає банк 0 (див. рис. 5).
При цьому регістру R0 відповідає адреса 0x00, регістру R1 - адреса 0x01, нарешті,регістру R7 при використанні банку 0 відповідає адреса 0x07. Якщо банком за замовчуванням стає, наприклад, банк 1, то регістру R0 буде відповідати адресу0x08, регістру R1 - адреса 0x09 і регістру R7 - адреса 0x0F.
До адресного простору внутрішнього ОЗУ починаючи з адреси 0x80 приєднуються і адреси регістрів спеціальних функцій (рис. 6).
Регістри спеціальних функцій (Special Function Registers, SFR) призначені для управління ходом обчислювальних операцій, а також відповідають за ініціалізацію, настройку і управління портами вводу / виводу, таймерами, послідовним портом. Крім того, регістри спеціальних функцій містять інформацію про пріоритети переривань, а також біти управління дозволом переривань. Регістри спеціальних функцій із зазначенням їх призначення перераховані в табл. 1
Рис. 6. регістри спеціальних функцій
Таблиця 1. Регістри спеціальних функцій
Позначення |
Опис |
Адреса |
А |
Акумулятор |
0Е0Н |
В |
Регістр-розширювач акумулятора |
0F0H |
PSW |
Слово стану програми |
0D0H |
SP |
Регістр-покажчик стека |
81H |
DPTR |
Регістр-покажчик даних (DPH) |
83H |
(DPL) |
82H | |
P0 |
Порт 0 |
80H |
P1 |
Порт 1 |
90H |
P2 |
Порт 2 |
0A0H |
P3 |
Порт 3 |
0B0H |
IP |
Регістр пріоритетів переривань |
0B8H |
IE |
Регістр маски переривань |
0A8H |
TMOD |
Регістр режиму таймера/лічильника |
89H |
TCON |
Регістр управління/статусу таймера |
88H |
TH0 |
Таймер 0 (старший байт) |
8CH |
TL0 |
Таймер 0 (молодший байт) |
8AH |
TH1 |
Таймер 1 (старший байт) |
8DH |
TL1 |
Таймер 1 (молодший байт) |
8BH |
SCON |
Регістр управління прийомопередатчиком |
98H |
SBUF |
Буфер прийомопередатчика |
99H |
PCON |
Регістр управління потужністю |
87H |
Деякі регістри спеціальних функцій допускають побітову адресацію. При цьому звернення до окремих бітам такого регістра можливо як за допомогою звичайних функцій для роботи з байтами, так і за допомогою команд побітових операцій.
Робота мікроконтролера 8051 в системах реального часу була б неможлива без обробки подій, що генеруються зовнішніми пристроями, і установки тимчасових залежностей між подіями в системі. Саме цим цілям і служить логіка обробки переривань 8051, функціональна схема якої показана на рис. 7.
Класичний мікроконтролер 8051 має 5 джерел переривань: два зовнішніх переривання, ініційованих сигналами на входах, - INT0 (висновок P3.2) і INT1(висновок P3.3); два переривання таймерів - 0 і 1; переривання послідовного порту(див. рис. 7). Послідовність виконання двох і більше переривань у випадку їх одночасного надходження визначається їх пріоритетами.
Рис. 7. Структура переривань 8051
Якщо припустити, що всі переривання мають однакові установки пріоритету, то за одночасного виникнення декількох переривань вони обробляються так, як показано на рис. 2. Наприклад, переривання INT0 має найвищий пріоритет (йому відповідає умовне позначення 1 на рис. 2), переривання таймера 0 має нижчий пріоритет у порівнянні з INT0 (позначено цифрою 2) і т.д. Найнижчий пріоритет у пристрої 8051 має переривання послідовного порту (позначено цифрою 5 на малюнку). Для мікроконтролера 8052 найнижчим пріоритетом має переривання таймера 2 (позначено цифрою 6). Для зміни пріоритетів виконання переривань слід встановлювати спеціальні флаги в регістрі пріоритетів IP.
Мікроконтролер реагує на переривання, тільки якщо буде встановлено флаг відповідного переривання в регістрі TCON.
Будь-яке з переривань буде викликано тільки в тому випадку, якщо його виклик вирішено шляхом установки відповідних бітів у регістрі IE.
Розглянемо, як викликаються і обробляються зовнішні переривання INT0 і INT1 в мікроконтролері 8051. Зовнішні переривання INT0 і INT1 можуть бути викликані рівнем або переходом сигналу з 1 в 0 на входах мікроконтролера в залежності від значень керуючих бітів IT0 і IT1 в регістрі TCON. Якщо відповідний біт ITx (x = 0,1)встановлено, то переривання викликається по перепаду 1-0 на відповідному вході INTx мікроконтролера. Якщо ці біти скинуті, то переривання INTx викликається при наявності низького рівня на відповідному вході.
При виникненні зовнішнього переривання
INTx встановлюється відповідний флаг
IEx в регістрі TCON, який ініціює виклик
відповідної підпрограми
Зовнішні переривання INT0 і INT1 можуть (якщо дозволені) викликатися одним з трьох способів:
Переривання від таймерів викликаються при переповненні регістрів таймера (TH0 - TL0 для таймера 0, TH1 - TL1 для таймера 1 і TH2 - TL2 для таймера 2). Для всіх трьох таймерів при досягненні значень 0xFF в THx - TLx (x = 1, 2, 3) наступний інкремент таймера викличе установку флага TFx, що ініціює переривання. Флаги переривання таймерів 0 і 1 розміщені в регістрі TCON, при цьому TF0 відповідає біту TCON.5, а TF1 - биту TCON.7.
Флаги запитів переривання від таймерів TF0 і TF1 скидаються автоматично при передачі управління підпрограмі обслуговування.
Переривання послідовного порту викликається установкою одного з флагів - TI або RI (див. рис. 2). Флаги запитів переривання RI і TI встановлюються логікою послідовного порту апаратно, але скидатися повинні програмою. Переривання можуть бути викликані або скасовані програмою, тому що всі перераховані флаги програмно доступні. Обмін даними через послідовний порт буде розглянуто далі в цій книзі, тому зупинятися більш докладно на особливостях обробки переривань послідовного порту ми поки не будемо.
Всі операції з обробки переривань виконує логіка переривань мікроконтролера. Флаги переривань опитуються в кожному машинному циклі, при цьому аналіз пріоритетів переривань виконується протягом наступного машинного циклу. Логіка переривань апаратно сформує дальній виклик LCALL відповідної програми $ обробника переривання, якщо тільки цей виклик не блокується з однієї з таких причин:
• в даний момент обслуговується запит переривання з пріоритетом рівним або більш високим, ніж поточний;
• поточний машинний цикл не є останнім у циклі виконуваної команди;
• в даний момент виконується команда RETI або будь-яка команда, яка звертається до одного з регістрів - IE або IP.
Якщо флаг переривання був встановлений, але по кожній з перерахованих причин переривання не було обслуговано, а флаг до моменту закінчення блокування був скинутий, то запит переривання втрачається.
Паралельні порти вводу / виводу даних мікроконтролера 8051 має чотири 8-бітових порту введення / виводу, позначених P0- P3 і призначених для введення або виведення інформації як у формі байта, так і побитово.
Кожен порт містить керований регістр-
Рис. 8. Узагальнена функціональна
Порт P0 є двонаправленим, а порти P1 - P3 - квазідвунаправленими, при цьому кожна лінія портів може бути використана незалежно від інших для введення або виведення. По сигналу скидання в регістри-засувки всіх портів автоматично записуються одиниці, що переводить вихідні лінії портів в режим введення. Всі порти можуть бути використані для організації введення / виводу інформації з двонаправленим лініях передачі.
Однак порти P0 і P2 не можуть бути використані для цієї мети у випадку, якщо система має зовнішню пам'ять, зв'язок з якою організовується через загальну поділювану шину адреси / даних, що працює в режимі тимчасового мультиплексування. Схема функціонування однієї лінії введення / виводу порту P0 показана на рис. 4.
Рис. 9. Схема функціонування однієї лінії введення / виводу порту P0
Вихідні драйвери порту
P0 реалізовані з відкритим
Рис. 10. Використання ліній Р0 для вводу/виводу
Для читання порту P0 потрібно спочатку записати в нього одиниці, а потім прочитати вхідне значення. Апаратна архітектура портів P1 - P3 дещо відрізняється від тієї, що реалізована для P0. Функціональна схема однієї лінії введення / виводу портів P1 - P3 показана на рис.11.
Рис. 11. Функціональна схема однієї лінії введення / виводу портів P1 - P3
Вихідні каскади портів P1 - P3 використовують внутрішні підтягують резистори, з'єднані зі стоком вихідних транзисторів, тому необхідність у зовнішніх резисторах, як у випадку порту P0, відпадає. Вихідні драйвери портів 0 і 2, а також вхідний буфер порту 0 використовуються при зверненні до зовнішньої пам'яті. При цьому через порт 0 в режимі тимчасового мультиплексування спочатку виводиться молодший байт адреси, а потім видається або приймається байт даних. Через порт 2 виводиться старший байт адреси в тих випадках, коли розрядність адреси дорівнює 16 біт.
Порти P1, P2 і P3 можуть використовуватися, так само як і порт P0, для введення/виведення даних, при цьому не потрібно встановлювати підтягують резистори, як це робиться для порту P0. Як і для порту P0, при читанні даних слід записати у відповідні розряди портів P1, P2 і P3 одиниці.
Усі висновки порту P3 можуть бути використані для реалізації альтернативних функцій. Ці функції можуть бути задіяні шляхом запису одиниці у відповідні біти регістра-засувки (P3.0 - P3.7) порту P3.
Звернення до портів введення
/ виведення можливо з
• ANL - «логічне І», наприклад: ANL P1, А;
• ORL - «логічне АБО», наприклад: ORL P2, А;
• XRL - «виключає АБО», наприклад: XRL Р3, А;
• JBC - перехід з подальшим очищенням біта, наприклад: JBC P1.1, LABEL;
• CPL - інверсія бита, наприклад: CPL Р3.3;
• INC - інкремент порту, наприклад: INC P2;
• DEC - декремент порту, наприклад: DEC P2;
• DJNZ - декремент порту і перехід, наприклад: DJNZ P1, LABEL;
• MOV PX.Y, C - передача біта перенесення C в біт Y порту X;
• SET PX.Y - установка біта Y порту X;
• CLR PX.Y - скидання біта Y порту X.
При роботі з портами введення/виводу мікроконтролера 8051 необхідно враховувати, що вихідні драйвери цих портів можуть забезпечити максимальний струм в навантаженні порядку декількох міліампер, тому при підключенні потужнострумових вихідних навантажень слід використовувати буферні схеми.
1.3 ЦИФРОВИЙ АВТОМАТ
1.3.1 ЩО ЯВЛЯЄ СОБОЮ ЦИФРОВИЙ АВТОМАТ
Цифровий автомат представляє собою обчислювальний пристрій або вузол, що містить елементи пам'яті і виконує дискретні перетворення над інформацією, що зберігається в автоматі. Цифровий автомат здатний переходити з одного стану в інший в результаті вхідних інформаційних впливів і видавати вихідну інформацію, що залежить від свого стану і вхідного впливу.
Складність цифрового
автомата в основному визначається
числом станів та обсягів вхідних
впливів. Чим більше число станів
автомата, тим більше він повинен
містити запам'ятовуючих