Бібліотека для символьного дисплея на базі HD44780

Хотів би представити Вашій увазі свою бібліотеку для роботи з широко поширеними символьними дисплеями на базі контролера HD44780.

символьного

базі
Мал.1 Зовнішній вигляд дисплея на базі контролера HD44780 (2 рядки Х 16 символів).

Бібліотека написана на С#, Atmel Studio 6.2. Бібліотека складається з двох файлів: HD44780_Config.h та HD44780.c. Перший файл є заголовним, він, власне, і підключається до Вашого проекту директивою #include "HD44780_Config.h". Також у цьому файлі ми прописуємо всі необхідні нам початкові налаштування. Ось, власне, вихідний код цього заголовного - настроювального файлу:

Даний макрос визначає, за якою схемою Ви хочете підключити свій дисплей до мікроконтролера - 4-провідна (Data_Length 0) або 8-провідна (Data_Length 1).

базі
Рис.2 Схеми підключення дисплея до МК

а) 8-ми провідна б) 4-х провідна

Якщо ви вибираєте 4-х провідну схему, то бітно записуєте порти МК, до яких підключені лінії дисплея, в цей макрос:

Наприклад, де PORT_bus_4 - це ім'я порту МК, якого підключена лінія дисплея DB4. Аналогічно і із записом біта порту: PIN_bus – номер біта порту, до якого підключена лінія дисплея DB4.

Якщо ви вибираєте 8-провідну схему, то бітно записуєте порти МК, до яких підключені лінії дисплея, в цей макрос:

Тут так само, тільки дротів більше. Навіщо такі складнощі, запитаєте ви? Відповідь проста завдяки цьому, Ви можете підключати лінії дисплея абсолютно в розкид по всіх портах МК, до яких захочете і ніжки яких будуть вільні. Просто найчастіше виходить так, що при проектуванні якогось пристрою не вдається зберегти абсолютно вільним цілий порт. Я часто стикався з цієюпроблемою, і вирішив її таким чином. Тут Ви не прив'язані до конкретних ніжок МК, які цифри напишете та назви портів у наведених макросах налаштування, по таких лініях мікроконтролера і буде працювати ваш дисплей.

Інші макроси та функції, я думаю, не викличуть труднощів у використанні, оскільки їх опис наводиться безпосередньо у вихідному коді заголовного файлу. Єдина функція, якій я хотів би приділити додаткову увагу-функція запису в пам'ять CGRAM символів користувача, яких немає в таблиці ASCI:

LCD_UserSymbolsWrite(uchar Addr, uchar *data);

Так, я трохи відволікся від теми. Запис на дисплей символів користувача. - Для спрощення цього завдання, на додаток до бібліотеки, я написав просту програму:

hd44780
Рис.3 Зовнішній вигляд програми для малювання символів користувача

Сині квадратики відповідають не активованим пікселям сегмента дисплея. Натисканням миші можна перемикати ці пікселі між видимим станом і не видимим. Програма розраховує значення байтів даних та автоматично створює готовий масив одного символу Symbol[8], що складається з восьми байт. Після того, як ви закінчили малювання свого символу, копіюєте весь масив у Ваш проект і запихаєте його в пам'ять дисплея функцією LCD_UserSymbolsWrite ось так:

&Symbol[0] - покажчик на нульовий (початок) елемент масиву з даними сегмента.

До статті приклад прикладу використання, там можна буде конкретно подивитися тіло програми + є проект в Протеусі.

дисплея
символьного
Рис.4 Зовнішній вигляд програми для малювання символів користувача з готовим результатом

hd44780

дисплея
Рис.5 і 6 Ілюстрація роботи

Загалом і в цілому, начебто все. Якщо щось буде незрозуміло, почитатиможна тут: http://cxem.net/mc/book52.php.