Для встановлення хорошого зв'язку між людським світом та машинним світом дисплейні блоки відіграють важливу роль. І тому вони є важливою частиною вбудованих систем. Вітрини - великі чи маленькі, працюють за тим же основним принципом. Окрім складних блоків відображення, таких як графічні дисплеї та тривимірні дисплеї, потрібно знати роботу з простими дисплеями, такими як 16x1 та 16x2. Відображувач 16x1 матиме 16 символів і знаходиться в одному рядку. РК-дисплей 16x2 матиме 32 символи в цілому 16 в 1- му рядку та ще 16 у 2- мулінія. Тут потрібно розуміти, що в кожному символі є 5x10 = 50 пікселів, тому для відображення одного символу всі 50 пікселів повинні працювати разом. Але нам не слід турбуватися про це, оскільки в блоці дисплея є інший контролер (HD44780), який виконує роботу з управління пікселями. (Ви можете побачити це на РК-дисплеї, це чорне око ззаду).
Потрібні компоненти
Обладнання:
Мікроконтролер ATmega32
Блок живлення (5 В)
Програміст AVR-ISP
JHD_162ALCD (РК-дисплей 16x2)
Конденсатор 100 мкФ.
Програмне забезпечення:
Студія Atmel 6.1
Прогісп або флеш-магія
Принципова схема та пояснення
Як показано на РК-інтерфейсі зі схемою ATmega32, ви можете бачити, що PORTA ATMEGA32 підключений до РК-порту даних. Тут слід пам’ятати про те, щоб вимкнути зв'язок JTAG у PORTC ATMEGA, змінивши байти запобіжників, якщо потрібно використовувати PORTC як звичайний порт зв'язку. У РК-дисплеї 16x2 є 16 штифтів, якщо є підсвічування, якщо немає підсвічування, буде 14 штифтів. Можна підключити або залишити шпильки підсвічування. Тепер у 14 висновках є 8 висновків даних (7-14 або D0-D7), 2 висновки джерела живлення (1 & 2 або VSS & VDD або gnd & + 5v), 3- й висновок для контролю контрасту (VEE-контролює, наскільки товстими повинні бути символи показано), 3 керуючі штифти (RS & RW & E)
У наведеній вище схемі інтерфейсу 16x2 РК-дисплея з мікроконтролером AVR ви можете помітити, що я взяв лише два керуючі штифти. Це надає гнучкість кращого розуміння. Біт контрасту та READ / WRITE використовуються не часто, тому їх можна закоротити на землю. Це дає РК-дисплею найвищий контраст і режим читання. Нам просто потрібно контролювати ENABLE та RS-шпильки, щоб відповідно надсилати символи та дані.
Зв'язки між мікроконтролером ATmega32 та РК-дисплеєм 16x2 наведені нижче:
PIN1 або VSS - заземлення
PIN2 або VDD або VCC - + 5 В потужність
PIN3 або VEE - заземлений (забезпечує максимальний контраст найкращий для початківців)
PIN4 або RS (Вибір реєстру) - PD6 мікроконтролера
PIN5 або RW (читання / запис) - заземлення (переведення РК в режим читання полегшує зв’язок для користувача)
PIN6 або E (увімкнути) - PD5 мікроконтролера
PIN7 або D0 - PA0 мікроконтролера
PIN8 або D1 - PA1
PIN9 або D2 - PA2
PIN10 або D3 - PA3
PIN11 або D4 - PA4
PIN12 або D5 - PA5
PIN13 або D6 - PA6
PIN14 або D7 - PA7
У схемі ви можете бачити, що ми використовували 8-бітовий зв'язок (D0-D7), однак це не є обов'язковим, і ми також можемо використовувати 4-бітний зв'язок (D4-D7), але з 4-бітовою програмою зв'язку стає трохи складним для початківців, тому ми просто пішли з 8-бітове спілкування.
Отже, завдяки простому спостереженню у верхній таблиці ми підключаємо 10 контактів РК-дисплея до контролера, в якому 8 контактів - це контакти даних і 2 контакти для управління.
Працює
Тепер для початку ви повинні знати функції 10 контактів РК-дисплея 16x2 (8 контактів даних + 2 керуючі штифти). 8 штифтів даних призначені для надсилання даних або команд на РК-екран. У двох контрольних штифтах:
1. Контакт RS (Вибір реєстру) повідомляє РК-дисплею, чи надсилаємо ми йому дані, чи команду на нього.
Наприклад:
У таблиці вище для порту даних (D7-D0) значення «0b0010 1000 або 0x28» повідомляє РК-дисплею відображати символ «(». У таблиці дві те саме значення 0x28 повідомляє РК-дисплею «ви - РК-екран із 5 крапками і поводитись як один ", тож для одного і того ж значення користувач може визначити дві речі, тепер ця ситуація нейтралізується за допомогою вибору реєстру вибору, якщо штифт RS встановлений низько, тоді РК розуміє, що ми надсилаємо команду. Якщо ми встановимо штир RS на високий, тоді РК-дисплей розуміє, що ми надсилаємо дані, і тому в обох випадках РК-дисплей поважає значення порту даних відповідно до штифтового значення RS.
2. Штифт E (Enable) - це просто повідомлення “світлодіодний індикатор живлення ПК”, цей штифт встановлений у високий рівень, щоб повідомляти РК-дисплею “приймати дані з порту даних контролера”. Як тільки цей штифт стає низьким після високого, РК-дисплей обробляє отримані дані та показує відповідний результат. Отже, цей штифт встановлюється на високий рівень перед відправкою даних і зсувається на землю після надсилання даних.
Тепер, підключивши апаратне забезпечення, запустіть Atmel studio і запустіть новий проект для написання програми, тепер відкрийте екран програмування та запустіть програму віджиму. Програма повинна слідувати, як показано нижче.
Спочатку ми повідомляємо контролеру, які порти ми використовуємо для передачі даних та управління РК-дисплеєм. Потім повідомте контролеру, коли слід надіслати дані або команду відповідно, відтворюючи штифти RS і E.
Коротке пояснення понять, що використовуються в програмі:
1. E встановлено високим (РК-екран приймає дані), а RS встановлений низьким (РК-екран повідомляє, що ми даємо команду)
2. Надання значення 0x01 порту даних як команда для очищення екрана
3. E встановлено високим (РК-екран приймає дані), а RS - високим (РК-екран повідомляє, що ми передаємо дані)
4. Беручи рядок символів, посилаючи кожного символа в рядок по черзі.
5. E встановлено низьким (повідомляючи РК-дисплею, що ми закінчили надсилання даних)
6. Після останньої команди РК-дисплей припиняє зв’язок та обробляє дані та відображає рядок символів на екрані.
У цьому сценарії ми збираємось відправляти символів один за одним. Символи надаються РК-коду кодами ASCII (американський стандартний код для обміну інформацією).
Таблиця кодів ASCII наведена вище. Тут для того, щоб на РК-дисплеї відображався символ “@”, нам потрібно надіслати шістнадцятковий код “64”. Якщо ми надішлемо "0x62" на РК-дисплей, він покаже символ ">". Отак ми збираємось надіслати відповідні коди на РК-дисплей для відображення імені.
Спосіб зв'язку між РК-дисплеєм і мікроконтролером ATmega32 AVR найкраще пояснюється поетапно нижче коду С,