Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

DOCS_1 / вычтехника / PIC16_2014

.pdf
Скачиваний:
6
Добавлен:
14.02.2015
Размер:
607.08 Кб
Скачать

МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ

з дисципліни „Мікропроцесорна техніка”

(частина друга)

ВСТУП

Метою виконання лабораторних робіт є закріплення теоретичних знань основних принципів побудови і функціонування мікропроцесорних пристроїв на базі однокристальних мікроконтролерів сімейства PIC16,

використання набутих практичних навиків написання програм на мові асемблеру та вивчення програмних та апаратних засобів налагодження програм. У методичних вказівках наведено варіанти завдань для 6

лабораторних робіт, що охоплюють відомості з основних функціональних модулів мікроконтролерів сімейства PIC16, а саме:

1.Порти введення/виведення;

2.Система переривань;

3.Таймери-лічильники;

4.Широтно-імпульсний модулятор (ШІМ);

5.Універсальний асинхронний приймач-передавач (УАПП).

Вкожній роботі наведено схему підключення зовнішніх пристроїв до мікроконтролеру для оцінки результатів виконання програми, теоретичні відомості та контрольні запитання. У додатках описано стенд для апаратного налагодження програм та надана система команд мікроконтролеру. Передбачається використання мікроконтролерів

PIC16F627, PIC16F628.

Матеріали даних методичних вказівок також може бути використано при курсовому та дипломному проектуванні.

2

ЛАБОРАТОРНА РОБОТА № 1

Тема: Статична індикація.

Мета:

1.Розглянути роботу з портами введення/виведення;

2.Побудувати програмні затримки часу без використання переривань;

3.Засвоїти принцип статичної індикації.

Завдання:

1.Ініціалізувати порт B для виведення даних;

2.Вивести на порт B початкову послідовність бітів (табл. 1.2);

3.Циклічно повторювати послідовність дій (табл. 1.1, табл. 1.2).

Таблиця 1.1 Дії над поточним вмістом порту B

Режим

Дія над поточним вмістом порту B

 

 

 

 

1

Циклічний зсув праворуч через час T1 (протягом часу T2)

 

 

 

 

2

Циклічний зсув ліворуч через час T1 (протягом часу T2)

 

 

 

 

3

Інверсія через час T3 (протягом часу T4)

 

 

 

 

4

Інверсія тільки парних бітів через час T3 (протягом часу T4)

 

 

 

 

5

Інверсія тільки непарних бітів через час T3 (протягом часу T4)

 

 

 

 

6

Збереження парних бітів, зміна їх на 0, витримка часу

T5,

відновлення парних бітів, витримка часу T5 (протягом часу T6)

 

 

 

 

 

 

7

Збереження парних бітів, зміна їх на 1, витримка часу

T5,

відновлення парних бітів, витримка часу T5 (протягом часу T6)

 

 

 

 

 

 

8

Збереження непарних бітів, зміна їх на 0, витримка часу

T5,

відновлення непарних бітів, витримка часу T5 (протягом часу T6)

 

 

 

 

9

Збереження непарних бітів, зміна їх на 1, витримка часу

T5,

відновлення непарних бітів, витримка часу T5 (протягом часу T6)

 

 

 

 

3

Таблиця 1.2 Варіанти завдань для лабораторної роботи №1*

Початкова послі-

Послідовність

T1,

T2,

T3,

T4,

T5,

T6,

довність бітів

режимів

с

с

с

с

с

с

 

 

 

 

 

 

 

 

 

 

1

10010111

1, 8, 4

0,5

10

1

15

0,3

9

 

 

 

 

 

 

 

 

 

2

10110010

2, 3, 6

0,25

5

0,4

20

1

16

 

 

 

 

 

 

 

 

 

3

01100011

5, 2, 9

0,4

12

0,5

5

0,25

10

 

 

 

 

 

 

 

 

 

4

10001110

4, 7, 1

0,3

18

2

20

0,5

5

 

 

 

 

 

 

 

 

 

5

00110001

3, 1, 8

0,2

15

0,25

10

0,4

8

 

 

 

 

 

 

 

 

 

* – для всіх варіантів тактова частота мікроконтролеру дорівнює 4 МГц. Для оцінки результатів виконання програми слід використовувати

засоби емуляції, які надаються середовищем розробки MPLAB, та схему, яку наведено на рис. 1.1. Індикація змісту порту B забезпечується світлодіодами VD1-VD8, струм яких обмежується резисторами R1-R8.

Рис. 1.1 Схема підключення світлодіодів до порту B

Теоретичні відомості

