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


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

а) 8-ми провідна б) 4-х провідна
Якщо ви вибираєте 4-х провідну схему, то бітно записуєте порти МК, до яких підключені лінії дисплея, в цей макрос:
Наприклад, де PORT_bus_4 - це ім'я порту МК, якого підключена лінія дисплея DB4. Аналогічно і із записом біта порту: PIN_bus – номер біта порту, до якого підключена лінія дисплея DB4.
Якщо ви вибираєте 8-провідну схему, то бітно записуєте порти МК, до яких підключені лінії дисплея, в цей макрос:
Тут так само, тільки дротів більше. Навіщо такі складнощі, запитаєте ви? Відповідь проста завдяки цьому, Ви можете підключати лінії дисплея абсолютно в розкид по всіх портах МК, до яких захочете і ніжки яких будуть вільні. Просто найчастіше виходить так, що при проектуванні якогось пристрою не вдається зберегти абсолютно вільним цілий порт. Я часто стикався з цієюпроблемою, і вирішив її таким чином. Тут Ви не прив'язані до конкретних ніжок МК, які цифри напишете та назви портів у наведених макросах налаштування, по таких лініях мікроконтролера і буде працювати ваш дисплей.
Інші макроси та функції, я думаю, не викличуть труднощів у використанні, оскільки їх опис наводиться безпосередньо у вихідному коді заголовного файлу. Єдина функція, якій я хотів би приділити додаткову увагу-функція запису в пам'ять CGRAM символів користувача, яких немає в таблиці ASCI:
LCD_UserSymbolsWrite(uchar Addr, uchar *data);
Так, я трохи відволікся від теми. Запис на дисплей символів користувача. - Для спрощення цього завдання, на додаток до бібліотеки, я написав просту програму:

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




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