Codevision avr

Індикатори РКІ є невід'ємною частиною радіоелектронної апаратури для виведення різної інформації. У цій статті поговоримо про деякі, найбільш застосовних функціях бібліотеки 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:

Codevision avr

Перед тим, як виводити рядок на РКІ дисплей його потрібно форматувати. Для цього іспользуемфункцію 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 як правило, не вийде.

Codevision avr

lcd _ gotoxy (10,2);

Codevision avr

Текст більше 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 * /

Codevision avr

Для того, щоб виводити на РКІ індикатор російські літери, застосовується директива #pragma rl + / rl-:

equ __lcd_port = 0x12; PORTD

lcd_putsf ( "Індикатор 16 х 02");

lcd_putsf ( "Тестування РКІ");

По суті, директива працює по переключенню кодування і власне дозволяє виводити російські літери. В ході практичної роботи з'ясувалося, що без цієї директиви російський текст відображається як набір незрозумілих «казябліков». Що стосується програми - симулятора Proteus (по крайней мере, перевірено в версії 7.2 і 7.5), то відсутня підтримка виведення російського тексту і більшості табличних символів.