Мікроконтролери PIC16F627/PIC16F628 мають 16 ліній введення/виведення, які відносяться до портів A (RA0-RA7) та B (RB0-RB7). Кожна лінія порту може бути запрограмована на введення або на виведення інформації. Для управління лініями кожен порт має по два регістри: TRISX та PORTX (де X – ім’я порту). Регістр TRISX відповідає за напрям передачі інформації (запис 0 визначає режим виведення, а запис 1 –

4

; Мітка початку циклу
; Тіло циклу (затримка Tт залежить від
; команд, що використаються у циклі) ; Команди зациклення (Tз=3)

режим виведення). Читання регістру PORTX повертає стан на виводах порту X, а запис призводить до передачі даних на виводи порту X у режимі виведення. Порт B додатково має можливість підключення внутрішніх підтягувальних резисторів. Це відбувається при скиданні біту RBPU# в

регістрі OPTION_REG.

Для реалізації затримок часу без використання апаратних модулів мікроконтролеру необхідно сформувати процедури, які виконують певну кількість команд. Виконання кожної команди відбувається за декілька машинних циклів (див. Додаток Б). Машинний цикл мікроконтролерів сімейства PIC16 відповідає 4 періодам тактового генератора. Найбільш компактні процедури для реалізації затримок часу складаються з декількох вкладених циклів з лічильником. Далі наведено приклад циклу з лічильником із зазначенням затримок часу (у машинних циклах):

movlw N ; Ініціалізація лічильника циклу (Tі=2) movwf cnt_cycle

Start_cycle:

; ************

; ************

decfsz cnt_cycle,f goto Start_cycle

Ініціалізація лічильника циклу виконується одноразово, а тіло циклу та команди зациклення виконуються кожен раз при проході циклу. Тому загальна затримка часу визначається за формулою T=Tі+(Tт+Tз) ∙N.

Статична індикація є найбільш простим засобом передачі даних до зовнішнього спостерігача. При статичній індикації кожен елемент зображення має індивідуальну лінію управління. Тому зміна сигналів управління відбувається тільки при зміні зображення. Такий підхід не потребує складних алгоритмічних дій та звільняє мікроконтролер для

5

виконання інших завдань. Але при статичної індикації використовується

значна кількість виводів мікроконтролеру, що у багатьох випадках може

бути неприпустимо.

Контрольні запитання

1.Які регістрі використаються при роботи з портами введення/виведення мікроконтролерів PIC16F627/PIC16F628?

2.Як підключити підтягувальні резистори до виводів порту B?

3.Що потрібно для витримки часу без використання апаратних модулів мікроконтролеру?

4.Як підрахувати тривалість виконання певного набору команд?

5.Назвіть переваги та недоліки статичної індикації.

6.Розрахуйте кількість виводів мікроконтролеру для статичної індикації на базі світлодіодної матриці розміром 8x8 світлодіодів.

ЛАБОРАТОРНА РОБОТА № 2

Тема: Динамічна індикація.

Мета:

1.Розглянути роботу з таймерами-лічильниками;

2.Засвоїти принцип побудови апаратних затримок часу з використанням переривань;

3.Засвоїти принцип динамічної індикації.

Завдання:

1.Скласти таблицю перекодування для виведення чисел у шістнадцятковій системі числення у відповідності з рис. 2.1;

2.Ініціалізувати порт B для виведення даних;

6

3.Реалізувати процедури динамічної індикації (табл. 2.1) для виведення значень, які знаходяться у комірках пам’яті Ind_Low та

Ind_High (адреси 20h та 21h), на два семисегментних світлодіодних індикатора, що підключено до порту B.

Таблиця 2.1 Варіанти завдань для лабораторної роботи №2*

Алгоритм зміни значень та порядок виведення даних

 

Індикація у шістнадцятковій системі числення старшої тетради

комірці

Ind_Low на старшому індикатоір, а молодшої тетради

1

 

комірці Ind_Low на молодшому індикаторі. Значення Ind_Low

циклічно змінюється від 00h до FFh.

 

Індикація прямого відліку (від 00h до FFh) у шістнадцятковій

2системі числення. Значення старшого шістнадцяткового розряду зберігається у комірці Ind_High, а молодшого – у комірці Ind_Low.

Індикація зворотного відліку (від 99 до 00) у десятковій системі

3числення. Значення старшого десяткового розряду зберігається у комірці Ind_High, а молодшого – у комірці Ind_Low.

Індикація двох десяткових розрядів (Ind_High та Ind_Low).

Молодшій розряд повинен бути менше старшого на 1 (якщо старший

4

розряд дорівнює 0, то молодший повинен дорівнювати 9). Старший розряд повинен циклічно змінюватися від 0 до 9.

Індикація двох десяткових розрядів (Ind_High та Ind_Low), які 5 одночасно змінюються в різних напрямках. Старший розряд

циклічно змінюється від 0 до 9, а молодший – від 9 до 0.

