Мета роботи: набуття практичних навичок керування для виведення статичної і динамічної інформації.
1. Ознайомитися з теоретичним матеріалом, наведеним в описі.
2. Закріплення навичок розробки пристроїв IoT з використанням Arduino IDE, Simulator Arduino, Proteus VSM.
3. Отримати навички налагодження програм з використанням бібліотек.
4. Провести аналіз використовуваного об'єму ресурсів мікроконтролера.
5. Проаналізувати швидкість виведення інформації на індикатор.
6. Реалізувати виведення в рядку екрану вибрану дату у форматі рисунку 1в, а в іншому рядку - послідовність номерів векторів переміщення з лабораторної роботи 2.
7. Реалізувати виведення параметрів (число секунд, лічильник циклів), що змінюється в часі.
8. Підготувати звіт про виконану роботу.
Практично будь-який МК пристрій IoT має ті або інші пристрої індикації. У простому випадку це всього декілька світлодіодів, а іноді це кольоровий графічний дисплей. Поява модулів LCD зі вбудованими контролерами значно спростила схеми сполучення. Найбільш універсальні і доступні матричні алфавітно-цифрові модулі, які дозволяють відображати цифри, букви латинського і російського алфавіту і навіть псевдографічні елементи, використовуючи можливості завантажування символів. Розширюється застосування малогабаритних монохромних графічних індикаторів. Сучасні кольорові графічні індикатори мають найширші можливості, забезпечуються сенсорними
панелями і виконують функції операторських панелей, відображення даних моніторингу стану обладнання, приміщень і оточуючого середовища.
Дуже популярні індикатори на базі контролера HD44780 або його аналогів. У них забезпечується сумісність з ASCII - таблицею символів і використовується дуже простий інтерфейс: для паралельного інтерфейсу - всього 2/3 керуючих виводам і 4/8 бітна шина даних.
Контрастність LCD залежить від температури і величини напруги V0, яка подається на вхід керування. Чим більша напруга, тим менше контрастності і навпаки. Використовуючи один з виходів PWM, можна програмно керувати контрастністю.
Модулі LCD часто мають конструктивне об'єднання із спрощеною клавіатурою. Широко поширений LCD Keypad Shield c індикатором CS1602 і 5 кнопковою клавіатурою (рисунок 3.1).
a) |
|
б) |
в) |
Рисунок 3.1 - Конструкція LCD Keypad Shield (а-в)
Рисунок 3.2 - Структурна схема LCD Keypad Shield Модуль є мезонінною платою розширення і підключається
до певних ліній МК пристрою. (рисунок 3.3).
Рисунок 3.3 - Принципова схема LCD Keypad Shield
В аналоговій клавіатурі при натисненні кнопок змінюється співвідношення плечей дільника напруги 5В і на вхід AD0 АЦП
поступає напруга різних рівнів. Аналіз результату АЦП дозволяє визначити натиснуту клавішу.
Керування дисплеєм з контролером Hitachi HD44780 припускає вибір конфігурації і виконання ряду команд:
- включити/виключити дисплей (On/Off);
- 8/4- бітна шина даних/адрес (DB7…DB0) / (DB7...DB4);
- 1/2 рядковий режим;
- вибір шрифту розміром 5×7 або 5×10 пікселів;
- включити/відключити курсор (символ підкреслення);
- включити/відключити курсор (чорний квадрат);
- зрушення дисплея повністю (Scroll); зрушення курсора вліво/вправо.
Данна бібліотека дозволяє Arduino працювати з LCD, заснованими на Hitachi HD44780 (чи сумісними) в 4-х і 8 бітовому режимі. При цьому використовується 4 або 8 ліній даних і лінії RS, Enable керування записом команд/даних (читання зазвичай не використовується і у схемі RW = 0).
У бібліотеці LiquidCrystal реалізований розширений набір функцій :
- LiquidCrystal (rs, enable, d0, d1, d2, d3) - оголошення ліній керування індикатором з 4-бітовою шиною даних;
- LiquidCrystal lcd (8, 9, 7, 6, 5, 4); - оголошення змінної lcd типу LiquidCrystal;
- begin (cols, rows); - вказівка числа символів в рядку і числа рядків;
- lcd.begin (16, 2);
- display ()/noDisplay () - включення/виключення екрану;
- clear (); - очищення екрану;
- home (); - перехід до позиції (0,0);
- cursor ()/noCursor () - включення/виключення курсора;
- blink ()/noBlink () - вкл./выкл. мигання курсора;
- setCursor (col, row) - переклад курсора на (col, row);
- lcd.setCursor (0, 1);
- scrollDisplayLeft ()/scrollDisplayRight () - зрушення екрану вліво/вправо;
- leftToRight ()/rightToLeft () - виведення ліворуч-направо/ справа-наліво;
- autoscroll ()/noAutoscroll () - вкл./викл. зрушення екрану перед виведенням символу;
- print (х) - друк символу, рядка або рядкового представлення числа;
- write (x) - друк символу з кодом x;
- Модель LCD в Simulator Virtronics;
- Simulator Virtronics в теці ...\Virtronics\LCD\ містить приклади використання функцій бібліотеки LiquidCrystal:
- HelloWorld.ino - друк тексту;
- Display.ino - вкл./викл. екрану;
- Blink.ino - мигання екрану;
- Cursor.ino - вкл./викл. курсора;
- setCursor.ino - встановлення курсора;
- Scroll.ino - керування зрушенням екрану;
- Autoscroll.ino – автозрушення екрану;
- TextDirection.ino - керування напрямом виведення тексту;
- SerialDisplay.ino - перенаправлення прийнятих даних UART на екран.
Приклади є шаблонами для розробки програм, що використовують виведення на LCD. Необхідно провести аналіз прикладів з використанням симулятора.
У прикладі SerialDisplay.ino прийнятий UART рядок після очищення екрану виводиться з позиції (0,0).
Рисунок 3.4 – Виведення символьної послідовності на екран
Модель знаходиться у вкладці VSM for AVR :
Модуль LCD керується МК через цифрові лінії виведення відповідно до рисунку 3.4, наприклад від ATmega328 (рисунок 3.5).
Рисунок 3.5 – МК модуль керування на основі МК ATmega328 Приклади відображення інформації про натиснуті кнопки на
екрані LCD в моделі Proteus наведені на рисунку 3.6.
Рисунок 3.6 – Моделювання виведення інформації на LCD Інформація на екрані може включати фіксований текст,
оновлюванні значення (код символу) в певній позиції і “рухомий рядок” (рисунок 3.7).
Рисунок 3.7 – Приклад скролінгу рядка
Задача 1. Вивести в рядку 1 екрану вибрану дату у форматі рисунку 3.1в, а в іншому рядку - послідовність номерів векторів переміщення з лабораторної роботи 2.
Задача 2. Додати до попередньої задачі виведення з позиції (0,12) параметра (число секунд, лічильник циклів), що змінюється в часі.
Задача 3. Вивести рухомий рядок символів, в другому рядку LCD.
1. Схеми апаратних засобів для вирішення завдань.
2. Тексти програм для завдань.
3. Результати моделювання.
4. Результати виконання експериментів.
5. Висновки по роботі.
1. Скільки ліній потрібно для підключення символьного LCD?
2. Охарактеризуйте інтерфейс індикатора (послідовний/паралельний, асинхронний/синхронний і так далі).
3. Як очистити екран?
4. Яку інформацію можна виводити на екран LCD?
5. Як змінити напрям виведення символів?
6. Як вивести символ в середині рядка 2?
7. Яка зона дії скролінгу?
8. Які функції реалізовані у бібліотеці LiquidCrystal?
9. У чому відмінність методів print і write бібліотеки Liquid Crystal?
10. Як визначити натиснену клавішу на аналоговій клавіатурі?
1. Соммер У. Программирование микроконтроллерных плат Arduino/Freeduino. – СПб.:БХВ – Петербург, 2012. – 256с.
2. Подключение LCD 1602 (HD44780) к Arduino. [Електронний ресурс]. – Режим доступу: - http://zelectro.cc/LCD1602
3. Среда разработки Arduino. [Електронний ресурс]. – Режим доступу: http://www.arduino.cc/en/Main/Software
4. Simulator for Arduino. [Електронний ресурс]. – Режим доступу: http://virtronics.com.au/Data/SetupFree.zip.
5. Программирование Ардуино. [Електронний ресурс]. – Режим доступу: http://arduino.ru/Reference
6. PROTEUS VSM. Среда виртуального моделирования. - PROTEUS-d.pdf [Електронний ресурс]. Режим доступу: http://proteus123.narod.ru/