РКІ на базі контролерів HD44780 є ефективним засобом відображення різної інформації і можуть з успіхом застосовуватися навіть в аматорських розробках. Наявність багатьох режимів виводу (скроллінгом, курсори, обумовлені користувачем символи) дозволяє розробляти зручні інтерфейси управління та пристрої індикації.

Наявність 4-х бітного режиму висновку дає можливість задіяти мінімум портів мікроконтролера.

Досить багато інформації з цими індикаторами можна знайти в інтернеті, тому наведу приклад асемблерних процедур, вставлених в код на С, для 4-х бітного режиму, як представляє найбільший інтерес для розробників.

Схема включення:
PIC RB2 — LCD RS
PIC RB3 — LCD E
PIC RB4 — LCD B4
PIC RB5 — LCD B5
PIC RB6 — LCD B6
PIC RB7 — LCD B7
Крім цього: LCD R / W – заземлити, LCD B0 … LCD B3 – підключити до плюса живлення через резистори.

/ * ------------- Початок прикладу ------------- * /
.
.
.
char lcd_data;/ * Висновок старшої тетради байта даних * /
void out_nibble() {
 asm {movwf _lcd_data; байт даних повинен бути в W
  bcf PORTB, 4
  btfsc _lcd_data, 4
  bsf PORTB, 4
  bcf PORTB, 5
  btfsc _lcd_data, 5
  bsf PORTB, 5
  bcf PORTB, 6
  btfsc _lcd_data, 6
  bsf PORTB, 6
  bcf PORTB, 7
  btfsc _lcd_data, 7
  bsf PORTB, 7
 }
}/ * Висновок байта в 8-ми бітному режимі (потрібно тільки для ініціалізації РКІ) * /
void wr_cmd(char cmd) {
 asm {bcf PORTB, 2; RS - down, пишемо в IR
  movfw param00_wr_cmd
  call _out_nibble
  bsf PORTB, 3 ; E - up
  bcf PORTB, 3 ; E - down
  call _delay
 }
}/ * Висновок байта команди на РКІ * /
void wr_cmd4(char cmd) {
 asm {bcf PORTB, 2; RS - down, пишемо в IR
  movfw param00_wr_cmd4
  call _out_nibble
  bsf PORTB, 3 ; E - up
  bcf PORTB, 3 ; E - down
  call _delayswapf param00_wr_cmd4, W; міняємо тетради байта 
  call _out_nibble
  bsf PORTB, 3 ; E - up
  bcf PORTB, 3 ; E - down
  call _delay
 }
}/ * Висновок байта даних на РКІ * /
void wr_data4(char data) {
 asm {bsf PORTB, 2; RS - up, пишемо в DR
  movfw param00_wr_data4
  call _out_nibble
  bsf PORTB, 3 ; E - up
  bcf PORTB, 3 ; E - down
  call _delayswapf param00_wr_data4, W; міняємо тетради байта
  call _out_nibble
  bsf PORTB, 3 ; E - up
  bcf PORTB, 3 ; E - down
  call _delay
 }
}/ * Затримка * /
void delay() {
 delay_ms(1);
}
.
.
./ * ------------- Закінчення прикладу ------------- * /

У наведених прикладах не відстежується прапор зайнятості (busy flag) контролера HD44780, Замість цього процедури виведення на РКІ мають затримки; на це слід звернути увагу. Нижче наводиться фрагмент програми на С, що виводить фрагмент знакогенератора на екран РКІ формату 2 рядки по 16 символів.

/ * ------------- Початок прикладу ------------- * /
.
.
.
char i, ch;/ * Ініціалізація РКІ у 8-ми бітному режимі (Рекомендується виробником) * /
  wr_cmd(0x28);
  delay_ms(5);
  wr_cmd(0x28);
  delay();
  wr_cmd(0x28);
  delay();
  / * Ініціалізація РКІ в 4-х бітному режимі * /
  wr_cmd4(0x28);  
  wr_cmd4(0x0c);
  wr_cmd4(0x06);
  
  ch = 0x20;
  wr_cmd4 (0x80); / * перехід на перший рядок екрану * / 
  for (i=0; i<16; i++) {wr_data4 (ch) / * виводимо символи * /
   ch++;
  }wr_cmd4 (0xc0) / * перехід на другий рядок екрану * / 
  for (i=0; i<16; i++) {wr_data4 (ch) / * виводимо символи * /
   ch++;
  }
.
.
./ * ------------- Закінчення прикладу ------------- * /