Використання бібліотеки для роботи з lcd hd44780 - мікроконтролери та технології

У цій статті я розповім як за допомогою досить поширеною бібліотеки управляти LCD дисплеєм на базі контролера HD44780 і ​​виводити на нього інформацію. Бібліотека складається з двох файлів lcd_lib.h і lcd_lib.c для використання з дисплеєм підключеним по четирехбітних шині даних. В заголовки прописуються налаштування підключення дисплея до контролера, які можна змінити на свій розсуд, а також змінні і функції.

Нижче представлені базові функції управління і виведення інформації на LCD.

lcd_com - посилка команди в LCD

приклад:
lcd_com (0x01); // очищення дисплея
lcd_com (0x38); // інтерфейс 8 біт 2 рядки

lcd_dat - висновок одного символу в поточну позицію

приклад:
lcd_dat ( "U"); // вивід символу "U"
lcd_dat (0xB0); // вивід символу "Ю" (В відповідність з таблицею символів дисплея)

lcd_init - Ініціалізація LCD

Ось приклад широко поширеною послідовності для ініціалізації LCD: 0x38, 0xOC, 0x06.
0x38 встановлює режим відображення 2-х рядків з матрицею 5 х 8 точок і роботу з 8-ми розрядної шиною даних;
0xOC включає відображення на екрані РКІ-можуля, без відображення курсорів;
0x06 встановлює режим автоматичного переміщення курсору зліва-направо після виведення кожного символу.

lcd_clr - очищення LCD

lcd_home - переводить курсор в початок

lcd_string - висновок рядка зазначеної довжини в поточну позицію

Приклад: lcd_string ( "TEST", 4); // вивід рядка TEST довжиною 4 символи

lcd_gotoxy - переміщує курсор в зазначену позицію

Приклад: lcd_gotoxy (12, 1); // курсор в позиції тринадцятий розряд другого рядка

lcd_definechar - записує користувацького зображення символу в пам'ять дисплея

Щоб вивести на екран дисплея власний символ необхідно знати код символу, прописати цей код в пам'яті програм мікроконтролера (PROGMEM), потім помістити його в вільну комірку пам'яті LCD (CGRAM) і виводити його на екран за допомогою функції lcd_dat ().

Створювати символ більш зручно в довічним форматі, наприклад створимо символ прямокутника, код буде таким:

lcd_shift_right - переміщує зображення на вказане число символів вправо

lcd_shift_Left - переміщує зображення на вказане число символів вліво

lcd_cursor_on - включає курсор підкреслення

lcd_cursor_blink - включає миготливий курсор

lcd_cursor_off - вимикає курсор

lcd_blank - відключає зображення, але не очищає

lcd_visible - включає зображення

lcd_cursor_left - переміщує курсор на вказане число символів вліво

lcd_cursor_right - переміщує курсор на вказане число символів вправо

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

lcd_num_to_str - дозволяє виводити на дисплей змінну до 4 розрядів

Приклад: void lcd_num_to_str (ADC, 4); // Виводимо змінну АЦП 4 розряду

Зробимо проект "Аналоговий вольтметр" в якому інформація про измеренном напрузі буде виводиться на екран у вигляді горизонтальної динамічної шкали. Вимірюється напруга подається на вхід ADC0, максимум 5В. без використання дільника. Використовуємо для цього проекту мікроконтролер atmega8, який тактується від внутрішнього генератора частотою 8МГц. Дисплей підключаємо по четирехбітних шині у відповідність з настройками з файлу lcd_lib.h. При створенні проекту в AVRSTUDIO копіюємо 2 файли бібліотеки в папку нашого проекту, а в дереві проекту додаємо ці файли (lcd_lib.c і lcd_lib.h).

За висновок динамічної шкали відповідає функція lcd_progress_bar (uint8_t progress, uint8_t maxprogress, uint8_t length). в залежності від стану змінних цієї функції, шкала змінює свій рівень, progress - рівень від 0 до 255, maxprogress - максимальний рівень обмежується числом від 0 до 255, length - довжина шкали від 0 до 16 осередків (в залежності від типу дисплея). Так як при максимальній напрузі на вході значення ADC дорівнює 1024, ділимо це значення на 4 і присвоюємо його змінної "u", а змінну "u" використовуємо в функції виведення динамічної шкали void progress ().

Повний текст програми викладаю нижче:

Схожі статті