Вивчення принципів програмного керування зовнішніми пристроями на прикладі виводу інформації на цифровий індикатор

Ціль роботи: вивчити принципи функціонування й можливості програмного керування цифровим індикатором, розробити алгоритм і програму для виводу інформації на цифровий індикатор.

 

3.1 Вказівки по організації самостійної роботи

Перед роботою необхідно проробити теоретичний матеріал по літературі [1,2] і конспект лекцій, ознайомитися із принципами функціонування й можливостями програмного керування виводом символів на екран 10 позиційного цифрового ЖК-індикатора LCM-10 з використанням мікроконтролера AVR АТMEGA128.

Принципи програмного керування виводом символів на екран цифрового індикатора за допомогою мікроконтролера AVR АТMEGA128. У лабораторній роботі використовується 10-ти позиційний жидкокристалічний (LED) цифровий індикатор на базі контролера НТ1613 фірми Holtek (див. рисунок 3.1), для підключення якого використовується порт вводу/виводу B (адреси регістрів порту приводяться в таблиці 1.1). Вихідний сигнал з 0-го біта порту B (PORTB.0) управляє тактовим входом SK цифрового індикатора, а сигнал з 1-го біта порту B (PORTB.1) – входом даних DI (див. рисунок 3.2).

 

Рисунок 3.1 - Схематичне зображення передньої панелі

10-позиційного цифрового індикатора

Рисунок 3.2 - Схема підключення інформаційних

входів цифрового індикатора до лабораторного макета

ЖК-індикатор дозволяє здійснювати вивід цифрових і спеціальних символів, які кодуються 4 розрядами (див. таблицю 3.1). Код символу передається послідовно у вигляді пакета, що складається з 4-х бітів b3, b2, b1, b0 (перший – старший, останній – молодший біти). Сигнали даних у пакеті подаються на вхід DI цифрового індикатора й защьолкуются по задньому фронті тактуючих імпульсів на тактовому вході SK. При цьому часовий інтервал Та з моменту установки стабільного рівня сигналу даних до появи заднього фронту тактуючого сигналу не повинен бути менше 50 нс, часовий інтервал Тb між заднім і переднім фронтами тактуючих імпульсів повинен бути не менш 60 нс, а часовий інтервал Тс між пакетами даних – не менш 80 нс при тривалості пакета порядка 500 нс (cм. рисунок 3.3).

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

Таблиця 3.1 - Кодування символів, виведених на екран

цифрового індикатора

 

Біти даних Символ
b3 b2 b1 b0
        табуляція
         
         
         
         
         
         
         
         
         
         
        F
       
       
        P
       

 

Рисунок 3.3 - Тимчасові діаграми пакетного циклу передачі

коду символу для виводу на екран цифрового індикатора

 

Як приклад розглянемо фрагмент програми виводу на екран цифрового індикатора символу 6, 4-х бітовий код якого (0110) наведений в 7-му рядку таблиці 3.1.

...

#asm

ldi R18,0xFF настроїти порт В на вивід даних;

Out 0x17, R18

 

cbi 0x18,1 вивести значення 3-го біта даних в 1-й розряд порту В;

sbi 0x18,0 установити в 1 рівень тактуючого сигналу;

cbi 0x18,0 скинути в 0 рівень тактуючого сигналу;

 

sbi 0x18,1 вивести значення 2-го біта даних в 1-й розряд порту В;

sbi 0x18,0 установити в 1 рівень тактуючого сигналу;

cbi 0x18,0 скинути в 0 рівень тактуючого сигналу;

 

 

sbi 0x18,1 вивести значення 1-го біта даних в 1-й розряд порту В;

sbi 0x18,0 установити в 1 рівень тактуючого сигналу;

cbi 0x18,0 скинути в 0 рівень тактуючого сигналу;

 

cbi 0x18,1 вивести значення 0-го біта даних в 1-й розряд порту В;

sbi 0x18,0 установити в 1 рівень тактуючого сигналу;

cbi 0x18,0 скинути в 0 рівень тактуючого сигналу;

#endasm

...

Наведений фрагмент програми показує, що при виводі символу на екран цифрового індикатора необхідно виконати передачу бітів даних по лінії, підключеної до 1-го розряду порту В, при подачі тактуючих сигналів по лінії, підключеної до 0-го розряду порту В. Так, як тактова частота мікроконтролера ATMEGA 128, що входить до складу лабораторного макета, дорівнює 11 Мгц, то тривалість циклу команди, виконуваної за один такт, дорівнює 90 нс, що дозволяє виконувати передачу даних без введення додаткових затримок.

 

3.2 Опис лабораторної установки

Лабораторна робота виконується в індивідуальному порядку. На кожному робочому місці повинні бути встановлені: багатофункціональний лабораторний макет на базі мікроконтролера AVR ATMEGA 128, ПЕОМ типу IBM PC/AT c інстальованим програмним забезпеченням: операційною системою MS-WINDOWS v. 9x, 2000, XP і программатором на основі крос-компілятора мови програмування C CodeVision AVR. Завдання виконуються на лабораторному макеті на базі 8-ми розрядного мікроконтролера AVR ATMEGA 128. Докладний опис лабораторного макета наведено в пункті 1.2 лабораторної роботи № 1.

