Індикатори РКІ є невід'ємною частиною радіоелектронної апаратури для виведення різної інформації. У цій статті поговоримо про деякі, найбільш застосовних функціях бібліотеки LCD.h
Заголовки LCD.h має в своєму наборі функції для роботи з РКІ дисплеєм, які пов'язані з бібліотекою LCD.lib, написаної на асемблері. Тому записуючи одну функцію, виконується цілий асемблерний код. Бібліотеки полегшують працю програміста від написання постійного, періодичного коду.
LCD.h бібліотека дозволяє працювати з РКІ дисплеями до 40х2. Для роботи з РКІ 40х4 використовується бібліотека LCD4x40.h тому вона підтримує роботу на другу керуючу лінію Е2 (LCD display dual controllers). Таким РКІ індикатором є модель фірми Winstar WH4004A.
Нижче програмний код дозволяє виводити текст на РКІ дисплей 16х2. Випробовувався на макетної платі з індикатором WH1602D-YYB-CTK і Atmega8535:
void main (void) / * Основна функція "main", з якої починається виконання всієї програми процедури * /
lcd _ init (16); / * Ініціалізація на 16 символів * /
lcd _ clear (); / * Очищення дисплея * /
lcd _ gotoxy (4,0); / * Верхній рядок, 4 позиція * /
lcd _ putsf ( "LCD 16 x 02"); / * виводимо напис в зазначених координатах * /
lcd _ gotoxy (0,1); / * Нижня рядок, 0 позиція * /
Приклад роботи програми в симуляторі Proteus 7.5 SP3:
Перед тим, як виводити рядок на РКІ дисплей його потрібно форматувати. Для цього іспользуемфункцію lcd_init:
lcd_init (unsigned char lcd_columns);
У дужках вказуємо, на скільки символів підключили РКІ індикатор:
lcd _ init (8); / * Ініціалізація на 8 символів * /
lcd _ init (16); / * Ініціалізація на 16 символів * /
lcd _ init (20); / * Ініціалізація на 20 символів * /
lcd _ init (40); / * Ініціалізація на 40 символів * /
Виконуємо очищення дисплея. Використовуємо функцію lcd_clear ();
Ну ось, виконали ініціалізацію, очистили попередньо індикатор, тепер можна і виводити. Хоча, lcd_gotoxy: поки ще не можна. Перед тим, як виводити текст потрібно вказати, в якому рядку виводити і з якої позиції, тому використовуємо функцію:
lcd_gotoxy (unsigned char x. unsigned char y);
х - з якої позиції виводити перший символ (залежить від типу індикатора)
y - в якому рядку (залежить від типу індикатора)
За даними заголовки LCD.h маємо можливість виводити текст від 0 до 39 символів, і від 0 до 3 рядків. Але в процесі використання з'ясувалося, що працює з РКІ індикаторами до 40х2 (Тип Winstar WH4002A). Використовувати на індикатор WH4004A як правило, не вийде.
lcd _ gotoxy (10,2);
Текст більше 10 символів переведеться на наступний рядок. Текст виводимо за допомогою функції lcd_putsf ():
lcd_putsf (char flash * str);
Текст, який є аргументом функції можна записувати безпосередньо:
Lcd _ putsf ( "Hello World!");
Unsigned char * txt = "Hello World!";
Lcd _ putsf (txt);
Функція для виведення тексту на РКІ індикатор вимагає визначення тексту в змінній - функція lcd_puts:
Функція lcd_putchar (char c); дозволяє виводити символи з Таблиці кодів символів:
lcd _ putchar (0 x 41); / * Символ англійської літери А * /
lcd _ putchar (0 x 5 b); / * Символ квадратних дужок [* /
lcd _ putchar (0 xff); / * Символ заповненого знакомісця * /
Нижче наведено програмний код, який заповнює нижню рядок з позицією від 0 до 15 символів заповненого знакомісця з таблиці кодів (код символу 0xFF).
unsigned char j = 0; / * Визначаємо змінну для зберігання позитивного числа від 0 до 255 * /
void main (void) / * Основна функція "main", з якої починається виконання всієї програми процедури * /
lcd _ putsf ( "Initialization");
while (1) / * виконуємо цикл поки оператор iFне виконає умову j == 16 * /
lcd_gotoxy (j-1,1); / * Заповнюємо символом 2-у рядок від 0 до 15 * /
lcd_putchar (0xff); / * Символ заповненого знакомісця з таблиці кодів символів * /
if (j == 16) break;> / * якщо умова if виповнилося, то перериваємо виконання циклу while * /
Для того, щоб виводити на РКІ індикатор російські літери, застосовується директива #pragma rl + / rl-:
equ __lcd_port = 0x12; PORTD
lcd_putsf ( "Індикатор 16 х 02");
lcd_putsf ( "Тестування РКІ");
По суті, директива працює по переключенню кодування і власне дозволяє виводити російські літери. В ході практичної роботи з'ясувалося, що без цієї директиви російський текст відображається як набір незрозумілих «казябліков». Що стосується програми - симулятора Proteus (по крайней мере, перевірено в версії 7.2 і 7.5), то відсутня підтримка виведення російського тексту і більшості табличних символів.