* – для всіх варіантів тактова частота мікроконтролеру дорівнює 4 МГц; частота оновлення зображення повинна бути не менш 50 Гц; частота зміни значень повинна дорівнювати 1 Гц.

7

Для оцінки результатів виконання програми слід використовувати засоби емуляції, які надаються середовищем розробки MPLAB, а також схему, яку наведено на рис. 2.1.

Рис. 2.1 Схема підключення семисегментних світлодіодних індикаторів Схема забезпечує динамічну індикацію за допомогою двох семисегментних світлодіодних індикаторів HL1 (молодший розряд) та HL2 (старший розряд), що підключено до порту B. Струм через світлодіоди сегментів обмежується резисторами R1-R7. Для вибору активного індикатора використовується транзистори VT1 та VT2. Транзистор VT3

виконує роль інвертора для можливості вибору активного індикатора за допомогою одного сигналу. Резистори R8-R10 обмежують базові струми транзисторів VT1-VT2. Також на схемі наведено просторове розташування сегментів індикатору.

Теоретичні відомості

Мікроконтролери PIC16F627/PIC16F628 мають 3 таймера з попередніми дільниками: два 8-розрядних (TMR0, TMR2) та один 16-

розрядний (TMR1). Кожен з таймерів здатний генерувати переривання по переповненню лічильника. Також є можливість використання TMR1

8

спільно з модулем порівняння, що забезпечує переривання по досягненні лічильником TMR1 певного значення. Таким чином, за допомогою таймерів можна підраховувати часові інтервали. Частота переривань від таймера при внутрішньому джерелі тактових імпульсів розраховується за формулою:

FП=FOSC /(4∙kПДkВДkЛ)

де FOSC – тактова частота мікроконтролеру, kПД – коефіцієнт попереднього дільника, kВД – коефіцієнт вихідного дільника (для TMR0 та TMR1 kВД=1), kЛ – коефіцієнт лічильника:

в режимі переповнення kЛ=2n, де n – розрядність таймеру;

в режимі порівняння (тригер спеціальної події активний) kЛ=N+1, де

N – значення у регістрі порівняння.

При появі переривання (якщо воно було дозволено) мікроконтролер автоматично виконує перехід на вектор переривань (адреса 04h). Вектор переривань повинен містити аналіз прапорців переривань (якщо використовується декілька переривань) та виклик відповідних підпрограм обробки переривань. Якщо прапорець переривання не скидається автоматично, то підпрограма обробки переривання повинна скидати цей прапорець. Кожна підпрограма обробки переривання повинна завершуватися командою повернення з переривання retfie.

Для коректного відображення певного кодового значення необхідно знати, які частини зображення повинні бути активні. Наявність декількох кодових значень, які необхідно відображати, призводить до побудови таблиці перекодування. Ця таблиця являє собою одновимірний масив,

номер комірки якого є кодовим значенням, а зміст комірки – набором активних та неактивних частин зображення. Зображення на семисегментному індикаторі формується з 7 або 8 частин – сегментів A-G

та DP. Відповідно рис. 2.1 використовується 7 частин зображення, тому що

9

сегмент DP, який відповідає за десяткову точку, у схемі не задіяний. Для активації сегмента потрібно подати рівень логічного 0 на катод відповідного діоду, а для деактивації – рівень логічної 1. Наприклад,

відображення кодового значення 3 потребує активації сегментів A, B, C, D,

G та деактивації сегментів E, F. Ці сегменти з’єднано з певними бітами порту B. Таким чином, можна поставити у відповідність кодовому значенню 3 послідовність бітів 1001000X. Молодшій біт не бере участь в формуванні зображення, тому його значення можна вибрати будь-яким.

При динамічної індикації зображення розбивається на декілька типових елементів. У кожний конкретний момент часу тільки один елемент може бути задіяний. Для того, щоб людина бачила цілісне зображення замість послідовності окремих елементів, треба чергувати ці елементи з досить великою частотою. Тому в динамічної індикації з’являється поняття оновлення зображення, яке повинно відбуватися з певною частотою. Якщо зображення складається з K типових елементів та частота оновлення всього зображення дорівнює n Гц, то частота чергування елементів зображення повинна складати nK Гц.

Контрольні запитання

1.Порівняйте таймери TMR0 та TMR2.

2.Розрахуйте мінімальну частоту переривань від TMR1 при тактовій частоті мікроконтролеру 10 МГц.

3.Як налаштувати TMR0 на роботу з коефіцієнтом попереднього дільника 64 та дозволити переривання від TMR2?

4.Які регістрі містять біти дозволу переривань та прапорці переривань для таймерів TMR0, TMR1 та TMR2?

5.Назвіть переваги та недоліки динамічної індикації.

6.Розрахуйте мінімальну кількість виводів мікроконтролеру для динамічної індикації на базі 10 семисегментних індикаторів.

10

Соседние файлы в папке вычтехника