У даній роботі основним використовуваним периферійним устаткуванням лабораторного макета будуть матрична клавіатура 3´4 (див. рисунок 2.4), яка підключається до мікроконтролера через порт Е, і цифровий 10-ти позиційний жидкокристалічний індикатор (див рисунок 3.4), керуюча частина якого виконана на основі контролера Holtek НТ1613. Індикатор підключається до лабораторного макета за допомогою 4-х провідного кабелю з роз’ємом DB-25. Тактовий SK і інформаційний DI входи індикатора підключені до 0-го й 1-го виходів порту вводу/виводу B мікроконтролера відповідно; дві інші лінії підключаються до джерела живлення +5 В та загальному дроту.

 

Рисунок 3.4 - Загальний вид панелі цифрового індикатора

і интерфейсного роз’єму

 

 

3.3 Порядок проведення роботи й вказівки по її виконанню

Перед початком виконання практичної частини лабораторної роботи проводиться експрес-контроль знань по принципах функціонування мікроконтролера AVR ATMEGA 128, системі команд і можливостям організації програмного керування виводом символів на екран цифрового індикатора.

При підготовці до лабораторної роботи необхідно скласти попередній варіант листинга програми, у відповідність із індивідуальним завданням (див. таблицю 3.2).

Завдання. Розробити в середовищі програмування Code Vision AVR програму для мікроконтролера AVR ATMEGA 128, що виконує опитування клавіатури лабораторного макета й виводить інформацію про натиснуті клавіші (або комбінаціях клавіш) на екран цифрового індикатора. Позначення клавіш наведені на рис. 2.4. Варіанти індивідуальних завдань представлені в таблиці 2.1.

Порядок виконання завдання:

1. Включити лабораторний макет (установити вимикач електроживлення в положення I, і переконатися у світінні індикатора електроживлення червоними кольорами).

2. Запустити компілятор Code Vision AVR.

3. Створити порожній проект.

4. Створити файл ресурсу для коду програми й підключити його до проекту.

5. Увести код вихідного модуля програми виводу інформації на екран цифрового індикатора у відповідність із кодом натиснутої клавіші відповідно до варіанта завдання, зазначеному в таблиці 3.2.

6. Виконати компіляцію (нажавши клавішу F9) вихідного модуля програми й усунути помилки, отримані на даному етапі.

7. Настроїти параметри программатора.

8. Створити завантажувальний модуль програми (нажавши комбінацію клавіш Shift+F9) і виконати програмування мікроконтролера.

9. Перевірити працездатність завантаженої в мікроконтролер програми й показати результати роботи викладачеві.

10. У випадку некоректної роботи розробленої програми, виконати апаратне скидання мікроконтролера, провести налагодження вихідного модуля програми й заново перевірити функціонування програми, повторивши виконання пункту 9.

 

Приклад виконання завдання. Розробити програму, що виводить на екран цифрового індикатора символ 1 при натисканні на клавішу 1, і символ 2 при натисканні комбінації клавіш 1+2. Нумерація клавіш матричної клавіатури 3×4 наведена на рис. 2.4.

Рішення: у лабораторному макеті матрична клавіатура 3´4 підключена до порту E мікроконтролера. Лінії старшої тетрады порту Е настроюються на вивід даних, а лінії молодшої тетрады - на уведення. Входи цифрового індикатора підключені до виходів порту B мікроконтролера у відповідність зі схемою на рис. 3.2. Порт В настроюється на вивід даних. Основна частина програми у відповідність із алгоритмом, зображеним на рис. 3.5, містить цикл опитування клавіатури, перевірку натискання клавіші 1 або комбінації клавіш 1+2 і процедури виводу символів 1 і 2 на індикатор.

Рисунок 3.5 - Алгоритм програми виводу символу на екран цифрового

індикатора залежно від даних, прийнятих із клавіатури

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

#include <mega128.h> Підключити заголовний файл mega128.h;

