Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2009
Тип роботи:
Методичні вказівки
Предмет:
Проектування контролерів периферійних пристроїв

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» ПРОЕКТУВАННЯ КОНТРОЛЕРІВ ПЕРИФЕРІЙНИХ ПРИСТРОЇВ МЕТОДИЧНІ ВКАЗІВКИ до циклу лабораторних робіт для студентів спеціальностей 7.091503 та 8.091503 «Спеціалізовані комп’ютерні системи» Затверджено на засіданні кафедри спеціалізованих комп’ютерних систем. Протокол № 7 від 13.04.2009 Львів 2009 Проектування контролерів периферійних пристроїв: Методичні вказівки до циклу лабораторних робіт для студентів спеціальностей 7.091503 та 8.091503 «Спеціалізовані комп’ютерні системи» / Укл.: Р.В. Кочан. – Львів: Видавництво Національного університету «Львівська політехніка», 2009. – 48 с. Укладач Кочан Р.В., канд. техн. наук, доц. Рецензент Саченко А.О., д-р техн. наук, проф. Ваврук Є.Я., канд. техн. наук, доц. Відповідальний за випуск Дунець Р.Б., д-р техн. наук, проф. ВСТУП Даний цикл лабораторних робіт укладений відповідно до навчальної програми з дисципліни «Проектування контролерів периферійних пристроїв» та містить шість лабораторних робіт. Цикл Лабораторних робіт побудовано на сумісному застосуванні системи автоматизованого проектування Proteus та середовища розробки програмного забезпечення Keil uVision. Proteus забезпечує розроблення та емуляцію роботи апаратного забезпечення розроблених мікропроцесорних пристроїв, а Keil uVision - розроблення і відлагодження їхньої програми роботи з використанням мов програмування як високого, так і низького рівнів. Виконання лабораторних робіт передбачає: створення і перевірку функціонування вузлів електричної схеми; розроблення алгоритму роботи процесора; написання та відлагодження програми роботи процесора; відлагодження і перевірку функціонування мікропроцесорних пристроїв. Лабораторні роботи орієнтовані на наявну на кафедрі СКС обчислювальну техніку. Методичні вказівки допоможуть студентам ефективно використати відведений час на виконання лабораторних робіт, вчасно виконати та захистити звіти. Лабораторна робота №1 Тема: Дослідження схеми мікропроцесорного перетворювача інформації Мета: Навчитися використовувати пп. Proteus для емуляції роботи мікропроцесорних систем. Короткі теоретичні відомості Термін контролер утворився від англійського слова to control - управляти. Ці пристрої можуть базуватися на різних принципах роботи від механічних або оптичних пристроїв до електронних аналогових або цифрових пристроїв. Механічні пристрої управління володіють низькою надійністю і високою вартістю в порівнянні з електронними блоками управління. Електронні аналогові пристрої вимагають постійного регулювання в процесі експлуатації, що збільшує вартість їх експлуатації. Найбільш поширеними на сьогоднішній день схемами управління є схеми, побудовані на основі цифрових мікросхем. Залежно від вартості і габаритів пристрою, яким потрібно управляти, визначаються і вимоги до контролера. Якщо об'єкт управління займає десятки метрів за площею, як, наприклад, автоматичні телефонні станції, базові станції стільникових систем зв'язку або радіорелейні лінії зв'язку, то як контролери можна використовувати універсальні комп'ютери. Управління при цьому можна здійснювати через вбудовані порти комп'ютера (LPT, COM, USB або ETHERNET). У такі комп'ютери при включенні живлення заноситься програма, управління, яка і перетворює універсальний комп'ютер на контролер. Використання універсального комп'ютера як контролера дозволяє в найкоротші терміни проводити розробку нових систем зв'язку, легко їх модернізувати (шляхом простої зміни програми управління) а також використовувати готові масові (а значить дешеві) блоки. Якщо ж до контролера пред'являються особливі вимоги, такі, як робота в умовах вібрацій, розширеному діапазоні температур, дії агресивних середовищ, то доводиться використовувати промислові варіанти універсальних комп'ютерів. Природно, що ці комп'ютери значно дорожчі за універсальні комп'ютери, але вони дозволяють економити час розробки системи, за рахунок того, що не потрібно вести розробку апаратури контролера. Контролери потрібні не тільки для великих систем, але і для малогабаритних пристроїв таких як радіоприймачі, радіостанції, магнітофони або мобільні телефони. У таких пристроях до контролерів ставлять жорсткі вимоги за вартістю, габаритами і температурним діапазоном роботи. Цим вимогам не можуть задовольнити навіть промислові варіанти універсального комп'ютера. Тому доводиться вести розробку контролерів на основі однокристальних ЕОМ, які у свою чергу отримали назву мікроконтролери. Будь-які пристрої, у тому числі і пристрої зв'язку, радіоавтоматики або аудіовізуальної апаратури вимагають присутності в своєму складі пристрою управління (контролера). Контролери потрібні практично у всіх предметах і пристроях, які оточують нас. Прикладами пристроїв, які містять мікроконтролери є: телевізори, магнітофони, пральні машини, холодильники, CD, DVD та МР3 плеєри, пульти дистанційного управління, сигналізації, дисководи, модеми, клавіатури, монітори. В сучасних автомобілях є більше ніж 20 мікроконтролерів, які керують режимом роботи двигуна, захищають від викрадення (сигналізація), забезпечують функціонування систем безпеки (повітряна подушка) та комфорту (кондиціонери, освітлення, аудіоапаратура) і виконують багато інших функцій. Лідером на ринку мікроконтролерів, по кількості фірм-виробників та номенклатурі типів, є мікроконтролери сімейства MCS51. Вони були розроблені фірмою Intel і представлені на ринку у 1981 році. Станом на 2006 рік їх виготовляє 58 фірм, серед яких є: Analog Devices, Atmel, Daewoo, Dallas Semiconductor, Honeywell, Hyundai, Intel, OKI, Philips, Sharp, Siemens, ST Microelectronics, Texas Instruments, Winbond. Цими фірмами випускається більше ніж 700 типів мікроконтролерів, які прийнято називати MCS51-сумісними оскільки ці мікроконтролери відрізняються між собою такими параметрами як: допустима тактова частота, доступні об’єми пам’яті програм та даних, напруга живлення, тип корпусу, типи вбудованих периферійних пристроїв. Зважаючи на таку велику гаму мікросхем користувачі легко можуть вибрати мікроконтролер з необхідними параметрами. Також така велика кількість виробників призвела до розробки широкого набору засобів проектування мікропроцесорних систем на базі контролерів MCS51 та бібліотек. Основні характеристики мікроконтролерів MCS51: Восьми розрядний процесор з виділеним акумулятором; Вбудований тактовий генератор; Адресний простір пам’яті програм - 64 К; Адресний простір пам’яті даних - 64 К; Вбудована пам’ять програм - 4 К; Вбудована пам’ять даних - 128 байт; Підтримка операцій над окремими бітами; 32 двонаправлені побітно-керовані лінії вводу/виводу; 2 шістнадцяти-бітних багатофункціональних таймери/лічильники; Універсальний асинхронний приймач-передавач; Векторна система переривань з двома рівнями пріоритету та п’яттю маскованими і одним немаскованим перериваннями. Структурна схема мікроконтролера MCS51 представлена на рис. 1. Вигляд мікросхеми в корпусі типу PDIP-40 та призначення виводів представлено на рис. 2.  Рис.1. Структурная схема MCS51  Рис.2. Вигляд мікроконтролера MCS51 та призначення виводів (для корпусу типу DIP40) Після включення мікроконтролера необхідно провести його скидання. Скидання MCS51 здійснюється шляхом подачі на вхід RST сигналу логічної 1 на час - не менш двох машинних циклів (24 періодів кварцового резонатора). При подачі сигналу скидання на вхід RST внутрішній алгоритм скидання мікроконтролера робить наступні дії: встановлює лічильник команд PC і всі регістри спеціальних функцій, крім портів P0 - P3, вказывника стеку SP і регістра SBUF, в нуль; SP приймає значення рівне 07H; забороняє всі джерела переривань, роботу таймерів-лічильників і послідовного порту; вибирає БАНК 0 ОЗП, ініціює порти P0 - P3 на прийом даних; у регістрах спеціальних функцій PCON, IP й IE резервні біти приймають випадкові значення, а всі інші біти скидаються в нуль; у регістрах SBUF встановлюються випадкові значення. встановлює всі лінії портів P0 - P3 в “1”, ініціюючи їх на ввід інформації. Узагальнені дані по станах регістрів після скидання адреси зазначені в таблиці. Стан регістрів після скидання Регістр Інформація  PC 0000H  АСС 00H  В 00H  PSW 00H  SP 07H  DPTR 0000H  Р0-РЗ 0FFH  IP XXX00000B  IE 0XX00000B  TMOD 00H  TCON 00H  TH0 00H  TL0 00H  TH1 00H  TL1 00H  SCON 00H  SBUF Невизначена  PCON       Сигнал скидання на вході RST не впливає на внутрішнє ОЗП даних. Після включення живлення вміст комірок внутрішнього ОЗП даних приймає випадкові значення. На рис.3 показана схема підключення мікроконтролера для реалізації автоматичного скидання при включенні живлення.  Рис.3 - Схема включення мікроконтролера з автоматичним скиданням при включенні живлення Автоматичне скидання при включенні живлення UCC може бути реалізоване підключенням входу RST до UCC через конденсатор ємністю 10 мкФ і до шини 0 В через резистор 8,2 кОм. Для деяких типів мікроконтролерів резистор є необов’язковим. Якщо не використовувати резистор, ємність конденсатора може бути зменшена до 1 мкФ. Щоб при включенні живлення скидання було гарантовано виконане, вивід RST повинен утримуватися в стані високого рівня протягом часу, достатнього для запуску тактового генератора мікроконтролер плюс ще мінімум два машинних цикли. Час запуску тактового генератора мікроконтролер залежить від його частоти роботи й для 10 Мгц кварцового резонатора становить у середньому 1 мс., а для 1 Мгц кварцового резонатора - 10 мс. Виводи портів перебувають у випадковому стані до моменту запуску тактового генератора, і тільки після цього внутрішній сигнал скидання записує “1” у порти, настроюючи їх на введення. Включення живлення без забезпечення гарантованого скидання може привести до того, що мікроконтролер почне виконання програми з деякої випадкової адреси. Це пов’язано з тим, що лічильник команд PC не буде скинутий в 0000H. Завдання: Визначити функцію, яку реалізовує мікроконтролер . Таблиця варіантів № варіанту (ост. цифра номеру студентського) Файл програми роботи Частота кварцового резонатора, Мгц Вхід інф. (ключі) Вихід (світлодіодні індикатори)   Lab1v10.hex 10 P3 P1   Lab1v01.hex 1 Р3 P1   Lab1v02.hex 2 P3 P1   Lab1v03.hex 3 P3 P1   Lab1v04.hex 4 Р3 P1   Lab1v05.hex 5 P3 P1   Lab1v06.hex 6 P3 P1   Lab1v07.hex 7 P3 P1   Lab1v08.hex 8 P3 P1   Lab1v09.hex 9 P3 P1   Порядок виконання роботи Скласти схему, яка складається з мікроконтролера, часозадаючої ланки генератора, схеми скидання та елементів вводу/виводу інформації згідно індивідуального завдання. Приклад схеми представлений на рис.4. Записати програму роботи у мікроконтролер згідно індивідуального завдання. Запустити складену схему на виконання та визначити логічну функцію, яку реалізує мікроконтролер та період повторення вихідного сигналу. Оформити звіт по лабораторній роботі. Контрольні запитання Назвати основні параметри мікроконтролерів MCS51. Привести характеристики периферійних пристроїв мікроконтролерів MCS51. Для чого проводити скидання мікроконтролера при його включенні? Як залежать параметри елементів схеми скидання від параметрів кварцового резонатора.  Рис.4. Приклад схеми мікропроцесорного перетворювача інформації  Рис. 5. Робота схеми мікропроцесорного перетворювача інформації Лабораторна робота № 2 Тема: Ознайомлення з універсальним асинхронним приймачем/передавачем (UART) Мета: Ознайомлення з режимами роботи Універсального асинхронного приймача/передавача (UART) в мікроконтролера АТ89С51 та його можливостями по зв'язку з персональним комп'ютером. Короткі теоретичні відомості Для передачі та прийому даних в послідовному форматі мікроконтролери MCS51 використовують контролер універсального асинхронного приймача/передавача (UART) – послідовний інтерфейс. Він може працювати в чотирьох наступних режимах: Режим 0. В цьому режимі дані передаються та приймаються через RXD. Приймаються або передаються 8 біт даних. Через вивід ТXD передаються імпульси синхронізації. Частота обміну складає 1/12 частоти кварцового резонатора. Режим 1. В цьому режимі дані передаються через TXD, а приймаються RXD 10 біт інформації: старт-біт (0), 8 біт даних і стоп-біт (1) Частота обміну — змінна і задається частотою переповнень таймера Т1. Режим 2. В цьому режимі дані передаються через TXD, а приймаються RXD 11 біт інформації: старт-біт, 8 біт даних, програмований дев'ятий біт і стоп-біт. При передачі дев'ятий біт даних може приймати значення 0 або 1, або, наприклад, для підвищення достовірності передачі шляхом контролю парності в нього може бути поміщено значення признака парності з слова стану програми (PSW.O). Частота обміну задаэться програмно та може складати 1/32, або 1/64 частоти кварцового резонатора залежно від значення біту SMOD/ Режим 3. В цьому режимі дані передаються через TXD, а приймаються RXD 11 біт інформації: старт-біт, 8 біт даних, програмований дев'ятий біт і стоп-біт. Частота обміну — змінна і задається частотою переповнень таймера Т1. Для управління режимом роботи послідовного інтерфейсу використовується регістр спеціальних функцій SCON: Біт Позиція Призначення  SM0 SCON.7 Біти вибору режиму роботи.  SM1 SCON.6   SM2 SCON.5 Біт блокування прийому повідомлень з нульовим програмованим 9-тим бітом (діє тільки для режимів 2 та 3)  REN SCON.4 Дозвіл роботи приймача  TB8 SCON.3 9-тий біт даних, який передається в режимах 2 та 3  RB8 SCON.2 9-тий прийнятий бід в режимах 2 та 3  TI SCON.1 Запит на переривання передавача. Встановлюється апаратно після завершення передачі байту. Повинен скидатися програмно в функції обробки переривання.  RI SCON.0 Запит на переривання приймача. Встановлюється апаратно після завершення прийому байту. Повинен скидатися програмно в функції обробки переривання.   Для передачі байту необхідно його записати в регістр даних послідовного інтерфейсу – SBUF. Це ініціює передачу в послідовному форматі, при чому першим, серед бітів даних, передається молодший значущий біт, а останнім – старший. Після завершення передачі останнього біту встановлюється біт ТІ, який є запитом на переривання. Після прийому байту він записується також в регістр даних послідовного інтерфейсу – SBUF та встановлюється біт RІ, який також є запитом на переривання. Вектор обробки переривання від послідовного інтерфейсу повинен знаходитися по адресу 23Н. Біти RI та ТІ повинні скидатися в функції обробки переривання. Для зв'язку мікроконтролерів типу MCS51 з ПК в послідовному форматі може використовуються контролер універсального асинхронного приймача/передавача (UART) мікроконтролера підключений до послідовного комунікаційного порту – Ком-порту, ПК. Синхронізація зв’язку відбудеться у випадку, якщо різниця в швидкості обміну мікроконтролера та ПК призведе до того, що час передачі одного кадру повідомлення (стартовий біт, біти даних та стопові біти) буде відрізнятися від часу прийому цього кадру на величину меншу ніж половина часу передачі одного біту, тобто коли фактичні частоти передавача та приймача відрізняються на величину меншу ніж 4,5%. Також не слід забувати, що напруги логічних рівнів ком-порту та мікроконтролера – не співпадають, тому необхідно використовувати додаткові схеми узгодження рівнів – драйвери. Наприклад типу ST232. Для задання швидкості обміну мікроконтролера, як правило, використовується , „перший” або „третій” режими роботи контролера універсального асинхронного приймача/передавача. В цих режимах частота прийому та передачі задається частотою переповнень таймера Т1 або Т2. При чому, якщо використовується режим роботи таймера „автоперезавантаження” мікроконтролер може не реагувати на переповнення таймера і заборонити переривання від нього. Після завершення передачі одного байту даних по послідовному інтерфейсу встановлюється прапорець ТІ. Після прийому – RI. Ці прапорці викликають переривання процесора (при умові, що воно дозволене) та перехід на вектор обробки переривання розміщений по адресі 23h. Якщо для задання частоти роботи послідовного порту використовується таймер Т1, який працює в режимі „автоперезавантаження” з забороною переривань. Тоді частота обміну (F1,3) розраховується по формулі:  де: SMOD – старший біт регістра PCON (PCON.7) – “подвоєння частоти обміну”, FТ1 – частота переповнень таймера Т1, FCLK – частота кварцового резонатора, ТН1 – Вміст регістра ТН1. Послідовний порт ПК працює на визначених частотах. ТВ таблиці 1 вказано настройки таймера для різних швидкостей обміну ком-порту. Частота обміну Частота кварцу, МГц SMOD Таймер/лічильник 1     C/T Режим (MODE) ТН1  19.2 кГц 11.059 1 0 2 0FDH  9.6 кГц 11.059 0 0 2 0FDH  4.8 кГц 11.059 0 0 2 0FAH  2.4 кГц 11.059 0 0 2 0F4H  1.2 кГц 11.059 0 0 2 0E8H  137.5 Гц 11.059 0 0 2 1DH  110 Гц 6 0 0 2 72H   Приклад підпрограми ініціалізації послідовного порту init_serial: mov SCON, #050h ;Timer 1 is being used to generate baud rates. orl PCON, #80H mov TMOD, #020h mov TH1, #0FDh setb TR1 ;TCON.6 setb ES ;IE.4 clr RI ;SCON.0 ret Якщо для задання частоти роботи послідовного порту використовується таймер Т2, який працює в режимі „автоперезавантаження”. Тоді частота обміну (F1,3) розраховується по формулі:  , де:  - вміст регістрів  та  в вигляді 16-ти бітної константи. Приклад підпрограми ініціалізації послідовного порту з заданням частоти обміну з допомогою таймера Т2: init_serial: mov SCON, #050h ;Timer 2 is being used to generate baud rates. mov RCAP2L, #0DCh mov RCAP2H, #0FFh mov T2CON, #034h setb ES ;IE.4 clr RI ;SCON.0 ret Завдання: Настроїти UART в заданий режим роботи (частота, формат повідомлення); Прийняти дані з перемикачів та кнопок підключених до вхідного порту та вивести їх через UART в на дисплей комп'ютера; Прийняти дані з комп'ютера через UART та вивести їх на світлодіодний індикатор підключений до вихідного порту. № варіанту 1 2 3 4 5 6 7 8 9 0  Частота роботи послідовного порту 1200 2400 4800 9600 1200 2400 4800 9600 9600 4800  Таймер, який задає частоту Т1 Т1 Т1 Т1 Т2 Т2 Т2 Т2 Т2 Т2  Вхідний порт 0 1 2 0 1 2 0 1 2 0  Вихідний порт 1 2 0 1 2 0 1 2 0 1   Порядок виконання роботи Скласти схему відповідно до номера варіанту. Написати та відлагодити програму роботи мікроконтролера. Запрограмувати мікроконтролер. Перевірити функціонування схеми. Оформити звіт по лабораторній роботі. Контрольні запитання Режими роботи послідовного інтерфейсу мікроконтролера; Робочі частоти послідовного інтерфейсу ПК; Формула розрахунку частоти послідовного інтерфейсу мікроконтролера; Особливості роботи послідовного інтерфейсу мікроконтролера. Приклад схеми  Приклад програми на асемблері .CODE .ABSOLUTE .ORG 0H JMP MAIN .ORG 23H JMP INT_UART ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .DATA P_OUT: .REG P1 P_IN: .REG P0 REGIST: .DS 8 STEK: .DS 20H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .CODE .RELATIVE MAIN: MOV SP,#STEK CALL INIT_UART SETB EA $M1: MOV A, P_IN XRL A, R3 JZ $M1 MOV SBUF, P_IN MOV R3, P_IN CALL DELAY JMP $M1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: MOV R0,#04H MOV R1,#0FFH MOV R2,#0FFH $M1: DJNZ R2,$M1 DJNZ R1,$M1 DJNZ R0,$M1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INIT_UART: MOV SCON, #050H ORL PCON, #00H MOV TMOD, #020H MOV TH1, #0FDH SETB TR1 ;TCON.6 SETB ES ;IE.4 CLR RI ;SCON.0 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INT_UART: JB TI, $M1 CLR RI MOV A, SBUF XRL A, #0FFH MOV P_OUT, A JMP $M2 $M1: CLR TI $M2: RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END Приклад програми на С51 #include <reg51.h> #include <intrins.h> #define P_OUT P1 #define P_IN P0 void init_UART(void); void delay(void); /*---------------------------------*/ void main(void) { unsigned char k; init_UART(); EA=1; while(1) { if(k!=P_IN) { SBUF=P_IN; k=P_IN; delay(); } } } /*---------------------------------*/ void delay(void) { unsigned int i; for(i=0;i<0xfff0;i++); } /*---------------------------------*/ void init_UART(void) { SCON=0x50; PCON=0; TMOD=0x20; TH1=0xFD; TR1=1; RI=0; ES=1; } /*---------------------------------*/ void int_UART(void) interrupt 4 { unsigned char k; if(RI) { RI=0; k=SBUF; P_OUT=k^0xff; } if(TI)TI=0; } /*---------------------------------*/ Результат роботи програми В результаті виконання програми на світлодіодний індикатор виводиться двійкове значення байту посланого програмою управління терміналом. Після кожного посланого байту показ світлодіодного індикатора змінюється. Нове, виставлене з допомогою кнопок та перемикачів значення виводиться на дисплей терміналу. Лабораторна робота № 3 Тема: Формування дискретних сигналів з заданими параметрами Мета: Ознайомлення з режимами роботи таймерів/лічильників в мікроконтролера АТ89С51 та його можливостями по зв'язку з персональним комп'ютером. Короткі теоретичні відомості Мікро контролери MCS51 містять два програмованих 16-бітних таймери/лічильники (TCNT0 й TCNT1), які можуть використовуватися як таймери або лічильники зовнішніх сигналів. При роботі в режимі таймеру вміст TCNT інкрементується в кожному машинному циклі, тобто через кожні 12 періодів резонатора. При роботі в режимі лічильника вміст TCNT інкрементується під впливом переходу з 1 в 0 зовнішнього вхідного сигналу, що подається на відповідний (Т0, Т1) вивід порту Р3. Опитування значення зовнішнього вхідного сигналу виконується в момент часу S5P2 кожного машинного циклу. Вміст лічильника буде збільшене на 1 у тому випадку, якщо в попередньому циклі був зчитаний вхідний сигнал високого рівня (1), а в наступному - сигнал низького рівня (0). Нове (інкрементоване) значення лічильника буде сформовано в момент S3P1 у циклі, наступному після виявленя переходу сигналу з 1 в 0. Оскільки на розпізнавання переходу потрібно два машинних цикли, то максимальна частота підрахунку вхідних сигналів рівна 1/24 частоти резонатора. На тривалість періоду вхідних сигналів обмежень зверху немає. Для гарантованого прочитання вхідного рахованого сигналу він повинен утримувати значення 1 як мінімум протягом одного машинного циклу. Для керування режимами роботи TCNT і для організації взаємодії таймерів із системою переривання використовуються два регістри спеціальних функцій - TMOD і TCON, опис яких приводиться в табл. 1 і 2 відповідно. Як видно з опису керуючих біт TMOD, для обох TCNT режими роботи 0, 1 й 2 однакові. Режими 3 для TCNT0 й TCNT1 різні. Розглянемо коротко роботу TCNT у всіх чотирьох режимах. Режим 0. Перевід будь-якого TCNT в режим 0 робить його схожим на таймер MCS48 (8-бітний лічильник), на вхід якого підключений 5-бітний дільник частоти на 32. Роботу TCNT в режимі 0 на прикладі TCNT1 ілюструє рис. 1 а. У цьому режимі таймерний регістр має розрядність 13 біт. При переході зі стану "всі одиниці" в стан "всі нулі" установлюється прапорець переривання від таймера TF1. Вхідний синхросигнал таймера 1 дозволений (надходить на вхід TCNT), коли керуючий біт TR1 встановлений в 1 і або керуючий біт GATE (блокування) дорівнює 0, або на зовнішній вивід запиту переривання INT1 поступає логічна 1. Встановлення біта GATE в 1 дозволяє використати таймер для вимірювання тривалості імпульсного сигналу, що подається на вхід запиту переривання. Режим 1. Робота будь-якого TCNT у режимі 1 така ж, як і в режимі 0, за винятком того, що таймерний регістр має розрядність 16 біт. Режим 2. В режимі 2 робота організована таким чином, що переповнення (перехід зі стану "всі одиниці" в стан "всі нулі") 8-бітного лічильника TL1 приводить не тільки до встановлення прапорця TF1 (рис. 1 б), але і переписує в TL1 вміст старшого байта (ТН1) таймерного регістра (вміст якого було попередньо програмно задано). Процес переписування не змінює вмісту ТН1. Режим 3. В режимі 3 TCNT0 й TCNT1 працюють по-різному. TCNT1 зберігає незмінним свій поточний вміст. Іншими словами, ефект такої ж, як і при скиданні керуючого біта TR1 у нуль. Роботу TCNT0 у режимі 3 ілюструє рис. 1 в. У режимі 3 TL0 і ТН0 функціонують як два незалежних 8-бітних лічильники. Роботу TL0 визначають керуючі біти TCNT0 (Л/Т, GATE, TR0), вхідний сигнал INT0 і прапорець переповнення TF0. Роботу ТН0, що може виконувати тільки функцію таймера, визначає керуючий біт TR1. При цьому ТН0 використовує прапорець переповнення TF1. Режим 3 використається в тих випадках, коли потрібна наявність додаткового 8-бітного таймера або лічильника подій. Можна вважати, що в режимі 3 мікроконтролер має у своєму складі три таймери/лічильники. Якщо TCNT0 використається в режимі 3, TCNT1 може бути включений, виключений, переведений у свій власний режим 3, може використовуватися послідовним портом як генератор частоти передачі, або, може бути використаний для виконання завдань, які не вимагають переривання. Табл. 1 - Регістр режиму роботи таймера/лічильника Символ Позиція Призначення  GATE TMOD.7 для TCNT1 и TMOD.3 для TCNT0 Управління блокуванням. Якщо біт встановлений, то таймер/лічильник "x" працює до тих пір, поки на вході "INTx" високий рівень і біт управління "TRx" встановлений. Якщо біт скинутий, то TCNT працює, коли лише біт управління "TRx" встановлюється.  С/Т TMOD.6 для TCNT1 и TMOD.2 для TCNT0 Вибір режиму таймера або лічильника. Якщо С/Т = 0, то таймер з синхронізацією від внутрішнього генератора. Якщо С/Т = 1, то лічильник зовнішніх сигналів, які поступають на вхід "Тх"  M1 TMOD.5 для TCNT1 и TMOD.1 для TCNT0 Вибір режиму роботи ***  М0 TMOD.4 для TCNT1 и TMOD 0 для TCNT0    *** М1 М0 Режим роботи  0 0 Таймер MCS48. "TLx" працює як 5-битний дільник  0 1 16-битный таймер/лічильник. "ТНх" і "TLx" включені послідовно  1 0 8-бітний таймер/лічильник. "ТНx" зберігає значення, яке переписується в "TLx" кажен раз по переповненню  1 1 Таймер/лічильник 1 зупиняється. Таймер/лічильник 0: TL0 працює як 8-бітний таймер/лічильник, і його режим визначається бітами керування таймера 0. ТН0 працює як 8-бітний таймер, і його режим визначається бітами керування таймера 1   Табл. 2 - Регістр управління/статусу таймера Символ Позиція Призначення  TF1 TCON.7 Переповнення таймера 1, Встановлюється апаратно при переповненні таймера/лічильника. Скидається апаратно при обслуговуванні переривання.  TR1 TCON.6 Запуск таймера 1. Встановлюється/скидається програмно для запуску/зупинки таймера.  TF0 TCON.5 Переповнення таймера 0, Встановлюється апаратно при переповненні таймера/лічильника. Скидається апаратно при обслуговуванні переривання.  TR0 TCON.4 Запуск таймера 0. Встановлюється/скидається програмно для запуску/зупинки таймера.  IE1 TCON.3 Прапорець фронту переривання 1. Встановлюється апаратно, коли детектується спад зовнішнього сигналу INT1. Скидається при обслуговуванні переривання.  IT1 TCON.2 Біт управління типом переривання 1. Встановлюється/скидається програмно для специфікації запиту INT1 (фронт/низький рівень).  IE0 TCON.1 Прапорець фронту переривання 0. Встановлюється апаратно, коли детектується спад зовнішнього сигналу INT0. Скидається при обслуговуванні переривання.  IT0 TCON.0 Біт управління типом переривання 0. Встановлюється/скидається програмно для специфікації запиту INT0 (фронт/низький рівень).    Завдання: Настроїти UART на задану частоту; Прийняти дані з UART Сформувати вихідний сигнал з шпарністю згідно варіанту та частотою (періодом) прийнятою через UART; № варіанту 1 2 3 4 5 6 7 8 9 0  Частота роботи послідовного порту 1200 2400 4800 9600 1200 2400 4800 9600 9600 4800  Шпарність імпульсів 1/2 1/3 2/3 ¼ 3/4 1/2 1/3 2/3 1/4 3/4  Вихідний порт P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.6 P3.7  Параметр, прийнятий по UART Частота, Гц Частота, кГц Частота, МГц Період, с. Період, мс. Період, мкс. Частота, кГц Частота, МГц Період, с. Період, мс.   Порядок виконання роботи Скласти схему відповідно до номера варіанту. Написати та відлагодити програму роботи мікроконтролера. Запрограмувати мікроконтролер. Перевірити функціонування схеми. Оформити звіт по лабораторній роботі. Приклад схеми  Приклад програми на С51 #include <REGX51.H> #define Fclk 11059000 #define P_OUT P1_0 unsigned char freq=1; unsigned int Time_nul; unsigned int Time_one; void init_UART(void); void init_T0(void); void comp_THTL(unsigned char f); /*---------------------------------*/ void main(void) { init_UART(); init_T0(); EA=1; while(1); } /*---------------------------------*/ void init_UART(void) { SCON=0x50; PCON=0; TMOD=0x20; TH1=0xFD; TR1=1; RI=0; ES=1; } /*---------------------------------*/ void int_UART(void) interrupt 4 { unsigned char k; if(RI) { RI=0; k=SBUF; if((k>='0')&&(k<='9')) { freq=k-'0'; comp_THTL(freq); } } if(TI)TI=0; } /*---------------------------------*/ void init_T0(void) { unsigned int k; ET0=1; TMOD &= 0XF0; /* clear Timer 0 */ TMOD |= 0X1; comp_THTL(freq); P_OUT=0; k=Time_nul; TL0=k; k=(k&0xFF00); k>>=8; TH0=k; TR0=1; } /*---------------------------------*/ void int_T0(void) interrupt 1 { unsigned int k; TR0=0; if(P_OUT) { P_OUT=0; k=Time_nul; } else { P_OUT=1; k=Time_one; } TL0=k; k=(k&0xFF00); k>>=8; TH0=k; TR0=1; } /*---------------------------------*/ void comp_THTL(unsigned char f) { float Period,Timer_tic; Period=1/(f*1e3); Timer_tic=Period*Fclk/12-0x3C; //0x3C*** Time_one=0xFFFF-Timer_tic/3; //signal 1/3: _ _-_ _- Time_nul=0xFFFF-Timer_tic*2/3; } /*---------------------------------*/ Результат роботи програми  Лабораторна робота № 4 Тема: Вивід інформації на семисегментні світлодіодні індикатори в динамічному режимі Мета: Ознайомлення з режимами вивводу інформації з допомогою семисегментних індикаторів Короткі теоретичні відомості Крім світлодіодів в мікропроцесорних системах для візуального відображення інформації часто використовуються знакосинтезуючі матриці, які називають цифровими індикаторами. Найпростішим прикладом цифрового індикатора є семисегментний індикатор. Він широко використовується для виводу цифрової інформації в пристроях різноманітного призначення, наприклад калькуляторах, електронних годинниках. Семисегментний індикатор представляє собою матрицю з семи світлодіодів прямокутної форми, розташованих таким чином, щоби їхнє засвічування в різних комбінаціях дозволяло відобразити будь, яку арабську цифру. Крім того сім вказаних сегментів часто доповнюють восьмим маленьким сегментом, призначеним для відображення десяткової коми. Розташувавши в ряд декілька таких індикаторів можна виводити десяткові числа з плаваючою комою. На рис. 1 представлено зовнішній вигляд семисегментного індикатора. Прийнято кожен його сегмент позначати літерою латинського алфавіту так, як це показано на рисунку.  Рис.1 – Вигляд семисегментного світлодіодного індикатора Конструктивно такі індикатори виконуються у вигляді окремого компонента, який має 9 сигнальних виводів. За внутрішньою схемою включення світлодіодів сегментів індикатори поділяються на індикатори зі спільним анодом та індикатори зі спільним катодом – рис.2. При підключенні індикатора зі спільним анодом на нього подається додатній потенціал, а сигнали керування подаються на катоди, при чому низький потенціал на катоді світло діода сегмента призводить до його свічення, а високий – несвічення. Для підключення індикаторів з спільним катодом – на катод подається від’ємний потенціал, а на аноди – сигнали керування. Високий потенціал – призводить до свічення відповідного сегменту, а низький – несвічення. При підключенні семи сегментних світлодіодних індикаторів послідовно з кожним світлодіодом необхідно включити струмообмежуючий резистор.  а) б) Рис.2 – Схема включення світлодіодів семи сегментних індикаторів а) зі спільним анодом, б) зі спільним катодом Для відображенні цифрових даних часто одного індикатора є недостатньо. В таких випадках до мікроконтролера підключають декілька індикаторів одночасно. Якщо кількість виводів є недостатня для підключення всіх індикаторів використовують режим динамічної індикації, який полягає в тому, що сигнали керування всіх індикаторів підключаються паралельно до одного з портів мікроконтролера, і з допомогою спільних анодів (або катодів) здійснюється вибір активного індикатора (індикатора на який виводяться дані). Отже при динамічній індикації розряди індикатора працюють не одночасно, а по черзі. Перемикання активних індикаторів проводиться з такою частотою, щоби візуально його не було видно, тобто частота обігання всіх розрядів індикатора повинна бути більшою ніж 50 Гц. Приклад схеми підключення чотири-розрядного індикатора в динамічному режимі до мікроконтролера представлено на рис. 3.  Рис. 3 – Схема підключення чотири-розрядного індикатора в динамічному режимі Завдання: Вивести на n-розрядний семисегментний світлодіодний індикатор дані отримані по послідовному інтерфейсу. Вхідні дані – цифри з в кодуванні ASCII. Параметри послідовного інтерфейсу, кількість розрядів порти підключення та тип індикаторів задаються згідно номера варіанту. № варіанту 1 2 3 4 5 6 7 8 9 0  Частота роботи послідовного порту 1200 2400 4800 9600 1200 2400 4800 9600 9600 4800  Порти підключені до індикатора 0, 1 1, 2 2, 3 0, 2 1, 3 0, 3 0, 1 1, 2 0, 2 0, 3  Кількість розрядів індикатора 4 8 6 8 8 6 5 4 5 6  Тип індикатора 7SEG-MPX4-CA 7SEG-MPX4-CC 7SEG-MPX6-CA 7SEG-MPX8-CA-BLUE 7SEG-MPX4-CC-BLUE 7SEG-MPX6-CC-BLUE 7SEG-COM-AN-BLUE 7SEG-MPX4-CA 7SEG-COM-CAT 7SEG-MPX8-CA-BLUE   Порядок виконання роботи Скласти схему відповідно до номера варіанту. Написати та відлагодити програму роботи мікроконтролера. Запрограмувати мікроконтролер. Перевірити функціонування схеми. Оформити звіт по лабораторній роботі. Приклад схеми  Приклад програми на С51 #include <REGX51.H> #include <intrins.h> /*---------------------------------*/ #define P_DAT P0 #define P_STB P2 #define P_OUT P1 unsigned char idata position; unsigned char idata print_line[4]; /*---------------------------------*/ #define segA 0x80 #define segB 0x04 #define segC 0x08 #define segD 0x10 #define segE 0x20 #define segF 0x40 #define segG 0x02 #define segH 0x01 #define Digit0 segA|segB|segC|segD|segE|segF #define Digit1 segB|segC #define Digit2 segA|segB|segD|segE|segG #define Digit3 segA|segB|segC|segD|segG #define Digit4 segB|segC|segF|segG #define Digit5 segA|segC|segD|segF|segG #define Digit6 segA|segC|segD|segE|segF|segG #define Digit7 segA|segB|segC #define Digit8 segA|segB|segC|segD|segE|segF|segG #define Digit9 segA|segB|segC|segD|segF|segG unsigned char code segm7[]={Digit0,Digit1,Digit2,Digit3,Digit4,Digit5,Digit6,Digit7,Digit8,Digit9}; /*---------------------------------*/ void init_UART(void); void init_T0(void); void delay(unsigned int n); /*---------------------------------*/ void main(void) { init_UART(); init_T0(); print_line[0]=0; print_line[1]=1; print_line[2]=2; print_line[3]=3; EA=1; while(1) { P_OUT++; delay(200); } } /*---------------------------------*/ void delay(unsigned int n) { unsigned int i,j; for(j=0;j<n;j++) for(i=0;i<0x200;i++); } /*---------------------------------*/ void init_UART(void) { SCON=0x50; PCON=0; TMOD=0x20; TH1=0xFD; TR1=1; RI=0; ES=1; } /*---------------------------------*/ void int_UART(void) interrupt 4 { unsigned char k; if(RI) { k=SBUF-'0'; if(k>9)k=9; RI=0; print_line[0]=print_line[1]; print_line[1]=print_line[2]; print_line[2]=print_line[3]; print_line[3]=k; } if(TI)TI=0; } /*---------------------------------*/ void init_T0(void) { TMOD=TMOD&0xF0; TMOD=TMOD|0x01; TH0=0x00; ET0=1; TR0=1; } /*---------------------------------*/ void int_T0(void) interrupt 1 { TH0=0xFC; TL0=0; P_STB=0; P_DAT=segm7[print_line[position]]^0xFF; P_STB=(1<<position); position++; if(position==4)position=0; } /*---------------------------------*/ Результат роботи програми  Лабораторна робота № 5 Тема: Вивід інформації на рідкокристалічний індикатор на базі контролера HD44780. Мета: Ознайомлення з режимами роботи рідкокристалічного індикатора та контролера HD44780. Короткі теоретичні відомості Типовими рідко кристалічними індикаторами, які використовуються для виводу текстової інформації є рідкокристалічні дисплеї (Liquid Crystal Display) або LCD, які виводять кожен символ на рідкокристалічну прямокутну матрицю розміром 8*5 точок і дозволяють виводити стрічки по 8, 16, 20 або 40 символів. Кількість стрічок може бути 1, 2 або 4. Для управління роботою дисплею використовується контролер Hitachi 44780, або сумісні з ним. Конструктивно такий дисплей представляє собою закінчений функціональний модуль, який розміщується на передній панелі пристрою, а підключення до мікропроцесорної системи здійснюється по паралельному інтерфейсу. Вивід інформації здійснюється шляхом запису даних в пам'ять дисплею. Настройка параметрів роботи та програмування – шляхом запису команд. Зовнішній вигляд та габаритні розміри типового рідкокристалічного дисплею представлено на рисунку 1. Призначення виводів паралельного інтерфейсу описано в таблиці 1. Часові діаграми сигналів цього інтерфейсу представлені на рисунку 2. Доступні операції з рідкокристалічним дисплеєм представлені в таблиці 2. Зважаючи на низьку швидкодію контролера дисплею час опрацювання та виконання команд є досить значним і його вказано у відповідній колонці таблиці 2. Час між командами не повинні бути меншими за ці значення. Паралельний інтерфейс може передавати слова по 8 та по 4 біти. Для підключення дисплею в режимі 8-бітного слова необхідно задіяти 11 ліній керування. В режимі 4-бітного слова – достатньо 7-ми. Вибір довжини слова здійснюється при ініціалізації.  Рис. 1 – Вигляд рідкокристалічного дисплею типу WM-C1601M Таблиця 1 – Призначення виводів рідкокристалічного індикатора типу WM-C1601M Номер виводу Познач. Призначення   Vss Спільний провідник   Vcc Напруга живлення (+5V)   Vee Регулювання контрастності   RS Вибір режиму регістрів 1 – дані 0 – команда   R/W Вибір режиму роботи 1 – читання 0 – запис   E Вхід дозволу - 1 - РКІ активний   DB0 0-й біт (молодший)   DB1 1-й біт   DB2 2-й біт   DB3 3-й біт   DB4 4-й біт   DB5 5-й біт   DB6 6-й біт   DB7 7-й біт (старший)   LED A Анод світлодіода підсвідки   LED K Катод світлодіода підсвідки    Рис. 2 – Часові діаграми інтерфейсу рідкокристалічного індикатора Таблиця 2 – Операції рідкокристалічного дисплею Назва RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Час викон., мс Опис  Очистка 0 0 0 0 0 0 0 0 0 1 1,64 Очищує весь індикатор і повертає курсор на початкову позицію  Повернення 0 0 0 0 0 0 0 0 1 X 1,64 Повертає курсор на початкову позицію, а також повертає весь текст, якщо він був зміщений , на початок  Установка 0 0 0 0 0 0 0 1 H C 0,04 Встановлює направлення руху курсора ( Н=1 – вперед, 0 - назад ), а також зміщення всього тексту( С=1- зміщення включене, 0 - відключене )  Управління 0 0 0 0 0 0 1 D C B 0,04 D=1 - індикатор включений , 0- виключений; С=1-курсор включений, 0 –виключений В=1 - мигання позиції курсора включене, 0 – виключене  Зміщення 0 0 0 0 0 1 S R X X 0,04 S=1 - зміщення тексту , 0- зміщення курсора ; R=1 - зміщення вправо, 0- вліво  Формат 0 0 0 0 1 L N F X X 0,04 L -встановлює довжину слова даних (1 - 8 біт , 0 - 4 біт ); N - кількість стрічок індикатора(1 - дві стрічки, 0 - одна ); F- шрифт (1- 5x11 точок, 0 - 5x8 точок)  Вибір адреси ОЗП знакогенератора 0 0 0 1 D5 D4 D3 D2 D1 D0 0,04 Встановлює адресу ОЗП знакогенератора. Читання/запис даних проводиться по цій адресі  Вибір адреси даних індикатора 0 0 1 D6 D5 D4 D3 D2 D1 D0 0,04 Встановдюється адреса даних індикатора. Зчитування/запис даних проводиться по даній адресі.  Прапорець зайнятості...
Антиботан аватар за замовчуванням

23.02.2012 21:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!