main() { основна частина програми;

#asm початок коду ассемблерної вставки;

ldi R18,0b11100000 запис маскуючи констант у регістри;

Ldi R19,0b11111111

Ldi R20,0b11110000

out 02,R20 настроювання ліній E0-3 на уведення, а E4-7 на вивід;

out 0x17, R19 установити режим виводу для порту B;

out 03,r18 обнулити біт E4 для опитування клавіш 1-го стовпця;

loop1: стартова мітка циклу опитування;

in r16,01 зчитати дані з регістра PINE в R16;

or r16,r20 застосувати маску для виділення даних у молодшій тетраді регістра R16;

cpi R16,0b11111110 перевірити натискання клавіші 1;

brne lbl якщо клавіша 1 не натиснута, то перехід на мітку lbl для продовження процедури перевірки;

ldi R27,9 організувати цикл із параметром в R27 з 9 ітерацій;

lblc: стартова мітка циклу з параметром;

вивід символу табуляції з кодом 0000;

cbi 0x18,1 біт b3;

Sbi 0x18,0

Cbi 0x18,0

 

cbi 0x18,1 біт b2;

Sbi 0x18,0

Cbi 0x18,0

 

cbi 0x18,1 біт b1;

Sbi 0x18,0

Cbi 0x18,0

 

cbi 0x18,1 біт b0;

Sbi 0x18,0

Cbi 0x18,0

dec R27 завершальний код циклу з 9 ітерацій;

Cpi R27,0

brne lblc:

вивід символу 1 на екран цифрового індикатора;

cbi 0x18,1 біт b3;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b2;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b1;

Sbi 0x18,0

Cbi 0x18,0

sbi 0x18,1 біт b0;

Sbi 0x18,0

Cbi 0x18,0

rjmp vihod виконати перехід для завершення поточної ітерації циклу;

lbl: мітка фрагмента перевірки натискання комбінації клавіш 1+2;

cpi R16, 0b11111100 виконати перевірку натискання комбінації клавіш 1+2;

brne vihod якщо комбінація клавіш 1+2 не натиснута, то перехід на мітку vihod для виходу з поточної ітерації циклу;

ldi R27,9 організувати цикл із параметром в R27 з 9 ітерацій;

lblc2: стартова мітка циклу з параметром;

вивід символу табуляції з кодом 0000;

cbi 0x18,1 біт b3;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b2;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b1;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b0;

Sbi 0x18,0

Cbi 0x18,0

 

dec R27 завершальний код циклу з 9 ітерацій;

Cpi R27,0

brne lblc2:

вивід символу 2 на екран цифрового індикатора;

cbi 0x18,1 біт b3;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b2;

Sbi 0x18,0

Cbi 0x18,0

sbi 0x18,1 біт b1;

Sbi 0x18,0

Cbi 0x18,0

cbi 0x18,1 біт b0;

Sbi 0x18,0

Cbi 0x18,0

 

vihod: мітка завершення коду поточної ітерації циклу опитування;

rjmp loop1 виконати перехід до нової ітерації циклу опитування;

#endasm завершення коду ассемблерної вставки;

} завершальна операторна дужка програми;

 

Таблиця 3.2 – Варіанти індивідуальних завдань*

№ п. п. Завдання
  Розробити програму, що виводить на екран цифрового індикатора символ 8 при натисканні на клавішу 8,і символ 9 при натисканні комбінації клавіш 5+6.
  Розробити програму, що виводить на екран цифрового індикатора символи 2 і 3 при натисканні на клавіші 2і 3 відповідно.
  Розробити програму, що виводить на екран цифрового індикатора символ 5 при натисканні на клавішу 12,і символ 6 при натисканні комбінації клавіш 9+10+11.
  Розробити програму, що виводить на екран цифрового індикатора символи 3 і 4 при натисканні на клавіші 3і 4 відповідно.
  Розробити програму, що виводить на екран цифрового індикатора символ 8 при натисканні на клавішу 11,і символ 7 при натисканні комбінації клавіш 9+10.
  Розробити програму, що виводить на екран цифрового індикатора символ 0 при натисканні на клавішу 1,і символ 1 при натисканні комбінації клавіш 1+2+3+4.
  Розробити програму, що виводить на екран цифрового індикатора символи 6 і 7 при натисканні на клавіші 6і 7 відповідно.
  Розробити програму, що виводить на екран цифрового індикатора символ 5 при натисканні на клавішу 5,і символ 6 при натисканні комбінації клавіш 5+6+7.
  Розробити програму, що виводить на екран цифрового індикатора символ 7 при натисканні на клавішу 7,і символ 8 при натисканні комбінації клавіш 5+6.
  Розробити програму, що виводить на екран цифрового індикатора символ 4 при натисканні на клавішу 12,і символ 5 при натисканні комбінації клавіш 11+12.

* Нумерація клавіш матричної клавіатури 3×4 наведена на рис. 2.4.

 

Зміст звіту

У звіті необхідно привести наступне:

характеристики лабораторної обчислювальної системи;

вихідний модуль розробленої програми;

аналіз отриманих результатів і короткі виводи по роботі, у яких необхідно відбити особливості керування виводом даних на екран цифрового індикатора за допомогою мікроконтролера AVR ATMEGA 128.

 

3.5 Контрольні питання й завдання

1. Поясніть принцип функціонування цифрового індикатора підключаємого до лабораторного макета.

2. Поясніть алгоритм програмного керування контролером цифрового індикатора.

3. Яким чином можна здійснювати вивід інформації на цифровий індикатор у фіксовані позиції?

4. Поясніть принципи використання команд установки й скидання окремих бітів; приведіть приклади.

5. Приведіть алгоритм універсальної програми керування цифровим індикатором.

6. Яким чином можна формувати сигнали заданої тривалості на вихідних лініях портів вводу/виводу?

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: